1.下列文件物理结构中,适合随机访问且易于文件扩展的是()
-
连续结构
-
索引结构
-
链式结构且磁盘块定长
-
链式结构且磁盘块变长
解析:
文件的物理结构包括连续、链式、索引三种,其中链式结构不能实现随机访问,连续结构的文件不易于扩展。因此随机访问且易于扩展是索引结构的特性。
2.假设磁头当前位于第105道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为35,45,12,68,110,180,170,195,采用SCAN调度(电梯调度)算法得到的磁道访问序列是()。
-
110,170,180,195,68,45,35,12
-
110,68,45,35,12,170,180,195
-
110,170,180,195,12,35,45,68
-
12,35,45,68,110,170,180,195
解析:
SCAN算法类似电梯的工作原理。首先,当磁头从105道向序号增加的方向移动时,便会按照从小到大的顺序服务所有大于105的磁道号(110,170,180,195);往回移动时又会按照从大到小的顺序进行服务(68,45,35,12)。
3.文件系统中,文件访问控制信息存储的合理位置是(A)。
-
文件控制块
-
文件分配表
-
用户口令表
-
系统注册表
解析:为了实现“按名存取”,在文件系统中为每个文件设置用于描述和控制文件的数据结构,称之为文件控制块(FCB)。在文件控制块中,通常包含以下三类信息,即基本信息、存取控制信息及使用信息。
4.设文件F1的当前引用计数值为1,先建立F1的符号链接(软链接)文件F2,再建立F1的硬链接文件F3,然后删除F1。此时,F2和F3的引用计数值分别是__1 和 1 ____。
[解析]
为了使文件实现共享,通常在文件的索引节点中设置一个链接计数字段,用来表示链接到本文件的用户目录项的数目(引用计数值)。当新文件建立时,一般默认引用计数值为1。
硬链接可以看作是已存在文件的另一个名字,新文件和被链接文件指向同一个节点,引用计数值加1。当删除被链接文件时,只是把引用计数值减1,直到引用计数值为0时,才能真正删除文件。
软链接又叫符号链接,在新文件中只包含了被链接文件的路径名,新文件和被链接文件指向不同的节点。建立软链接文件时,文件的引用计数值不会增加。在这种方式下,当被链接文件删除时,新文件仍然是存在的,只不过是不能通过新文件访问被链接文件而己。
因此,在本题中,当建立F2时,F1和F2的引用计数值都为1。当再建立F3时,F1和F3的引用计数值就都变成了2。当后来删除F1时,F3的引用计数值为2-1=1。F2的引用计数值仍然保持不变。
5.设文件索引节点中有7 个地址项,其中4 个地址项是直接地址索引,2 个地址项是一级间
接地址索引,1 个地址项是二级间接地址索引,每个地址项大小为4B,若磁盘索引块和磁盘数据块
大小均为256B,请计算可表示的单个文件最大长度。
解析:
每个索引块上可以存放的索引项为256B/4B=26 个。直接索引的数据块有4 块;两个一级
间接索引指向的数据块有2×26=27 个;一个二级间接索引指向的数据块有1×26×26=212 个。所以单
个文件最大可以有4+27+212(=4228)个数据块。
文件大小为 4228×256B=(4+27+212)×28=33KB+1MB=1057KB
6.设置当前工作目录的主要目的是()。
-
节省外存空间
-
节省内存空间
-
加快文件的检索速度
-
加快文件的读/写速度=
解析:当一个文件系统含有多级目录时,每访问一个文件,都要使用从树根开始到树叶为止、包括各中间结点名的全路径名。当前目录又称工作目录,进程对各个文件的访问都相对于当前目录进行,而不需要从根目录一层一层的检索,加快了文件的检索速度。选项AB都与相对目录无关;选项D,文件的读/写速度取决于磁盘的性能。
7.用户在删除某文件的过程中,操作系统不可能执行的操作是()。
-
删除此文件所在的目录
-
删除与此文件关联的目录项
-
删除与此文件对应的文件控制块
-
释放与此文件关联的内存级冲区
解析:删除文件不需要删除文件所在的目录,而文件的关联目录项和文件控制块需要随着文件一同删除,同时释放文件的关联缓冲区。
8.为支持CD-ROM 中视频文件的快速随机播放,播放性能最好的文件数据块组织方式是( )。
-
连续结构
-
链式结构
-
直接索引结构
-
多级索引结钩
解析:
因为要支持 快速随机播放 ,所以要保证最短的查询时间,即不能选取链表和索引结构,因此连续结构是最优的方案。
下面是3种文件分配方式的优缺点:
- 连续分配支持顺序访问和直接访问(可以对比数组来考虑,支持直接存取,所以很方便),实现简单,存取速度快。缺点是,文件长度不宜动态增加,因为一个文件末尾后的盘块可能已经分配给了其他文件,一旦需要增加,就需要大量移动盘块,此外,反复增删文件后会产生外部碎片。(可以类比数组的插入和删除)
- 链接分配就类似于链表了,每一个盘块都有指向下一个盘块的的指针。优点是增、删、改非常方便,缺点在于不能直接访问某个盘块,另外假如某个盘块的指针坏了,往后的数据都会丢失。
- 索引分配是把每个文件的所有的盘块号都集中放在一起构成索引块(表),优点是可以随机访问,方便文件的增删,缺点是增大了存储空间的开销,索引表的查找策略对文件系统效率影响较大。
9.若某文件系统索引结点(inode)中有直接地址项和间接地址项, 则下列选项中, 与单个文件长度无关的因素是( A)。
-
索引结点的总数
-
间接地址索引的级数
-
地址项的个数
-
文件块大小
解析:
因为地址项的个数等于直接地址索引+间接地址索引。而单个文件的大小和间接地址索引的个数和文件块的大小都有关系。
Linux文件系统 使用索引节点来记录文件信息,作用类似于Windows下的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
10.现有一个容量为10GB的磁盘分区,磁盘空间以簇(Cluster)为单位进行分配,簇的大小为4KB,若采用位图法管理该分区的空闲空间,即用一位(bit)标识一个簇是否被分配,则存放该位图所需簇的个数为 。
-
80
-
320
-
80k
-
320k
解析:
簇的总数为10GB/4KB=2.5M,用一位标识一簇是否被分配,则整个磁盘共需要2.5M位,即需要2.5M/8=320KB,则共需要320KB/4KB=80个簇,选A。
11.在一个文件被用户进程首次打开的过程中,操作系统需做的是 。
-
将文件内容读到内存中
-
将文件控制块读到内存中
-
修改文件控制块中的读写权限
-
将文件的数据缓冲区首指针返回给用户进程
解析:
一个文件被用户进程首次打开即被执行了Open操作,会把文件的FCB调入内存,而不会把文件内容读到内存中,只有进程希望获取文件内容的时候才会读入文件内容;C、D明显错误,选B
12.在系统内存中设置磁盘缓冲区的主要目的是()。
-
减少磁盘 I/O 次数
-
减少平均寻道时间
-
提高磁盘数据可靠性
-
实现设备无关性
解析:磁盘和内存的速度差异,决定了可以将内存经常访问的文件调入磁盘缓冲区,从高速缓存中复制的访问比磁盘 I/O 的机械操作要快很多很多。
缓和高速CPU与低速I/O设备间速度不匹配的矛盾;提高它们之间的并行性;减少对CPU的中断次数,放宽CPU对中断响应时间的要求。
文件系统与块设备驱动并不直接打交道,中间通过缓冲区管理联系起来。完成文件系统对具体块设备的读写操作要经过请求管理(strategy)、缓冲区管理、中断管理。
解决了磁盘和内存的速度不匹配问题
13.在文件的索引节点中存放直接索引指针10 个,一级和二级索引指针各 1 个。磁盘块大小为 1KB,每个索引指针占 4 个字节。若某文件的索引节点已在内存中,则把该文件偏移量(按字节编址)为 1234和 307400 处所在的磁盘块读入内存,需访问的磁盘块个数分别是(B)。
-
1,2
-
1,3
-
2,3
-
2,4
解析:
10 个直接索引指针指向的数据块大小为 10*1KB=10KB ;
每个索引指针占 4B ,则每个磁盘块可存放 1KB/4B=256 个索引指针,
一级索引指针指向的数据块大小为: 256*1KB=256KB
二级索引指针指向的数据块大小为: 256*256*1KB=65536KB=64MB
按字节编址,偏移量为 1234 时,因 1234B < 10KB ,则由直接索引指针可得到其所在的磁盘块地址。文件的索引结点已在内存中,则地址可直接得到,故仅需 1 次访盘即可。
偏移量为 307400 时,因 10KB+256KB < 307400B < 64MB ,可知该偏移量的内容在二级索引指针所指向的某个磁盘块中,索引结点已在内存中,故先访盘 2 次得到文件所在的磁盘块地址,再访盘 1 次即可读出内容,故共需 3 次访盘。
14.文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024个字节,盘块和块内字节均从0开始编号。假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是 。
-
81、1
-
81、2
-
82、1
-
82、2
解析:位图表示法:409612/(8*1024)=50,还余12,所以共需要51个块。从32开始的话到了32+51-1=82号块,因为余下的12位,需要占两个字节,从0序号开始的话所以到了1序号字节
15.某硬盘有200个磁道(最外侧磁道号为0),磁道访问请求序列为:130,42,180,15,199,当前磁头位于第58号磁道并从外侧向内侧移动。按照SCAN调度方法处理完上述请求后,磁头移过的磁道数是 。C
-
208
-
287
-
325
-
382
解析:
SCAN算法就是电梯调度算法。顾名思义,如果开始时磁头向外移动就一直要到最外侧,然后再返回向内侧移动,就像电梯若往下则一直要下到最底层需求才会再上升一样。当期磁头位于58号并从外侧向内侧移动,先依次访问130和199,然后再返回向外侧移动,依次访问42和15,故磁头移过的磁道数是:(199-58)+(199-15)=325。
16.假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录 16 384个磁盘块的空闲状态。
1)请说明在上述条件下如何进行磁盘块空闲状态的管理。
2)设某单面磁盘旋转速度为6000r/min,每个磁道有100个扇区,相邻磁道间的平均移动时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动(如图B-5所示),磁道号请求队列为50,90,30,120,对请求队列中的每个磁道需读取1个随机分布的扇区,则读完这4个扇区点共需要多少时间?要求给出计算过程。
3)如果将磁盘替换为随机访问的Flash半导体存储器(如U盘、SSD等),是否有比CSCAN更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
图B-5
直接参看讲义把
【分析】对于本题中的第二问,读完这4个扇区总共需要的时间由三部分组成: 总寻道
时间+4个扇区总旋转延迟时间+4个扇区总传输时间。其中,总寻道时间=柱面总移动次数*
相邻磁道间的平均移动时间(已知为lm s); 对于总旋转延迟时间,由于是读取随机分布的
扇区,因此, 应该使用平均旋转延迟时间,读取1个随机分布的扇区的平均旋转延迟时间=
CO+转一圈所用时间) /2, 因此,总旋转延迟时间=读取1个的平均旋转延迟时间*4; 对于
总传输时间,总传输时间=1个扇区的传输时间*4, 1个扇区的传输时间=转一圈所用时间/
每个磁道的扇区数量。
参考答案:
(1) 2KB = 2*1024*8bit = 1638 4bit。因此可以使用位图法进行磁盘块空闲状态管理,每
1 bit表示一个磁盘块是否空闲。
(2)根据CSCAN算法, 被访问的硌道号顺序为100、120、30、50、90, 因此,
寻道用去的总时间为: (20 + 90 + 20 + 40) * lms = 170ms;
每分钟6000转, 转一圈的时间为0.01 s, 一个扇区的读取时间为0.01/100== 0.0001 s,
一个扇区的平均旋转延迟时间为(0+0.01) /2 , 总共要随机读取四个扇区, 总共用去的
旋转延迟时间和传输时间为:C 0.01 *0.5 + 0.0001) *4 = 0.0204s = 20.4ms
所以;读完这4个扇区总共需要170ms + 20.4ms = 190.4ms。
(3)若将磁盘换为U盘等, 有比CSCAN更高效的磁盘调度策略。U盘的存储介质为
电可擦除只读存储器CEEPROM)的变种, 其寻址方式类似于内存的寻址方式, 不涉及到磁
盘的寻道、寻扇区等操作, 因此可采用先来先服务、优先级高者优先等算法。
17.某文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题。
(1)在连续、链式、索引三种文件的数据块组织方式中,哪种更合适?要求说明理由。为定位文件数据块,需要FCB中设计哪些相关描述字段?
(2)为快速找到文件,对于FCB,是集中存储好,还是与对应的文件数据块连续存储好?要求说明理由。
解析:
1)在磁盘中连续存放(采取连续结构),磁盘寻道时间更短,文件随机访问效率更高;在FCB中加入的字段为:<起始块号,块数>或者<起始块号,结束块号>。
2)将所有的FCB集中存放,文件数据集中存放。这样在随机查找文件名时,只需访问FCB对应的块,可减少磁头移动和磁盘I/O访问次数。
18.某文件系统空间的最大容量为4TB(1TB=B),以磁盘块为基本分配单位。磁盘块大小为1KB。文件控制块(FCB)包含一个512B的索引表区。请回答下列问题。
1)假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?
2)假设索引表区采用如下结构:第0~7字节采用<起始块号,块数>格式表示文件创建时预分配的连续存储空间,其中起始块号占6B,块数占2B;剩余504字节采用直接索引结构,一个索引项占6B,则可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
解析:
1)文件系统中所能容纳的磁盘块总数为4TB/1KB=。要完全表示所有磁盘块,索引项中的块号最少要占32/8=4B。而索引表区仅采用直接索引结构,故512B的索引表区能容纳512B/4B=128个索引项。每个索引项对应一个磁盘块,所以该系统可支持的单个文件最大长度是128×1KB=128KB。
2)这里的考查的分配方式不同于我们所熟悉的三种经典分配方式,但是题目中给出了详细的解释。所求的单个文件最大长度一共包含两部分:预分配的连续空间和直接索引区。
连续区块数占2B,共可以表示个磁盘块,即
B。直接索引区共504B/6B=84个索引项。所以该系统可支持的单个文件最大长度是
B+84KB。
为了使单个文件的长度达到最大,应使连续区的块数字段表示的空间大小尽可能接近系统最大容量4TB。分别设起始块号和块数分别占4B,这样起始块号可以寻址的范围是个磁盘块,共4TB,即整个系统空间。同样的,块数字段可以表示最多
个磁盘块,共4TB。
18.文件 F 由 200 条记录组成,记录从 1 开始编号,用户打开文件后,欲将内存中的一条记录插入文件 F 中,作为其第 30 条记录,请回答下列问题,并说明理由。
(1)若文件系统为顺序分配方式,每个存储块存放一条记录,文件 F 的存储区域前后均有足够空闲的存储空间,则要完成上述操作最少要访问多少存储块? F 的文件控制区内容会有哪些改变?
(2)若文件系统为链接分配方式,每个存储块存放的一条记录和一个链接指针,则要完成上述操作最少要访问多少存储块?若每个存储块大小为 1KB,其中 4 个字节存放指针,则该系统支撑文件的最大长度是多少?
解析:
(1) 下列是连续分配的磁盘块使用情况。
|
| 1 | 2 | ··· | 29 | 30 | ··· | 199 | 200 |
|
|
现在需要将一条记录插入到文件F 中,作为其第 30 条记录,也就是插入到第 29 条记录的后面。这需要向前移动文件的前 29 条记录。移动后如下图, 其中灰底(红字)的磁盘块存储的是插入的记录。
| 1 | 2 | 3 | ··· | 30 | 31 | ··· | 200 | 201 |
|
|
向前移动文件的前29 条记录,每条记录需先读一次,然后写到其前一块磁盘块敏感词需 29×2=58 次。然后需要将新记录写到腾出的那个磁盘块中, 作为该文件的第 30 条记录。故总共需要 58+1=59 次。
由于文件的起始位置前移了一个磁盘块,同时文件也增加了一条记录,因此F 的文件控制块中的文件的起始位置和文件的大小会发生改变。
(2) 下列是链接分配的磁盘块使用情况。
现在需要将一条记录插入到文件F 中,作为其第 30 条记录,也就是插入到第 29 条记录的后面。 插入后效果如下图。
这就需要先找到第29 条文件记录的磁盘块,然后获得第 30 条文件记录的磁盘块地址 (需读磁盘 29 次)。再为该记录分配一个空闲磁盘块, 将该记录以及第 30 条文件记录的磁盘块地址写入其中,再将该块写入磁盘(需写磁盘 1 次)。 最后还需要修改第 29 块的链接指针,指向新的插入块,并将第 29 块写回磁盘(需写磁盘 1 次)。 故共需要 29+1+1=31 次。由于每个磁盘块大小为 1KB,其中 4 个字节存放链接指针, 因此用于存放文件的空间为( 1KB-4B)。 又 4 个字节的指针的地址空间为。 因此该文件系统支持的文件最大长度是
(1024-4) B×=4080GB
19.某磁盘文件系统使用链接分配方式组织文件,簇大小为4KB。目录文件的每个目录项包括文件名和文件的第一个簇号,其他簇号存放在文件分配表FAT中。
(1)假定目录树如下图所示,各文件占用的簇号及顺序如下表所示,其中dir、dir1是目录,file1、file2是用户文件。请给出所有目录文件的内容。
(2)若FAT的每个表项仅存放簇号,占2个字节,则FAT的最大长度为多少字节?该文件系统支持的文件长度最大是多少?
(3)系统通过目录文件和FAT实现对文件的按名存取,说明file1的106、108两个簇号分别存放在FAT的哪个表项中。
(4)假设仅FAT和dir目录文件已读入内存,若需将文件dir/dir1/file1的第5000个字节读入内存,则要访问哪几个簇?.
解答:
(1)两个目录文件dir和dir1的内容如下表所示。(3分)
【评分说明】每个目录项的内容正确给1分,共3分。
(2)由于FAT的簇号为2个字节,即16比特,因此在FAT表中最多允许216(65536)个表项,一个FAT文件最多包含216(65536)个簇。FAT的最大长度为216×2B=128KB。(1分)文件的最大长度是216×4B=256MB。(1分)
【评分说明】若考生考虑到文件结束标志、坏块标志等,且答案正确,同样给分。
(3)在FAT的每个表项中存放下一个簇号。file1的簇号106存放在FAT的100号表项中,(1分)簇号108存放在FAT的106号表项中。(1分)
(4)先在dir目录文件里找到dir1的簇号,然后读取48号簇,得到dir1目录文件,接着找到file1的第一个簇号,据此在FAT里查找file1的第5000个字节所在的簇号,最后访问磁盘中的该簇。因此,需要访问目录文件dir1所在的48号簇,(1分)及文件file1的106号簇。(1分)