操作系统 考研习题 详细解析(2)

操作系统 考研习题 详细解析(1)页内跳转好像失效了😭

链接:https://pan.baidu.com/s/1o5lAjg7BXEnuusdLJThMKA 
提取码:bfio 
操作系统和数据结构题目集

目录

文件管理

文件存储

链式、连续、索引存储

混合索引

访盘次数 / 平均访盘次数

位示图

文件存储方式比较

磁盘调度算法

磁盘访问时间

磁盘地址映射

小题

IO管理

小题

单双缓冲计算题


文件管理

文件存储

磁盘大小(数量)\Leftrightarrow需要几位存储\Leftrightarrow÷8可得一个表目占的大小(B)\Rightarrow×盘数得FAT的空间

    这里的几位存储可以根据整个硬盘大小算出需要多少位。如题1。

    还可以根据FAT中的表项大小可知。如混合索引--题2(2)

一个索引块包含的索引节点个数×物理块大小得最大文件长度

    可以根据FAT中的表项大小推出表项(索引节点)个数。如混合索引--题2(2)

    可以根据地址所占空间(指针大小)结点个数,如混合索引--题3(2)


题1:假定磁盘块的大小为1KB,对于540MB的硬盘,其文件分配表(FAT)最少需要占用多少存储空间?

解1:对于540MB的硬盘,硬盘总块数为540MB/1KB= 540K个。
因为540K刚好小于2^20,所以文件分配表的每个表目可用20位,即20b/8= 2.5B,这样FAT占用的存储空间大小为2.5B×540K= 1350KB。

文件分配表大小=表目大小×表目数量

表目数量=所用磁盘块数量(一一对应的关系)

表目大小=一个索引节点的大小 同内存管理的索引节点。其中20位,说明由2^20种组合即块数可以映射。

这里就是根据上面的公式通过磁盘数推导出剩下的东西


题2:【2012统考真题】某文件系统空间的最大容量为4TB (1TB =2^40B),以磁盘块为基本分配单位。磁盘块大小为1KB。文件控制块(FCB)包含一个512B的索引表区。请回答下列问题:
1)假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件的最大长度是多少字节?
2)假设索引表区采用如下结构:第0~7字节采用<起始块号,块数>格式表示文件创建时预分配的连续存储空间。其中起始块号占6B,块数占2B,剩余504B采用直接索引结构。一个索引项占6B,则可支持的单个文件的最大长度是多少字节?为使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
 

解2这题也可以放到混合索引里,但看文件存储就一题,给它当个伴。

最大容量 / 磁盘块大小 = 盘块数;盘块数的2的次数 / 8 =索引项存储大小;索引区大小 / 索引节点大小(块号大小)= 索引区含多少项。

1)文件系统中所能容纳的磁盘块总数为4TB/1KB=2^32。要完全表示所有磁盘块,索引项中的块号最少要占32/8 = 4B。而索引表区仅采用直接索引结构,因此512B的索引表区能容纳512B/4B= 128个索引项。每个索引项对应一个磁盘块,所以该系统可支持的单个文件最大长度是128×1KB= 128KB。
2)这里考查的分配方式不同于我们熟悉的三种经典分配方式,但题目中给出了详细的解释。所求的单个文件最大长度一共包含两部分:预分配的连续空间和直接索引区。
连续区块数占2B,共可表示2^16个磁盘块,即2^16KB,直接索引区共504B/6B =84个索引项。所以该系统可支持的单个文件最大长度是2^16KB+84KB。
为了使单个文件的长度达到最大,应使连续区的块数字段表示的空间大小尽可能接近系统最大容量4TB。分别设起始块号和块数占4B,这样起始块号可以寻址的范围是2^32个磁盘,共4TB,即整个系统空间。同样,块数字段可以表示最多2^32个磁盘块,共4TB。
预分配的连续空间的块数其实就相当于直接索引。知道块数\Rightarrow换算成索引位数(2B×8=16b)\Rightarrow算出索引项个数\Rightarrow得出结果 套娃般轻松惬意

题3:页大小为4KB,页表长度为1K,逻辑地址中___位用于指定页号

解3:页表有1024个索引项,一页占4KB,所以总共有2^22KB,则22-12=10位(12页内偏移量)

也可直接根据索引项1024得出有2^10页 所以需要10位。


链式、连续、索引存储

题2(链式存储):某个文件系统中,外存为硬盘。物理块大小为512B,有文件A包含598条记录,每条记录占255B,每个物理块放2条记录。文件A所在的目录如下图所示。文件目录采用多级树形目录结构,由根目录结点、作为目录文件的中间结点和作为信息文件的树叶组成,每个目录项占127B,每个物理块放4个目录项,根目录的第一块常驻内存。试问:

1)若文件的物理结构采用链式存储方式,链指针地址占2B,则要将文件A读入内存,至少需要存取几次硬盘?
2)若文件为连续文件,则要读文件A的第487条记录至少要存取几次硬盘?
3)一般为减少读盘次数,可采取什么措施,此时可减少几次存取操作?
 

解2:注意:题目中说每个物理块放四个目录项,所以图片的1 2 3 4 5是这样子的,先访问前面的再访问同层次的后面目录项。

1)由于根目录的第一块常驻内存(即root所指的/bin,/dev, /etc, /boot可直接获得),根目录找到文件A需要5次读盘。由255x2+2=512可知,一个物理块在链式存储结构下可放2条记录及下一个物理块地址,而文件A共有598条记录,因此读取A的所有记录所需的读盘次数为598/2 = 299,所以将文件A读到内存至少需读盘299+5=304次。(598条记录需要598/2=299个数据块(每个数据块含两条记录+指针大小)

2)当文件为连续文件时,找到文件A同样需要5次读盘,且知道文件A的地址后通过计算,只需一次读盘即可读出第487条记录,所以至少需要5+1=6次读盘。(这里的连续存储就是连续放在一起,可以直接找到物理块,也没啥好解释的🗽)
3)为减少因查找目录而读盘的次数,可采用索引结点方法。若一个目录项占16B,则一个盘块可存放512/16= 32个目录项,与本题一个盘块仅能存放4个目录相比,可使因访问目录而读盘的次数减少1/8。对查找文件的记录而言,可用一个或多个盘块来存放该文件的所有盘块号,即用链接索引方法;一个盘块可存放512/2-1 = 255个盘块号,留下一个地址用来指向下一个存储盘块号(索引块)的磁盘块号。这样,就本题来说,查找目录时需启动5次磁盘。文件A共有299个盘块,则查找文件A的某一记录时需两次取得所有盘块号,再需最多启动一次磁盘即可把A中的任意一条记录读入内存。所以,查找一条记录最多需要8次访盘,而原来的链接方法查找一条记录时,读盘次数为6~304。

访盘次数 / 平均访盘次数的题2 也可以减少读盘次数。博主讲的也不错计算访问磁盘数_发现问题,并解决问题-CSDN博客_三级索引访问几次磁盘


题3(连链存储):【2014统考真题】文件F由200条记录组成,记录从1开始编号。用户打开文件后,欲将内存中的一条记录插入文件F中,作为其第30条记录。请回答下列问题,并说明理由。
1)若文件系统采用连续分配方式,每个磁盘块存放一条记录,文件F存储区域前后均有足够的空闲磁盘空间,则完成上述插入操作最少需要访问多少次磁盘块?F的文件控制块内容会发生哪些改变?
2)若文件系统采用链接分配方式,每个磁盘块存放一条记录和一个链接指针,则完成上述插入操作需要访问多少次磁盘块?若每个存储块大小为1KB,其中4B存放链接指针,则该文件系统支持的文件最大长度是多少?

解3:注意:F存储区域前后均有足够的空闲磁盘空间。因此,欲最少,则只需移动前面的块数即可。

1)系统采用顺序分配方式时,插入记录需要移动其他的记录块,整个文件共有200条记录,要插入新记录作为第30条,而存储区前后均有足够的磁盘空间,且要求最少的访问存储块数,则要把文件前29条记录前移,若算访盘次数,移动一条记录读出(访盘)和存回磁盘各是一次访盘,29条记录共访盘58次,存回第30条记录访盘1次,共访盘59次。
F的文件控制区的起始块号和文件长度的内容会因此改变。

补充:连续分配支持顺序访问和直接访问。其优点是实现简单、存取速度快。缺点是文件长度不宜动态增加,因为一个文件末尾后的盘块可能已分配给其他文件,一旦需要增加,就需要大量移动盘块。此外,反复增删文件后会产生外部碎片(与内存管理分配方式中的碎片相似,且很难确定一个文件需要的空间大小,因而只适用于长度固定的文件)。

2)文件系统采用链接分配方式时,插入记录并不用移动其他记录,只需找到相应的记录修改指针即可。插入的记录为其第30条记录,因此需要找到文件系统的第29块,一共需要访盘29次,然后把第29块的下块地址部分赋给新块,把新块存回磁盘会访盘1次,然后修改内存中第29块的下块地址字段,再存回磁盘,一共访盘31次。(最后两次就相当于两个磁盘块放回磁盘要重新访盘进行存储)
4B共32位,可以寻址2^32=4GB块存储块,每块的大小为1KB,即1024B,其中下块地址部分占4B,数据部分占1020B,因此该系统的文件最大长度是4GB×1020B=4080GB。(链接指针存放地址,因此看链接地址的位数,即可知道能映射到多少磁盘空间。还有知道了别开心太早,题目给你挖了小坑☢,一个块还要存储链接指针,需要减去,因为它不算文件的内容)原文第十八题,在下面部分


题4(索引存储):【2018统考真题】某文件系统采用索引结点存放文件的属性和地址信息,簇大小为4KB。每个文件索引结点占64B,有11个地址项,其中直接地址项8个,一级、二级和三级间接地址项各1个,每个地址项长度为4B。请回答下列问题:
1)该文件系统能支持的最大文件长度是多少?(给出计算表达式即可)
2)文件系统用1M ( 1M=2^20)个簇存放文件索引结点,用512M个簇存放文件数据。若一个图像文件的大小为5600B,则该文件系统最多能存放多少个这样的图像文件?
3)若文件F1的大小为6KB,文件F2的大小为40KB,则该文系统获取F1和F2最后一个簇的簇号需要的时间是否相同?为什么?

解4:建议先看混合索引下的题目,题目有点重合。几级间接地址就一个簇内的地址项的几次方即可(二刷:多级间接地址项索引的是一个簇,簇里都是地址项,而不是索引 索引节点。然后根据地址项索引物理块)

1)簇大小为4KB,每个地址项长度为4B,因此每簇有4KB/4B=1024个地址项。最大文件的物理块数可达8+ 1×1024+ 1×1024^2+ 1×1024^3,每个物理块(簇)大小为4KB,因此最大文件长度为(8+1×1024+1×1024^2+ 1×1024^3)×4KB= 32KB+4MB+4GB+ 4TB

2)文件索引结点总个数为1M×4KB/64B=64M,5600B的文件占2个簇,512M个簇可存放的文件总个数为512M/2= 256M。可表示的文件总个数受限于文件索引结点总个数,因此能存储64M个大小为5600B的图像文件。(这里给个计算小技巧:首先,这些数字要熟悉:32--2^5、1024--2^10、2048--2^11、4096--2^12、8192--2^12,然后比大小 发现4096=4KB小于5600,所以需要2个簇,此外,记不住的话最好记2^5 2^10 ...及对应的十进制 以此类推,这样子方便推算。用2的几次表示方便乘除、十进制方便加减)(二刷:我的理解是一个文件一个索引结点,所以是64M,一开始做懵了,一个索引不是能表示第一题这么多的大小吗,后来看了答案 想必是一个文件对应一个索引节点 一个索引节点对应该文件的大小吧)
3)文件F1的大小为6KB < 4KB×8= 32KB,因此获取文件F1的最后一个簇的簇号只需要访问索引结点的直接地址项。文件F2大小为40KB,(4KB×8<40KB<4KB×8+4KB×1024,因此获取F2的最后一个簇的簇号还需要读一级索引表。综上,需要的时间不相同。


混合索引

题2:【2016 统考真题】某磁盘文件系统使用链接分配方式组织文件,簇大小为4KB。目录文件的每个目录项包括文件名和文件的第一个簇号,其他簇号存放在文件分配表FAT中。
1)假定目录树如下图所示,各文件占用的簇号及顺序如下表所示,其中dir, dir1是目录,file1, file2是用户文件。请给出所有目录文件的内容。
2)若FAT的每个表项仅存放簇号,占2B,则FAT的最大长度为多少字节?该文件系统支持的文件长度最大是多少?
3)系统通过目录文件和FAT实现对文件的按名存取,说明file1的106,108两个簇号分别存放在FAT的哪个表项中


4)假设仅FAT和dir目录文件已读入内存,若需将文件dir / dir1 / file1的第5000个字节读入内存,则要访问哪几个簇?

解2:1)题目中是指出所有目录文件的内容,并且题中给出目录文件的每个目录项包括文件名和文件的第一个簇号。易得结果,一开始不熟悉或者没审题就不好做,像我刚刷的时候😁。(我承认二刷还是看不懂,我有罪,目录文件内容是个啥啊

2)根据该题目分类下的递推式可得,知表目大小为2B所以需要16位的长度来存储空间(注意,需要几位存储 等价 FAT表目大小(换算成位b))。然后可知FAT的最大长度为 盘数2^16 × 表目大小2B=128KB。最大文件长度就是能占用多少个物理块(簇块),因为表目与簇块一一对应,所以2^16(个)×4KB=256MB。(注意,不要与页表项搞混,页表项只能存储在一页里,即块数÷页表项大小可得页表项数目,进而得到最大内存大小;但是FAT是根据你整个物理空间来划分表目,一个系统只有一张FAT表,不要被上一章的内存管理的分页分段干扰。)(盘数×表目大小=FAT大小;盘数×簇大小=最大文件长度)

扩展:文件分配表(File Allocation Table,FAT),该表在整个磁盘中仅设置一张。FAT的表项与全部磁盘块一一对应,每个表项存放对应块的下一块链接指针,即下一个盘块号。FAT不仅记录了文件各块之间的先后链接关系,同时还标记了空闲的磁盘块。此外文件的第一个盘块号记录在目录中,后续的盘块通过FAT查找。

3)由上面的扩展易得,因为表项与磁盘块一一对应,所以file1的100簇号就是100号表项,同时FAT每个表项存放下一个盘块号,由图可知,106在100里,108在106里。

4)(存疑)需要访问目录文件dir1所在的48号簇及文件 file1的106号簇。4100 = 4096 + 4 = 4KB + 4  即需要一个簇块+一个簇块的4B,所以要访问第106号。同时系统查找到48号簇得到该目录文件下的所有文件的第一个簇号,找到file1的100号簇的指针,通过指针知道第二个簇块在106号,所以只需访问106簇。(一个小伙伴的理解:因为在读入dir1后,已经知道了f1的第一个簇地址[题目给出了理由],而现在要的是第二个簇,所以只需要把第二个簇读进来即可。评论区的小伙伴的意思应该也是括号的,这里把它复制进来:混合索引题二第四小题那里我个人觉得应该不是指针,系统查找了 dir1得到file的第一块号,直接根据FAT查找下一块,所以不用去查找file1的第一块。)答案是对的,不知道原理,所以存疑,我觉得它存的是指针,根据算出来多少块,直接根据指针跳转有几块就有几次,然后就知道了位置,那应该访问只需文件目录簇和最终的簇号,网上也没找到相关回复,有知道的小伙伴贴个链接🔗。(二刷:其实他们都是这个意思吧 经过FAT 只用一次就能判断出所在的簇号。这里文字有点多,语言有点凌乱 见谅,审题仔细,已经读入dir且dir1中有file1的第一块)


题3:在UNIX操作系统中,给文件分配外存空间采用的是混合索引分配方式,如下图所示。UNIX系统中的某个文件的索引结点指示出了为该文件分配的外存的物理块的寻找方法。在该索引结点中,有10个直接块(每个直接块都直接指向一个数据块),有1个一级间接块、1个三级间接块及1个三级间接块,间接块指向的是一个索引块,每个索引块和数据块的大小均为4KB,而UNIX系统中地址所占空间为4B(指针大小为4B),假设以下问题都建立在该索引结点已在内存中的前提下。
现请回答:
1)文件的大小为多大时可以只用到索引结点的直接块?
2)该索引结点能访问到的地址空间大小总共为多大(小数点后保留2位)?
3)若要读取一个文件的第10000B的内容,需要访问磁盘多少次?
4)若要读取一个文件的第10MB的内容,需要访问磁盘多少次?


 

解3:1)10×4KB=40KB。要想只用到索引结点的直接块,这个文件应能全部在10个直接块指向的数据块中放下,而数据块的大小为4KB,所以该文件的大小应小于等于4KB×10=40KB,即文件的大小不超过40KB时可以只用到索引结点的直接块。
2)只需要算出索引结点指向的所有数据块的块数,再乘以数据块的大小即可。直接块指向的数据块数=10块。
一级间接块指向的索引块里的指针数为4KB/4B= 1024,所以一级间接块指向的数据块数为1024 块。(数据块大小 / 指针大小 = 一个数据块里的所有表项)
二级间接块指向的索引块里的指针数为4KB/4B=1024,指向的索引块里再拥有4KB/4B=1024个指针数。所以二级间接块指向的数据块数为(4KB/4B)^2 = 1024^2。
三级间接块指向的数据块数为(4KB/4B)^3= 1024^3。所以,该索引结点能访问到的地址空间大小为 (上面块相加)×4KB≈4TB

3)因为10000B/4KB = 2.44,所以第10000B的内容存放在第3个直接块中,若要读取一个文件的第10000B的内容,需要访问磁盘1次。
4)因为10MB 的内容需要数据块数为10MB/4KB = 2.5×1024,直接块和一级间接块指向的数据块数=10+(4KB/4B)=1034<2.5×1024,直接块和一级间接块及二级间接块的数据块数=10+(4KB/4B)+(4KB/4B)^2>1×1024^2> 2.5×1024,所以第10MB数据应该在二级间接块下属的某个数据块中,若要读取一个文件的第10MB的内容,需要访问磁盘3次,访问到最终索引块两次+读取一次(索引节点在内存中)。(就如图所示一般,索引已经在内存中 则按照箭头需要三个箭头)

(以上数据都可以转换成2的几次来算比较方便,另外要对应好关系,如果已经转换成数据块,则页面索引也要转化成数据块,即不用×4KB)


题4:某文件系统采用多级索引的方式组织文件的数据存放,假定在文件的i_node 中设有13个地址项,其中直接索引10项,一次间接索引项1项,二次间接索引项1项,三次间接索引项1项。数据块的大小为4KB,磁盘地址用4B表示,试问:
1)这个文件系统允许的最大文件长度是多少?
2 )一个2GB大小的文件,在这个文件系统中实际占用多少空间?
 

解4:第一问要计算混合索引结构的寻址空间大小;第二问只要计算出存储该文件索引块的大小,然后加上该文件本身的大小即可。
1)物理块大小为4KB,数据大小为4B,则每个物理块可存储的地址数为4KB/4B=1024。
最大文件的物理块数可达10+1024+ 1024^2+1024^3,每个物理块大小为4KB,因此总长度为(10+1024+1024^2+ 1024^3)×4KB=40KB +4MB+4GB+4TB。这个文件系统允许的最大文件长度是4TB+4GB+4MB+40KB,约为4TB。
2)占用空间分为文件实际大小和索引项大小,文件大小为2GB,从1)中的计算知,需要使用到二次间接索引项,该文件占用2GB/4KB= 512×1024个数据块。
一次间接索引项使用1个间接索引块,二次间接索引项使用1+\left \lceil (512\times 1024-10-1024)/1024 \right \rceil≈512个间接索引块(最左的1表示二次间址块),所以间接索引块所占空间大小为
              (1+512)×4KB= 2MB+4KB (这里的1是指一级索引块)
另外每个文件使用的i_node数据结构占13×4B=52B,因此该文件实际占用磁盘空间大小为2GB+2MB+4KB+52B。
\left \lceil (512\times 1024-10-1024)/1024 \right \rceil    -10指的是十个直接地址,-1024一级索引的所有地址,/1024是一个块索引1024块
(二刷:这里的1+balabala的就是二级索引块+索引的块数,注意图中balabala那里并没有覆盖所有的二级索引块索引的地址块,其实÷1024就是算这个地址块个数,一个地址块能装1024地址嘛。我还以为要精准到一个二级索引块里需要多少个地址项然后×4B,原来直接把这个块当成一个就好了即1×4KB)

原本想每种类型放一两道典型的题目来着,没想到对于我来说 都好难,就全记录了。文章篇幅较长,能看到这里不是索引就是真的看到这里,感谢您的支持!👨‍💻


访盘次数 / 平均访盘次数

平均访问磁盘次数(1+2+3+…+ n) / n = n×(n + 1) / 2 / n=(n + 1) / 2次

题1:在实现文件系统时,为加快文件目录的检索速度,可利用“FCB分解法”。假设目录文件存放在磁盘上,每个盘块512B, FCB占64B,其中文件名占8B。通常将FCB分解成两部分,第一部分占10B(包括文件名和文件内部号),第二部分占56B(包括文件内部号和文件的其他描述信息)
1)假设某一目录文件共有254个FCB,试分别给出采用分解法前和分解法后,查找该目录文件的某个FCB的平均访问磁盘次数。
2)一般地,若目录文件分解前占用n个盘块,分解后改用m个盘块存放文件名和文件内部号,请给出访问磁盘次数减少的条件。
 

解1:“FCB分解法”加快目录检索速度的原理是:目录是存在磁盘上的,所以检索目录时需要访问磁盘,速度很慢;而FCB分解法将FCB的一部分数据分解出去,存放在另一个数据结构中,而在目录中仅留下文件的基本信息和指向该数据结构的指针,这样一来就有效地缩减了目录的体积,减少了目录所占磁盘的块数,检索目录时读取磁盘的次数也减少)于是就加快了检索目录的次数。因为原本整个FCB都是在目录中的,而FCB分解法将FCB的部分内容放在了目录外,所以检索完目录后还需要读取一次磁盘,以找齐FCB的所有内容。第一问还可以先求一个盘块装512/64=8个 254/8需要31.75块。(平均要除以次数即n)


题2:有一个文件系统如图所示。图中的方框表示目录,圆圈表示普通文件。根目录常驻内存,目录文件组织成链接文件,不设 FCB,普通文件组织成索引文件。目录表指示下一级文件名及其磁盘地址(各占2B,共4B)。下级文件是目录文件时,指示其第一个磁盘的地址。下级文件是普通文件时,指示其FCB的磁盘地址。每个目录的文件磁盘块的最后4B供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右。每个磁盘块有512B,与普通文件的一页等长。
普通文件的FCB组织如图所示。其中,每个磁盘地址占2B,前10个地址直接指示该文件前10页的地址。第11个地址指示一级索引表地址,一级索引表中的每个磁盘地址指示一个文件页地址;第12个地址指示二级索引表地址,二级索引表中的每个地址指示一个一级索引表地址;第13个地址指示三级索引表地址,三级索引表中的每个地址指示一个二级索引表地址。请问:
1)一个普通文件最多可有多少个文件页?
2)若要读文件J中的某一页,最多启动磁盘多少次? 
3)若要读文件W中的某一页,最少启动磁盘多少次?
4)根据 3),为最大限度地减少启动磁盘的次数,可采用什么方法?此时,磁盘最多启动多少次?


解2

1)因为磁盘块大小为512B,所以索引块大小也为512B,每个磁盘地址大小为2B。因此,一个一级索引表可容纳256个磁盘地址。同样,一个二级索引表可容纳256个一级索引表地址,一个三级索引表可容纳256个二级索引表地址。这样,一个普通文件最多可有的文件页数为10+256+256×256+256×256×256=16843018。(首先这里不能根据文件存储下的递推式来做,就是看见磁盘地址占2B,因为这里🗿内存管理一样,分成混合索引。不知道怎么出来16843018,建议去内存里仔细重复一下。)(二刷:想多了,索引表不需要存储下一块的地址,不需要减4B,且索引表只需记录磁盘地址即可,即2B)
2)由图可知,目录文件A和D中的目录项都只有两个,因此这两个目录文件都只占用一个物理块。要读文件J中的某一页,先从内存的根目录(已在内存中)中找到目录文件A的磁盘地址,将其读入内存(已访问磁盘1次)。然后从目录A中我出目录文件D的磁盘地址读入内存(已访问磁盘2次)。再从目录D中找出文件J的FCB地址读入内存(已访问磁盘3次)。在最坏情况下,该访问页存放在三级索引下,这时候需要一级级地读三级索引块才能得到文件J的地址(已访问磁盘6次)。最后读入文件J中的相应页(共访问磁盘7次)。所以,若要读文件J中的某一页,最多启动磁盘7次。3(到J)+3(三级索引)+1(访问)
3)由图可知,目录文件C和U的目录项较多,可能存放在多个链接在一起的磁盘块中。在最好情况下,所需的目录项都在目录文件的第一个磁盘块中。先从内存的根目录中找到目录文件C的磁盘地址并读入内存(已访问磁盘1次)。在C中找出目录文件I的磁盘地址并读入内存(已访问磁盘2次)。在I中找出目录文件Р的磁盘地址并读入内存(已访问磁盘3次)。从Р中找到目录文件U的磁盘地址并读入内存(已访问磁盘4次)。从U的第一个磁盘块中找出文件W的FCB地址并读入内存(已访问磁盘5次)。在最好情况下,要访问的页在FCB 的前10个直接块中,按照直接块指示的地址读文件W的相应页(已访问磁盘6次)。所以,若要读文件W中的某页,最少启动磁盘6次。
4)为了减少启动磁盘的次数,可以将需要访问的W文件挂在根目录的最前面的目录项中。此时,只需读内存中的根目录就可找到W的FCB,将FCB读入内存(已访问磁盘1次),最差情况下,需要的W文件的那个页挂在FCB的三级索引下,因此读3个索引块需要访问磁盘3次(已访问磁盘4次)得到该页的物理地址,再去读这个页即可(已访问磁盘5次),此时,磁盘最多启动5次。


位示图

这里的盘块回收的转换公式的意思是:因为一行由n个,每个表示一个物理块号,所以实际的物理块号 ÷ 一行n个就是行号字号)。同理MOD的概念应该都知道吧 就是取余,余数知道了实际上就是物理块号在第i行的列号位号)。(想象成前面的都装满了,跟数据结构的数组差不多)

题1:一计算机系统利用位示图来管理磁盘文件空间。假定该磁盘组共有100个柱面,每个柱面有20个磁道,每个磁道分成8个盘块(扇区),每个盘块1KB,位示图如下图所示。

1)试给出位示图中位置(i,j)与对应盘块所在的物理位置(柱面号,磁头号,扇区号)之
间的计算公式。假定柱面号、磁头号、扇区号都从0开始编号。
2)试说明分配和回收一个盘块的过程。
 

解1:1)根据位示图的位置(i, j),得出盘块的序号b=i×16+j;用C表示柱面号,H表示磁头号,S表示扇区号,则有
C= b÷(20×8),H=( b%(20×8) ) ÷ 8,S= b%8。 
C=块号/(磁道×扇区)×1(一个柱面的所有磁盘块,可以想想一个柱面装满是不是到下一面了,那当前块号 ÷ 所有块号= 前面的柱面都装满了)
H=块号% (所有的磁盘块)÷扇区 = 已经装满了前面的数据块,在当前数据块还剩多少,得到在当前柱面的超出的数据块号,然后÷扇区,就是把前面的扇区都装满了。(其实这里的装满数据块意思不对,就是你这个块号在那个位置,前面的算装满了,害,能悟则悟,欢迎讨论)
S=此处就是当前柱面的当前扇区的溢出的块号取余得到扇区号,萌新就强记结果就ok,磁盘地址映射题1可相互理解
(比如161块号就是(1, 0, 1)第一个柱面装满,在第一个磁道的第一个扇区第一个,9就是(0,1,1)就是第一个磁道装满,在第二个磁道余一个,4就是余四个)
2)分配: 顺序扫描位示图,找出1个其值为“0”的二进制位(“0”表示空闲),利用上述公式将其转换成相应的序号b,并修改位示图,置(i,j)= 1。回收:将回收盘块的盘块号换算成位示图中的i和j,转换公式为b= C×20×8+H×8+S,i = b/16,j= b%16 最后将计算出的(i,j)在位示图中置“0”。


文件存储方式比较

一.  连续分配

优点:1.简便。适用于一次性写入操作。2.支持顺序存取和随机存取,顺序存取速度快。3.所需的磁盘寻道次数和寻道时间最少。(因为空间的连续性,当访问下一个磁盘块时,一般无需移动磁头,当需要移动磁头时,只需要移动一个磁道。)

缺点:1.文件不能动态增长。(可能文件末尾处的空块已经分配给了别的文件。)2.不利于文件的插入和删除。3.外部碎片问题。(反复增删文件后,很难找到空间大小足够的连续块,需要进行紧缩。)4.在创建文件时需声明文件大小。

二.  链式分配

优点:1.提高磁盘的空间利用率,不存在外部碎片问题。2.有利于文件的插入和删除。3.有利于文件的动态扩充

缺点:1.存取速度慢,一般只适用于信息的顺序存取,不适于随机存取。2.查找某一块必须从头到尾沿着指针进行。3.可靠性问题,如指针出错。4.更多的寻道次数和寻道时间。5.链接指针占一定的空间,将多个块组成簇,按簇进行分配而不是按块进行分配。(增加了磁盘碎片)

三.  索引分配

优点:1.保持了链接结构的优点,又解决了其缺点:按块分配可以消除外部碎片。按大小可改变的分区分配可以提高局部性。索引分配支持顺序访问文件和直接访问文件,是普遍采用的一种方式。2.满足了文件动态增长,插入删除的要求。(只要有空闲块)3.能充分利用外存空间。

缺点:1.较多的寻道次数和寻道空间。2.索引表本身带来了系统开销,如:内外存空间、存取时间。

数据结构的线性表联系

数据来源(还有混合索引等,挺详细的,有错别字= =):浅谈外存分配的几种方式_671coder的专栏-CSDN博客_外存分配方式

图片来自王道


题1:【2011统考真题】某文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题。
1)在连续、链式、索引三种文件的数据块组织方式中,哪种更合适?说明理由。为定位文件数据块,需要在FCB中设计哪些相关描述字段?
2)为快速找到文件,对于FCB,是集中存储好,还是与对应的文件数据块连续存储好?说明理由。

解1:1)在磁盘中连续存放(采取连续结构),磁盘寻道时间更短,文件随机访问效率更高,且文件存入不可修改(夸它!);在FCB中加入的字段为<起始块号,块数>或<起始块号,结束块号>。
2)将所有的FCB集中存放,文件数据集中存放。这样在随机查找文件名时,只需访问FCB对应的块,可减少磁头移动和磁盘IO访问次数。


磁盘调度算法

FCFS、SSTF、SCAN、LOOK 名词解释(可以点🐓)

SCAN是是从低到高再从高到低,像电梯升降,LOOK的区别就是当前面没有请求则直接反向。C-SCAN 是到顶端则直接返回到另一端并向内移动,C-LOOK就是前面无请求直接返回。

写的不错有调度代码及算法演示:操作系统:磁盘调度算法_但行好事 莫问前程-CSDN博客_操作系统磁盘调度算法磁盘调度算法详解

磁盘调度的目的是缩短找道时间。

磁臂黏着:SSTF、SCAN、C-SCAN     不会:FFTF

磁臂粘着”(Armstickiness):有一个或几个进程对某一磁道有较高的访问频率,即这个(些) 进程反复请求对某一磁道的I/O 操作,从而垄断了整个磁盘设备。


题1:【2010统考真题】如下图所示,假设计算机系统采用C-SCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘块的空闲状态。

1)请说明在上述条件下如何进行磁盘块空闲状态的管理。
2)设某单面磁盘旋转速度为6000转/分,每个磁道有100个扇区,相邻磁道间的平均移动时间为 1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动(见上图),磁道号请求队列为50,90,30,120,对请求队列中的每个磁道需读取1个随机分布的扇区,则读完这4个扇区点共需要多少时间?要求给出计算过程。
3)若将磁盘替换为随机访问的Flash半导体存储器(如U盘、固态硬盘等),是否有比C-SCAN更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
 

解1

1)注意到16384=16KB 因为位示图一位代表一块 所以16KB/8 = 2KB=题目要求的内存空间。(一般都是位示图,其他的也不好算)
2)采用C-SCAN调度算法,访问磁道的顺序和移动的磁道数如下表所示:

移动的磁道数为20+90+20+ 40= 170,因此总的移动磁道时间为Ts=170ms.由于转速为6000转/,因此平均旋转延迟为5ms,总的旋转延迟时间Tr= 4访问序列数×5ms=20ms.
由于转速为6000转/分,因此读取一个磁道上的一个扇区的平均读取时间为0.1ms,扇区的平均读取时间为0.1ms,总的读取扇区的时间为Tt=0.4ms。
综上,读取上述磁道上所有扇区所花的总时间为170+20+0.4=190.4ms。

(根据磁盘访问时间的公式可得,旋转一圈的时间是t= 60s/6000=0.01s,平均旋转延迟是t×1/2= 0.005s×1000=5ms,因为一个磁道100个扇区,所以扫描每个扇区需要t ÷ 100=0.0001s=0.1ms,扫描完即读取完,即平均读取时间。参考博客:影响机械磁盘速度的因素:寻道时间、旋转延迟、数据传输时间_xiaofei0859的专栏-CSDN博客_寻道时间和旋转延迟时间,有磁盘图片)
3)采用先来先服务(FCFS)调度策略更高效。因为 Flash半导体存储器的物理结构不需要考虑寻道时间和旋转延迟,可直接按I/O请求的先后顺序服务。


题2:在一个磁盘上,有1000个柱面,编号为0~ 999,用下面的算法计算为满足磁盘队列中的所有请求,磁盘臂必须移过的磁道的数目。假设最后服务的请求是在磁道345上,并且读写头正在朝磁道0移动。在按FIFO顺序排列的队列中包含了如下磁道上的请求: 123,  874, 692,  475,  105,  376。
1) FIFO;    2 )SSTF;   3)SCAN;    4)LOOK;     5)C-SCAN;     6)C-LOOK

解2

1)FIFO:移动磁道的顺序为345, 123,874,692,475,105,376。磁盘臂必须移过的磁道的数目为222+751+182+217+370+271 = 2013。
2)SSTF:移动磁道的顺序为345,376,475,692,874,123,105。磁盘臂必须移过的磁道的数目为31+99+ 217+182+751+18= 1298。
3)SCAN:移动磁道的顺序为345,123,105,0,376,475,692,874。磁盘臂必须移过的磁道的数目为222+18+ 105+376+ 99+217+182= 1219。(注意要到头才会向内访问)
4)LOOK:移动磁道的顺序为345,123,105,376,475,692,874。磁盘臂必须移过的磁道的数目为222+18+271+99+217+182= 1009。(同方向上无请求立马向内访问)
5)C-SCAN:移动磁道的顺序为345,123,105,0,999,874,692,475,376。磁盘臂必须移过的磁道的数目为222+18+105+ 999+125+182+217+99= 1967。(注意要到头才会向另一头移动并向内访问)

6)C-LOOK:移动磁道的顺序为345,123,105,874,692,475,376。磁盘臂必须移过的磁道的数目为222+18+769+182+217+99= 1507。(同方向上无请求立马向另一头最远的请求移动并向内访问)

注意:磁盘臂必须移过的磁道的数目之和的计算没有必要像上面一样对31,99,217,182,751,18求和,仔细的读者会发现:从345到874是一路递增的,接着从874到105是一路递减的。所以仅需计算(874一345)+(874-105)= 1298。这种方法是不是要比上面得出6个数后再计算它们的和要快捷一些?若之前未注意到此法,相信聪明的读者会马上回顾刚做完的1),并会仔细观察以下几问的“规律”,进而总结出自己的思路。


题3磁盘地址映射第二题(2)(链接失效 侧边栏跳转)

解3:详见磁盘地址映射,蓝色为可点击链接。👼🎅👨‍🎓🏂🏇🧛‍♂️🧜‍♂️‍♂🧝‍♀️‍♀👩‍🚀‍


磁盘访问时间

总平均时间:T_{a} = T_{s} + \frac{1}{2r} + \frac{b}{rN}

寻找时间就是在所有磁道里找到待找扇区对应的磁道

延迟时间就是在该磁道里找到扇区的时间。

传输时间就是读取扇区的时间。(对扇区的处理时间会影响传输时间。)

磁盘形状


题1:某软盘有40个磁道,磁头从一个磁道移至相邻磁道需要6ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为13磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,问读取一个100块的文件需要多少时间?若系统对磁盘进行了整理,让同一文件的磁盘块尽可能靠拢,从而使逻辑上相邻数据块的平均距离降为2磁道,这时读取一个100块的文件需要多少时间?
 

解1访问一个数据块的时间=寻道时间+旋转延迟时间+传输时间,题目中给的条件比较全面,只需计算一下。

磁盘整理前,逻辑上相邻数据块的平均距离为13磁道,读一块数据需要的时间为
            13×6+100+ 25 = 203ms
因此,读取一个100块的文件需要的时间为
           203×100= 20300ms
磁盘整理后,逻辑上相邻数据块的平均距离为2磁道,读一块数据需要的时间为
          2×6+100+25= 137ms
因此,读取一个100块的文件需要的时间为
          137×100= 13700ms

13*6*100+100*100+25*100=20300


题2:假设磁盘的每个磁道分成9个块,现在一个文件有A, B,…, I共9条记录,每条记录的大小与块的大小相等,设磁盘转速为27ms/转,每读出一块后需要2ms的处理时间。若忽略其他辅助时间,试问:
1)若顺序存放这些记录顺序读取,处理该文件要多少时间?

2)若要顺序读取该文件,记录如何存放处理时间最短?

解2:本题与上一题不一样的是不需要计算寻道时间即Ts,因为在一个磁道上。只需算出延迟时间Tr×记录数+传输时间即可

由题目所给条件可知,磁盘转速为27ms/转,每个磁道存放9条记录,因此读出1条记录的时间是27/9 = 3ms。(转一圈就是把该磁道(同心圆?反正是一个圆⭕)上的所有记录读取一遍,转速÷记录数=读出一条记录的时间,初学转速的时候不知道这个是什么东东。)
1)读出并处理记录A需要5ms,此时读写头已转到记录B的中间,因此为了读出记录B,
必须再转接近一圈(从记录B的中间到记录B)。后续8条记录的读取及处理与此相同,但最后一条记录的读取与处理只需要5ms。于是,处理9条记录的总时间为
         8×(27+3)+(3+2)=245ms   (1.这里的意思从B到I需要多转一圈并且每一圈需要读取一次,所以8×(27+3),此时A只需3+2,因为它是第一次不需要多转一圈)

(2.此题也可照样理解,因为总共需要旋转9圈,并加上多余的2ms所以27×9+2=245ms. 如图所示,对于复杂题目可以化解题目以达到从简入繁的效果。这道题挺绕的,对于刚做的时候的我。希望对你有帮助)

(第二个图画错了 指针应该在A的左边,这样子最后绿色会在B的中间,反正图片这么简单,应该看得懂吧💪
2)由于读出并处理一条记录需要5ms,当读出并处理记录A时,不妨设记录A放在第1个
盘块中,读写头已移到第2个盘块的中间,为了能顺序读到记录B,应将它放到第3个盘块中,即应将记录按下表顺序存放:

这样,处理一条记录并将磁头移到下一条记录的时间是
        3(读出)+2(处理)+1(等待)=6ms
所以,处理9条记录的总时间为
        6*8+5= 53ms (最后一块不用计算等待时间)

(盘面扇区交替编号,磁盘片组中的不同盘面错位命名的应用。磁盘寻块时间分为三个部分,即寻道时间、延迟时间和传输时间,寻道时间和延迟时间属于“找”的时间,凡是“找”的时间都可以通过一定的方法削减,但传输时间是磁盘本身性质所决定的,不能通过一定的措施减少。博客:操作系统笔记 P04:文件管理 - ixtwuko - 博客园在最下面)

终于快施工完成了🍻


题3:有一个交叉存放信息的磁盘,信息在其上的存放方法如右图所示。每个磁道有8个扇区,每个扇区512B,旋转速度为3000转/分,顺时针读扇区。假定磁头已在读取信息的磁道上,0扇区转到磁头下需要1/2转,且设备对应的控制器不能同时进行输入/输出,在数据从控制器传送至内存的这段时间内,从磁头下通过的扇区数为2,问依次读出一个磁道上的所有扇区需要多少时间?其数据传输速率为多少?

解3:顺时针读扇区,所以0-1-2-3-...-7,不会出现上面第二题(2)的问题。另外注意题目中 数据从控制器传送至内存的这段时间内,从磁头下通过的扇区数为2,这就是下面第二个计算。第一个计算是60/3000s×1000ms/8=2.5ms。第三个是 磁头已在读取信息的磁道上,0扇区转到磁头下需要1/2转 所以要想从0开始需要20/2的时间转到0.

从图中可知信息块之间的间隔为2个扇区。由题目所给的条件可知,旋转速度为3000转/分=50转/秒,即20ms/转。
转完(读)一个扇区需要的时间为
   20/8= 2.5ms
读一个扇区并将扇区数据送入内存需要的时间为
   2.5×3 =7 .5ms
读出一个磁道上的所有扇区需要的时间为
   20/2+8×7.5= 70ms = 0.07s
每个磁道的数据量为
   8x512= 4KB
数据传输速率为
   4KB/0.07s= 57.1KB/s
所以,依次读出一个磁道上的所有扇区需要0.07s,其数据传输速率为58.5kB/s.


磁盘地址映射

题1:假定有一个磁盘组共有100个柱面,每个柱面有8个磁道,每个磁道划分成8个扇现有一个5000条逻辑记录的文件,逻辑记录的大小与扇区大小相等,该文件以顺序结构被存放在磁盘组上,柱面、磁道、扇区均从0开始编址,逻辑记录的编号从0开始,文件信息从0柱面、0磁道、0扇区开始存放。试问,该文件编号为3468的逻辑记录应存放在哪个柱面的第几个磁道的第几个扇区上?

解1位示图题1有关联处,可结合理解。该磁盘有8个盘面,一个柱面大小为8×8=64个扇区,即64条逻辑记录。由于所有磁头是固定在一起的,因此在存放数据时,先存满扇区,后存满磁道,再存满柱面

编号为3468的逻辑记录对应的柱面号为3468/64=54(存满了多少柱面);对应的磁道号为(3468 MOD 64) DIV 8= 1(MOD求出54柱面之后多余但不超过一个柱面的数据量 并DIV算出存满了多少个磁道);对应的扇区号为(3468 MOD 64) MOD 8=4(第一个MOD即磁道号里的MOD意思,同时再MOD8即存满了一个磁道余出的记录量)。


题2:【2019统考真题】某计算机系统中的磁盘有300个柱面,每个柱面有10个磁道,每个磁道有200个扇区,扇区大小为512B。文件系统的每个簇包含2个扇区。请回答下列问题:
1)磁盘的容量是多少?
2)假设磁头在85号柱面上,此时有4个磁盘访问请求,簇号分别为100260,60005,101660和110560。采用最短寻道时间优先 ( SSTF)调度算法,系统访问簇的先后次序是什么?
3)第100530簇在磁盘上的物理地址是什么?将簇号转换成磁盘物理地址的过程是由I/O系统的什么程序完成的?
 

解2:本题不解释了 详情见该博文:2011年和2019年磁盘调度大题_发现问题,并解决问题-CSDN博客_某计算机系统中的磁盘有300个柱面,该博文还包含磁盘调度算法的题目。另第三题就是根据位示图题1 的公式有关。磁盘驱动程序。


小题

题1:【2017统考真题】某文件系统中,针对每个文件,用户类别分为4类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为5种:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为( )。

A、9  B、10 C、15 D、20

解1:可以把用户访问权限抽象为一个矩阵,行代表用户,列代表访问权限。这个矩阵有4行5列,1代表true,0代表false,所以需要20位。这道题我一开始选的是9位,我感觉可以用0和1来表示身份,如1000就是安全管理员0100就是文件主,10000就是完全控制。但是后来感觉这种只能实现一个用户对一个文件的访问权限,因为只能1000 10000存在FCB中,其他用户存的话就覆盖了,仅是我的理解


题2:【2013统考真题】若某文件系统索引结点(inode)中有直接地址项和间接地址项,则下列选项中,与单个文件长度无关的因素是( )。
A.索引结点的总数     B.间接地址索引的级数       C.地址项的个数        D.文件块大小

解2:A索引结点的总数只影响文件的个数。B级数多了,相应能映射的物理块就多了,C地址位数增加肯定就加了D文件块:索引是以文件块(File Block)的形式来存放在磁盘上面的。索引多了还能不多吗。


题3:【2015统考真题】在文件的索引结点中存放直接索引指针10个,一级和二级索引指针各1个。磁盘块大小为 1KB,每个索引指针占4B。若某文件的索引结点已在内存中,则把该文件偏移量(按字节编址)为1234和307400处所在的磁盘块读入内存,需访问的磁盘块个数分别是( )。
A. 1,2      B. 1,3          C.2,3                D. 2,4

解3:10个直接索引指针指向的数据块大小为10×1KB=10KB。每个索引指针占4B,则每个磁盘块可存放1KB/4B= 256个索引指针,一级索引指针指向的数据块大小为256×1KB = 256KB,二级索引指针指向的数据块大小为256×256×1KB = 2^16KB= 64MB。(这里就跟内存的混合索引一样,可以交叉理解
按字节编址,偏移量为1234时,因1234B<10KB,由直接索引指针可得到其所在的磁盘块地址。文件的索引结点已在内存中,因此地址可直接得到,因此仅需1次访盘即可。
偏移量为307400时,因10KB+256KB<307400B<64MB,可知该偏移量的内容在二级索引指针所指向的某个磁盘块中,索引结点已在内存中,因此先访盘2次得到文件所在的磁盘块地址,再访盘1次即可读出内容共需3次访盘。


题4:【2015统考真题】文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B,盘块和块内字节均从0开始编号。假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是)。
A. 81,1   B. 81,2    C. 82,1    D. 82,2
 

解4:转换公式看前面的位示图。一开始看到那么大的盘块号一时没想到这个概念 在%的时候出错了😭。盘块号=起始块号 + \left \lfloor b/(1024\times8) \right \rfloor = 32 + \left \lfloor 409612/(1024\times 8) \right \rfloor = 32+50=82,这里问的是块内字节号而不是位号,因此还需除以8(1B=8位)。块内字节号=\left \lfloor (b\div (1024\times 8))/8 \right \rfloor = 1。b 物理块号, ÷ 就是 % ,公式里没这个符号。\left \lfloor 1.5 \right \rfloor 下取整。1024就是n


题5:已知某磁盘的平均转速为r秒/转,平均寻找时间为T秒,每个磁道可以存储的字节数为N,现向该磁盘读写b字节的数据,采用随机寻道的方法,每道的所有扇区组成一个簇,其平均访问时间是( )。
A. (r + T)b/N       B. b/NT       C. (b/N+ T)r       D. bT/N +r

解5:将每道的所有扇区组成一个簇,意味着可以将一个磁道的所有存储空间组织成一个数据块组,这样有利于提高存储速度。读写磁盘时,磁头首先找到磁道,称为寻道,然后才可以将信息从磁道里读出或写入。读写完一个磁道后,磁头会继续寻找下一个磁道,完成剩余的工作,所以在随机寻道的情况下,读写一个磁道的时间要包括寻道时间和读写磁道时间,即T+r秒。由于总的数据量是b字节,它要占用的磁道数为b/N个,所以总平均读写时间为(r + T)b/N秒。


题6:假定磁带的记录密度为400字符/英寸( 1in = 0.0254m),每条逻辑记录为80字符,块间隙为0.4英寸,现有3000个逻辑记录需要存储,存储这些记录需要长度为(  )的磁带,磁带利用率是( )。
A. 1500英寸,33.3%       B. 1500英寸,43.5%       C. 1800英寸,33.3%       D. 1800英寸,43.5%

解6:一个逻辑记录所占的磁带长度为80/400=0.2英寸,因此存储3000条逻辑记录需要的磁带长度为(0.2+0.4)×3000= 1800英寸,利用率为0.2/(0.2+0.4)=33.3%。


IO管理

小题

DMA控制器包含4类寄存器:命令/状态寄存器CR(Control Register)、内存地址寄存器MAR(Memory Address Register)、数据寄存器DR(Data Register)、数据计数器DC(Data Register)

我一直推崇用英语单词来记单词简写,死记硬背单词简写简直要命,有可能会整理一下操作系统简写单词(后更新,貌似工程量有点大,无从下手)

这一章内容有点水,赶时间👻

DCT(Device Control Table)、COCT(Controller Control Table)、CHCT(Channel Control Table)、SDT(System Device Table)。CHCT对应多个COCT,COCT对应多个DCT(通道控制设备控制器,设备控制器控制设备工作)

系统设备表:记录系统中全部设备的情况,每个设备占用一个表目,包括设备类型、标识符、控制表、驱动程序入口等,
设备控制表;系统为每个设备配置一张设备控制表,用于记录本设备的情况,如设备类型,标识号、状态、队列等。
控制器控制表:系统为每个控制器设置一张用于记录本控制器情况的控制器控制表,它反映控制器的使用状态及于通道的连接情况等。
通道控制表:用来记录通道的特性、状态、以及其他的管理信息。

SPOOLing(Simultaneous Peripheral Operation On-Line)目的:为了缓和CPU的高速性与I/O设备低速性之间的矛盾而引入了脱机输入/输出技术。(脱机:脱离主机控制进行I/O)

SPOOLing系统主要有以下三部分:

(1)输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据

(2)输入缓冲区和输出缓冲区。为了缓和和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区;输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用与暂存从输出井送来的数据,以后在传送给输出设备。

(3)输入进程SPi 和输入进程SP0。这里利用两个进程来模拟脱机I/O时的外围控制机。其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存;进程SP0模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,在将输出井中的数据经过输出缓冲区送到输出设备上。

SPOOLing技术的特点:(1)提高了I/O速度。(2)将独占设备改造为共享设备。(3)实现了虚拟设备功能。


题1:若IO设备与存储设备进行数据交换不经过CPU来完成,则这种数据交换方式是()。
A.程序查询       B.中断方式       C. DMA方式       D.无条件存取方式

解1:1、无条件传送(CPU与外设同步工作):外部控制过程各种动作时间是固定的,而且是已知的。
2、查询方式(CPU与外设不同步工作):传送前,CPU先查询外设状态,准备好才传送,否则CPU处于等待状态。
3、中断方式:外设与CPU处于并行工作,一旦外设准备好,外设向CPU发中断申请,条件具备,CPU暂停原程序执行,响应中断,外设与CPU串行工作。
4、DMA方式(高速I/O及成组交换数据):CPU不干予,由硬件实现存储器与外设之间交换数据,称直接存取存储器。

其他解释及题目:os练习题5_小草dym的博客-CSDN博客 链接别人的题目好爽啊hh省时省力✌


题2:【2010统考真题】本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是().

A.命令解释程序       B.中断处理程序       C.系统调用服务程序       D.用户登录程序

解2:键盘是典型的通过中断I/O方式工作的外设,当用户输入信息时,计算机响应中断并通过中断处理程序获得输入信息。

注意,IO软件层次结构是从硬件向上,所以先中断。用户层I/O软件、设备独立性软件、设备驱动程序、中断处理程序、硬件。一开始我还以为是用户登录程序,受直接经验影响了

拓展:区分设备独立性软件和设备驱动程序:独立性软件没有涉及硬件,只是对各个设备进行管理;驱动程序直接涉及硬件具体细节,但与中断操作无关的操作(中断在中断处理程序中)。


题3:一个计算机系统配置了2台绘图机和3台打印机,为了正确驱动这些设备,系统应该提供()个设备驱动程序。
A. 5       B.3       C. 2       D. 1

解3:因为绘图机和打印机属于两种不同类型的设备,系统只要按设备类型配置设备驱动程序即可,即每类设备只需一个设备驱动程序。注意:在设备驱动程序里是为每一类设备配置一个设备驱动程序。我记得前面有一道题目是一对一分配的但是找不到了= =  C


题4:采用SPOOLing技术的计算机系统,外围计算机需要()。

A.一台       B.多台       C.至少一台       D.0台

解4:SPOOLing 技术需要使用磁盘空间(输入井和输出井)和内存空间(输入/输出缓冲区),不需要外围计算机的支持。D


题5:一个典型的文本打印页面有50行,每行80个字符,假定一台标准的打印机每分钟能打印6页,向打印机的输出寄存器中写一个字符的时间很短,可忽略不计。如果每打印一个字符都需要花费50us的中断处理时间(包括所有服务),使用中断驱动I/O方式运行这台打印机,中断的系统开销占CPU的百分比为______。

A. 2%       B.5%       C. 20%       D. 50%

解5:这台打印机每分钟打印50×80×6 = 24000个字符,即每秒打印400个字符。每个字符打印中断需要占用CPU时间50us,所以每秒用于中断的系统开销为400×50us = 20ms。若使用中断驱动I/O,则CPU剩余的980ms可用于其他处理,中断的开销占CPU的2%。因此,使用中断驱动I/O方式运行这台打印机是有意义的。


单双缓计算题

博文(概念+题):操作系统 第五章 IO管理_幻想IT赴日的菜鸡一个-CSDN博客_io管理

C、CPU处理时间;T:输入到缓冲区的时间;M:输入到用户区的时间

单缓冲:max(C, T)+M,M正是双缓冲可以优化的地方。前面C、T是可以同时进行的,因为CPU处理不会涉及到对缓冲区的使用,T就可以往缓冲区冲入数据。

双缓冲:max(C+M, T),因为是双缓冲,所以当一个缓冲区满了之后,I/O设备仍可以往第二个设备冲入数据,同时第一个缓冲区可以为CPU冲入数据并CPU进行处理,所以当C+M小于T则会导致T一直忙碌,块设备可以连续输入;C+M大于T则会CPU可以一直工作,不必等待设备输入。


题6(单缓冲):【2013统考真题】设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入一个数据块到用户工作区的时间为5,对用户工作区中的一个数据块进行分析的时间为90(如下图所示)。进程从外设读入并分析2个数据块的最短时间是( )。

A.200       B.295       C.300       D.390

解6:数据块1从外设到用户工作区的总时间为105,在这段时间中,数据块2未进行操作。在数据块1进行分析处理时,数据块2从外设到用户工作区的总时间为105,这段时间是并行的。再加上数据块2进行处理的时间90,总共是300,答案为C。(注意:一开始缓冲区没有数据,最短时间必须等外设输入缓冲区。)195+105


题7(双缓冲):某操作系统采用双缓冲区传送磁盘上的数据。设从磁盘将数据传送到缓冲区所用的时间为T1,将缓冲区中的数据传送到用户区所用的时间为T2(假设T2远小于T1),CPU处理数据所用的时间为T3,则处理该数据,系统所用的总时间为( )。
A. T1+T2+T3       B. max(T2, T3)+ T1       C. max(T1,T3)+ T2       D. max(T1, T2+T3)

解7:若T3>T1,即CPU处理数据块比数据传送慢,意味着I/O设备可连续输入,磁盘将数据传送到缓冲区,再传送到用户区,与CPU处理数据可视为并行处理,时间的花费取决于CPU最大花费时间,则系统所用总时间为T3。若T3<T1,即CPU处理数据比数据传送快,此时CPU不必等待I/O设备,磁盘将数据传送到缓冲区,与缓冲区中数据传送到用户区及CPU数据处理可视为并行执行,则花费时间取决于磁盘将数据传送到缓冲区所用时间T1。所以选择D选项。(公式熟悉,直接套公式即可。T1代表T,T2代表M,T3代表C


题8(单双缓冲):【2011统考真题】某文件占10个磁盘块,现要把该文件的磁盘块逐个读入主存缓冲区,并送用户区进行分析,假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是()。
A.1500μs, 1000μs       B.1550μs, 1100μs       C.1550μs,1550μs       D.2000μs, 2000μs

解8:在单缓冲区中,当上一个磁盘块从缓冲区读入用户区完成时,下一磁盘块才能开始读入,也就是当最后一块磁盘块读入用户区完毕时所用的时间为150×10 = 1500μs,加上处理最后一个磁盘块的时间50μs,得 1550μs。双缓冲区中,不存在等待磁盘块从缓冲区读入用户区的问题,10个磁盘块可以连续从外存读入主存缓冲区,加上将最后一个磁盘块从缓冲区送到用户区的传输时间50μs 及处理时间50μs,也就是100×10+50+50= 1100μs。

单缓冲:9×[ max(C, T)+M]+C,双缓冲:当全部读入时还需一次50+50=100μs的操作。

(双缓冲图)

拓展:单缓冲,若T>C ,则公式可以是n-1块×[max(C, T)+M]+C

但T<C,则会出现这种情况,注意计算。

双缓冲:如题中T>C+M,则公式为n×T + C+M,

但T<C+M,则不同,具体自己画图理解。画图一画这些单双缓冲其实就很清晰了。


施工完成!👷‍♂️        🙋‍♂️加油,考研人!👨‍🎓/👩‍🎓

✨感谢在本文中出现的链接中各位优质博主的分享!✨

评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值