*** 作系统(4) -- 文件管理、IO管理

 *** 作系统(4) -- 文件管理、IO管理,第1张

引入—为解决变长记录文件的顺序存取低效问题。

索引文件—为变长记录文件建立一张索引表。

与文件管理系统和文件集合相关联的是文件目录。包含文件的相关信息,如:属性、位置和所有权等。

对目录管理的要求如下:

从文件管理角度看,文件由FCB和文件体(文件本身)两部分组成。

文件控制块是 *** 作系统为管理文件而设置的数据结构,存放了文件的有关说明信息,是文件存在的标志。

FCB 中的信息:

文件目录

把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合。

目录项

构成文件目录的项目(目录项就是FCB)

目录文件

为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,称为目录文件。

所有的用户使用一个目录

为每个用户创建一个单独的目录

在两级目录中若允许用户建立自己的子目录,则形成3级或多级目录结构(即树型目录结构)

一盘磁带、一张光盘片、一个硬盘分区或一张软盘片都称为一 ,卷是存储介质的物理单位。一个卷可以保存一个文件或多个文件,也可以一个文件保存在多个卷上。

是存储介质上连续信息所组成的一个区域,也叫做物理记录。块是主存储器和辅助存储设备进行信息交换的物理单位,每次总是交换一块或整数块信息。

每个文件在磁盘上占用一组连续的物理块。磁盘地址构成一个线性空间,文件逻辑块顺序与文件物理块顺序相同。

磁盘块分配方法:

可以通过合并(consolidation)将一个文件的各个簇连续存放,以提高I/O访问性能。

链接表FAT,每项保存下一块链接地址,整个磁盘仅设置一张。

链接分配方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题, 即:

为每一个文件分配一个索引块(表),再把分配给该文件的所有块号,都记录在该索引块中。故索引块就是一个含有许多块号地址的数组。

优点 :

缺点 :

索引顺序文件

程序直接控制方式 是指由程序直接控制内存或CPU和外围设备之间进行信息传送的方式。通常又称为“忙—等”方式或循环测试方式。

(1)把一个启动位为“1”的控制字写入该设备的控制状态寄存器。

(2)将需输出数据送到数据缓冲寄存器。

(3)测试控制状态寄存中的“完成位”,若为0,转(2),否则转(4)。

(4)输出设备将数据缓冲寄存器中的数据取走进行实际的输出。

(1)进程需要数据时,将允许启动和允许中断的控制字写入设备控制状态寄存器中,启动该设备进行输入 *** 作。

(2)该进程放弃处理机,等待输入的完成。 *** 作系统进程调度程序调度其他就绪进程占用处理机。

(3)当输入完成时,输入设备通过中断请求线向CPU发出中断请求信号。CPU在接收到中断信号之后,转向中断处理程序。

(4)中断处理程序首先保护现场,然后把输入缓冲寄存器中的数据传送到某一特定单元中去,同时将等待输入完成的那个进程唤醒,进入就绪状态,最后恢复现场,并返回到被中断的进程继续执行。

(5)在以后的某一时刻, *** 作系统进程调度程序选中提出的请求并得到获取数据的进程,该进程从约定的内存特定单元中取出数据继续工作。

DMA方式又称直接内存访问(Direct Memory Access)方式。其基本思想是在外设和主存之间开辟直接的数据交换通路。DMA采用总线周期挪用实现I/O。

缓冲(Buffering) - 在设备之间传送数据时,(暂时)保存数据。

单缓冲是 *** 作系统提供的最简单的一种缓冲形式。每当一个进程发出一个I/O请求时, *** 作系统便在主存中为之分配一个缓冲区,该缓冲区用来临时存放输入/输出数据。

设备先把数据写入缓冲区,然后用户进程从缓冲区读走数据。

从自由主存中分配一组缓冲区即可构成缓冲池。

缓冲区可以在收容输入、提取输入、收容输出和提取输出四种方式下工作。

F指向队首,L指向队尾。(emq指空缓冲区队列,inq装满输入数据的输入缓冲队列 ,out装满输出数据的输出缓冲队列 )

CC单板调试步骤:

1、单板外观测试

重点外观检查

(1)单板是否有锡渣造成短路;

(2)插件多余的插脚是否遗留在单板上;

(3)器件是否偏位;

(4)电解电容记性是否反了。

2、单板阻抗测试

关键电源是否有短路(万用表打到二极管量测位置) 量测下述位置是否短路

⏹电源入口处(入口连接器D17

⏹所有的钽电容(CP2/3/4)

3、上电

●保证电源电压为24V;

CP2/3/4 为33V (万用表打到20V量测)

4、烧写程序

打开 :J-Flash ARM V440 选择 Open data file-五轴clampiohex 插上电源和J-LINK,选择-Program &verify烧写OK

打开 :J-Flash ARM V440 选择 Open data file-四轴四轴4ioBoardhex 插上电源和J-LINK,选择-Program &verify烧写OK

5、整机测试

⏹CAN总线(更换机台五轴IO板)与 RS485(更换机台四轴IO板)总线通

⏹开关量输入输出

高效云盘 40GiB (2120 IOPS), 磁盘读写速度基本在 102M/s

高效云盘 200GiB (3400 IOPS) , 磁盘读写速度基本在 129M/s

高效云盘 500GiB (5000 IOPS), 磁盘读写速度基本在 134M/s

ESSD云盘 PL1 200GiB (11800 IOPS),磁盘读写速度基本在 191M/s

SSD盘,磁盘读写速度基本在 377M/s

机械盘,磁盘读写速度基本在 102M/s

SSD盘,磁盘读写速度基本在 382M/s

I/O控制方式主要有程序查询方式、中断方式、DMA方式和I/O通道控制方式:

1程序查询方式,也称为程序轮询方式。该方式采用用户程序直接控制主机与外部设备之间输入/输出 *** 作。CPU必须不停地循环测试I/O设备的状态端口,当发现设备处于准备好(Ready)状态时,CPU就可以与I/O设备进行数据存取 *** 作。

2中断方式。当I/O设备结束(完成、特殊或异常)时,就会向CPU发出中断请求信号,CPU收到信号就可以采取相应措施。当某个进程要启动某个设备时,CPU就向相应的设备控制器发出一条设备I/O启动指令,然后CPU又返回做原来的工作。

3DMA(直接内存存取)方式。DMA方式也称为直接主存存取方式,其思想是:允许主存储器和I/O设备之间通过“DMA控制器(DMAC)”直接进行批量数据交换,除了在数据传输开始和结束时,整个过程无须CPU的干预。

4I/O通道控制方式。通道(Channel)也称为外围设备处理器、输入输出处理机,是相对于CPU而言的。是一个处理器。也能执行指令和由指令的程序,只不过通道执行的指令是与外部设备相关的指令。是一种实现主存与I/O设备进行直接数据交换的控制方式。

你好!

因为按键 *** 作涉及寄存器配置和按键防抖,因此写了你也不一定用得上。而且你这个的逻辑比较简单,建议自己写。主要注意几个地方就可以了:

按键I/O口电平的配置:要结合硬件电路确认按键是低电平触发还是高电平触发。在程序中设置正确的I/O口电平。

I/O口的输入输出状态的配置:I/O口作为按键输入必须是准双向模式或输入模式,这个不同单片机配置寄存器方式不同但大同小异。

按键防抖:在按键按下时有时会有短暂的接触不良,因此会多次判断按键按下和断开,因此一般在按键按下或断开时增加几十毫秒的防抖处理,具体就是连续多个循环判断按键是否是一个状态,如果状态不变,再进行下一步处理。

除了fio测试工具和iostat,其他工具的测试结果基本上都是扯淡,跟直观感受距离太远,尤其是随机IO。

而且测试结果都不能反映真实负载,如果依据这个结果去预估负载,更是差的远。

网上关于 fio 的介绍已经太多了,要用的时候都是直接拿来就跑了,我们通常使用 fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=write -size=10G -filename=test -name="Max throughput" -iodepth=4 -runtime=60 这些

来测试,但最近在一些用户那边,发现使用 fio 测试,用户的盘非常的好,能达到几百 MB 的吞吐,但我们才跑到 100 MB,iostat 里面的 IO Util 就 100% 了。虽然清楚 IO Util 100% 并不是意味着盘吃死了,但从另一个方面,也让我突然意识到,我们应该更加多维度的对盘进行性能测试,也就重新回顾了下 fio。

Fio 的使用真的是非常简单,我们主要关注几个重要的参数类别就可以了。

首先就是 I/O engine,这个就是告诉 fio 使用什么样的方式去测试 I/O,我们需要根据业务的实际情况选择不同的类型,主要几个:

其他的当然还有很多种,但实际我们这边没用到,没准以后会用。因为我们使用的是 RocksDB,所以为了更好的测试应用程序对盘的影响,我们应该使用 sync,vsync 那边的 engine 进行 *** 作。

在要注意的就是 I/O type,譬如是否使用 direct,还是 buffered,如果是 buffered,我们多少次 I/O 之后使用 fsync 或者 fdatasync 来进行强制 sync *** 作。我们还需要选择合适的 I/O pattern 来进行测试,这个主要是 readwrite 来确定,包括:

如果我们使用混合模式,我们还可以设置读写的比例,通常是读写各半,但实际很多场景应该是读多写少,我们可以使用 rwmixread = 90 来设置 90% 的读,10 % 的写,我们也可以通过 rwmixwrite = 90 来设置,这两个参数其实有点冲突,如果加起来没到 100,那么 fio 会用后面的一个。

对于随机读写来说,另一个需要考虑的指标就是 *** 作分布,我们使用 random_distribution 来设置,主要包括 random, zipf, normal 等,默认是 random。

另外还需要注意的就是 block size,也就是一次 I/O *** 作的大小,通常我们都是读写使用相同的 block,譬如 bs=4k,但实际还会不一样,我们可以用 bs=4k,16k 来设置读是 4k,但写是 16k。

对于 libaio engine 来说,还需要考虑设置 iodepth,对于 sync 等来说,还需要设置 jobnum,来让 fio 用多个线程并发的对盘进行测试。测试多了,就会很悲催的发现,libaio 很容易就把盘给打死,但 sync 这些还需要启动几个线程。。。

当 fio 跑完之后,会生成相应的结果,譬如执行 fio -ioengine=psync -filename=iotest -bs=8k -fdatasync=1 -rw=write -size=10g -runtime=60 -name="pingcap" 会输出:

可以看到,在一个非常强悍的 Optane 盘上面,使用 sync engine,每次都 sync 写盘,性能还是很差的,吞吐不到 300 MB,其他的盘可能就更差了。我们主要关注几个指标:

slat / clat / lat:这几个是 latency 指标,slat 就是 Submission latency,也就是提交到实际执行 I/O 的时间,在 sync 测试里面这个是没有的,因为 slat 就是 clat。clat 就是 Completion latency,也就是从提交到完成的时间。lat 就是 Total latency,包括 fio 从创建这个 I/O 单元到完成的总的时间。

另外需要关注的指标就是 BW,和 IOPS,这两这个很直观了,就不解释了。最下面是 ios,也就是总的 I/O *** 作次数,merge 就是被 I/O 调度合并的次数,ticks 就是让磁盘保持忙碌的次数,in_queue 就是总的在磁盘队列里面的耗时,而 util 则是磁盘的利用率。

除了在控制台输出最后的汇总信息,fio 还支持将中间的 *** 作输出到文件,然后使用工具绘制图表展示,通常就是设置 write_bw_log,write_bw_log 和 write_iops_log,然后使用 fio_generate_plots 来绘图,另外也可以用 fio2gnuplot 来绘制,网上有太多的教程,这里就不说了。

另外,fio 还可以对 blktrace 生成的文件进行回放,然后让我们去定位实际系统的 I/O 问题,这个以后可以好好研究一下。

总的来说,fio 是非常强大的一款工具,用好了,个人对 I/O 的理解就更加深刻,同时也能让我们更好的根据硬件资源来调优系统。

简单点就是用优化大师里面的工具测试

高级点就用3dmark2005

再就是看内存和cpu,二手电脑内存最好是256m以上的,

不少朋友在新装电脑以后不能确定自己的电脑性能究竟如何。究竟应该如何测试自己爱机的性能呢?常看电脑评测文章的朋友可能了解,很多朋友评测电脑都会采用运行大量的评测软件来评价自己的电脑。但是这并不一定适合所有的朋友。很多朋友面对繁多的数据,可能都会头疼,可能完全不明白这些数据究竟代表了什么样的性能。更何况我们手头不一定有这样齐全的测试软件。难道没有简单一点的测试方法么?有!

其实,最简单的测试方法就是让电脑运行一下我们常用的软件来检查电脑有没有什么问题,简单的判断一下电脑性能是否满足要求。一般来说,测试可以分成几类:游戏测试、播放**测试、处理测试、拷贝文件测试、压缩测试、网络性能测试。这些测试基本上包括了对电脑性能的整体测试。

以上就是关于 *** 作系统(4) -- 文件管理、IO管理全部的内容,包括: *** 作系统(4) -- 文件管理、IO管理、IO调试的关键步骤有哪些、磁盘读写速度测试 (IO测试)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10212226.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存