【操作系统】文件管理大题总结

news2024/9/19 10:52:44

【操作系统】文件管理大题总结

文章目录

  • 【操作系统】文件管理大题总结
    • 前置知识
      • 操作系统中的存储单位转换
    • 1、目录管理中的典型问题分析
      • 基础例题:
      • 往年真题
    • 2、外存的组织方式中的典型问题分析
      • 基础例题
      • 王道课后题
      • 往年真题
    • 3、文件存储空问管理中的典型问题分析
      • 基础例题
      • 往年真题
    • 参考书目

前置知识

操作系统中的存储单位转换

b,B, KB, MB等的单位转换

  • b : b i t bit bit, 比特,位,表示二进制的0或1
  • B: B y t e Byte Byte, 字节, 1 B y t e = 8 b i t 1Byte = 8bit 1Byte=8bit
  • KB: 1K的Byte,千字节, 1 K B = 1024 B y t e = 1024 ∗ 8 b i t 1KB=1024Byte=1024*8bit 1KB=1024Byte=10248bit
  • MB : 1 M i l l i o n 1 Million 1Million的Byte, 兆字节, 1 M B = 1024 K B = 1024 ∗ 1024 B y t e = 1024 ∗ 1024 ∗ 8 b i t 1MB=1024KB=1024*1024Byte=1024*1024*8bit 1MB=1024KB=10241024Byte=102410248bit
  • GB : 1 G B = 1024 M B 1GB = 1024MB 1GB=1024MB
  • TB: 1 T B = 1024 G B 1TB = 1024GB 1TB=1024GB
  • 1KB = 2 10 B 2^{10}B 210B,1MB= 2 20 B 2^{20}B 220B,1G= 2 30 B , 1 T = 2 40 B 2^{30}B,1T=2^{40}B 230B1T=240B

字节、字、位、比特之间的关系:

  • 1位=1比特;1字=2字节;1字节=8位;1字=16位。
  • 在16位的系统中:1字 = 2字节(byte)= 16(bit)
    在32位的系统中:1字 = 4字节(byte)= 32(bit)
    在64位的系统中:1字 = 8字节(byte)= 64(bit)

1、目录管理中的典型问题分析

基础例题:

【例1】在某个文件系统中,每个盘块为 512 个字节,文件控制块占 64 个字节,其中文件名占8个字节。如果索引结点编号占 2个字节,对一个存放在磁盘上的、 256 个目录项的目录,试比较引入索引结点前后,为找到其中一个文件的 FCB, 平均启动磁盘的次数。

答:在引入索结点前,每个目录项中存放的是对应文件的FCB,故256个目录共需要占用 256 ∗ 64 / 512 = 2 14 / 2 9 = 2 5 = 32 256*64/512=2^{14}/2^{9}=2^{5}=32 25664/512=214/29=25=32个盘块,因此在该目录检索到一个文件,平均启动次数为 ( 1 + 32 ) / 2 = 16.5 (1+32)/2=16.5 (1+32)/2=16.5次。
在引入索引结点之后,每个目录项只需存放文件名和索引结点编号,因此256个目录项的目录共需要占用 256 ∗ ( 8 + 2 ) / 512 = 5 256*(8+2)/512=5 256(8+2)/512=5个盘块。因此找到匹配的目录项平均需要启动 ( 1 + 5 ) / 2 = 3 (1+5)/2=3 (1+5)/2=3次磁盘;而得到索引结点编号后,还需要启动磁盘将对应文件的索引结点读入内存,故平均需要启动4次磁盘。

往年真题

【例2】某文件系统的一个文件控制块(FCB)占 64 个字节,盘块大小为 2K 字节,则每个盘块可存放的 FCB 数目是多少?如果一个文件目录中有 384 个 FCB,则查找一个文件平均需要启动磁盘多少次?引入索引结点(i 结点)后,如果文件名占 14 个字节,索引结点占 2 个字节,大小为 2K 字节的盘块可存放的目录项数目是多少?为找到一个文件,平均需要启动磁盘多少次?(10 分)(2021-848真题)

(1)已知FCB占64B,盘块大小2KB,则每个盘块可存放 2 K B / 64 B = 2 11 / 2 6 = 2 5 = 32 2KB/64B = 2^{11}/2^{6}=2^5=32 2KB/64B=211/26=25=32个FCB;
(2)如果一个文件目录中有384个FCB,此时未引入索引结点,每个个目录项中存放的是对应文件的FCB,故384个FCB共需要占用 384 ∗ 64 B / 2 K B = 384 ∗ 2 6 / 2 11 = 384 / 32 = 12 384*64B/2KB=384*2^{6}/2^{11}=384/32=12 38464B/2KB=38426/211=384/32=12个盘块,因此找到匹配的目录项平均需要启动 ( 12 + 1 ) / 2 = 6.5 (12+1)/2=6.5 (12+1)/2=6.5次磁盘;
(3)在引入索引结点之后每个目录项只需存放文件名和索引结点编号,故大小为2KB的盘块可以存放 2 K B / ( 14 + 2 ) = 2 11 / 2 4 = 2 7 = 128 2KB/(14+2)=2^{11}/2^{4}=2^{7}=128 2KB/(14+2)=211/24=27=128个目录项,由于此时只占用一个盘块因此需要找到匹配的目录项需要启动 ( 1 + 1 ) / 2 = 1 (1+1)/2=1 (1+1)/2=1次磁盘,将索引结点编号读入内存还需要一次读取,平均需要启动 2 2 2次磁盘。

2、外存的组织方式中的典型问题分析

基础例题

【例1】假定盘块的大小为 1K, 硬盘的大小为 500 MB, 采用显式链接分配方式时,FAT 需占用多少存储空间?如果文件 占用硬盘的第11、12、16、14四个盘块,试画出文件中各盘块间的链接情况及 FAT 的情况。

由题解可知,该硬盘共有 500 M B / 1 K B = 500 ∗ 1024 K B / 1 K B = 500 ∗ 1024 = 500 K 500MB/1KB=500*1024KB/1KB=500*1024=500K 500MB/1KB=5001024KB/1KB=5001024=500K个盘块,故 FAT 中共有 500 K个表项:如果盘块从1开始编号,为了能保存最大的盘块号500K,则该表项最少需要19位,将它拓展为半个字节的整数倍后,可知每个 FAT 表项需20位,即2.5个字节。因此, FAT 需占用的空间大小为 2.5 ∗ 500 K B = 1250 K B 2.5*500KB=1250KB 2.5500KB=1250KB
文件中各个盘块间的链接关系情况 FAT 的情况如图所示;

在这里插入图片描述
【例2】请分别解释在连续分配方式、隐式链接分配方式、显式链接分配方式和索引分配方式中如何将文件的字节偏移量 3500 转换为物理块号和块内位移量(设盘块大小为1KB ,盘块号需占4个字节)。

首先,将字节偏移量转换成逻辑块号个块内位移量:
3500 / 1024 3500/1024 3500/1024得商为3,余数为428,即逻辑块号为3,块内位移量428。
(1)在连续分配方式中,可从相应文件的FCB中的到分配给该文件的起始地址如 a 0 a_{0} a0,故字节偏移量3500对应的物理盘块号为 a 0 + 3 a_{0}+3 a0+3,块内位移量为428。
(2)在隐式链接分配方式中,由于每个盘块需留出 个字节(如最后的 4个字节)来存放分配给文件的下一个盘块的块号,因此字节偏移量 3500 的逻辑块号为 3500 / 1020 3500/1020 3500/1020 的商 3,块内位移量为余数 440。
从相应文件的FCB中可获得分配给该文件的首个盘块的块号,如 b 0 b_{0} b0,然后可通过读第 b 0 b_{0} b0块,获得分配给文件的第1个盘块的块号,如 b 1 b_1 b1,再从 b 1 b_1 b1块得到第2块的块号,如 b 2 b_2 b2,再从 b 2 b_2 b2块得到第3块的块号,如 b 3 b_3 b3,如此,便可得到字节偏移量 3500应的物理块号 b 3 b_3 b3, 而块内位移量则为 440。
(3)在显示链接方式中,可从文件的FCB中得到分配给该文件的首个盘块的块号如 c 0 c_{0} c0,同(2)便可得到字节偏移量 3500应的物理块号 c 3 c_3 c3, 而块内位移量则为 428。
(4)在索引分配方式中,可从文件的 FCB 中得到索引表的地址。从索引表的第项(距离索引表首字节 12 字节的位置)可获得字节偏移量}500 对应的物理块号,而块内位移量为 428。

【例3】存放在某个磁盘上的文件系统,采用混合索引分配方式,其 FCB 中共有 13个地址项,第 0~9 个地址项为直接地址,第 10 个地址项为一次间接地址,第 11 个地址项为二次间接地址,第 12 个地址项为三次间接地址。如果每个盘块的大小为 512 字节,若盘块号需要用 个字节来描述,而每个盘块最多存放 170 个盘块地址:
(1) 该文件系统允许文件的最大长度是多少?
(2) 将文件的字节偏移量 5000,15000,150000 转换为物理块号和块内偏移量。
(3) 假设某个文件的 FCB 已在内存,但其他信息均在外存,为了访问该文件中某个位置的内容,最少需要几次访问磁盘,最多需要几次访问磁盘?

(1)该文件系统中一个文件的最大长度可达: 10 + 170 + 170 ∗ 170 + 170 ∗ 170 ∗ 170 = 4942080 块 = 4942080 ∗ 512 = 2471040 K 10+170+170*170+170*170*170=4942080块=4942080*512=2471040K 10+170+170170+170170170=4942080=4942080512=2471040K字节
(2)①5000/512 得到商为 9, 余数为 392, 即字节偏移量 5000 对应的逻辑块号为 9,块内偏移量为 392 。由于 9 < 10 9<10 9<10, 故可直接从该文件的 FCB 的第 个地址项处得到物理盘块号,块内偏移量为 392。
②15000/512 得到商为 29, 余数为 152, 即字节偏移量 1_5000 对应的逻辑块号为 29,内偏移量为 152 。由于 10 ≤ 29 < 10 + 170 10\leq29<10+170 1029<10+170,而 29 − 10 = 19 29-10=19 2910=19,故可从FCB的第10个地址项,即一次间址中得到一次间址块的地址;读入一次间址块并从它的第19项)中获得对应的物理盘块号,块内偏移
③150000/512 得到商为 292, 余数为 496, 即字节偏移量 150000 对应的逻辑块号为 292,块内偏移量为 496 。由于 10 + 170 ≤ 292 < 10 + 170 + 170 ∗ 170 10 + 170\leq 292 <10+ 170 + 170 * 170 10+170292<10+170+170170 ,而 292 − ( 10 + 170 ) = 112 292-(10+170)=112 292(10+170)=112 112 / 170 112/170 112/170 得到商为 0, 余数为 112, 故可从 FCB的第11个地址项,即二次间址中获得二次间址块的地址,读入二次间址块,并从它的第0项中获得一个一次间址块的地址
,再读入该一次间址并从它的第112项中获得对应的物理盘块号,块内位移量为496。
(3) 由于文件的 FCB 已在内存,为了访问文件中某个位置的内容,最少需要1次访问磁盘(即可通过直接地址直接读文件盘块),最多需要 次访问磁盘(第1次是读三次间址块,2次是读二次间址块,第3次是读一次间址块,第4次是读文件盘块)。

【例4】文件系统,采用混合索引分配方式,其 FCB 中共有 13 个地址项,每个盘块的大小为 512 字节,请回答下列问题:
(1) 如果每个盘块号只需要用2个字节来描述,则该系统需要设置几次间址项?
(2) 如果每个盘块号需要用3个字节来描述,并允许每个盘块中存放 170 个盘块地址,而且,系统采用 10 个直接地址项、1个一次间址项、1个二次间址项和 1个三次间址项,则对某个长度为 18 000 001 字节的文件,它需占用多少个盘块?

(1) 如果盘块地址只需用 个字节来描述,则该磁盘系统中盘块的数目将小于等于泸,即 65 536 块,故文件的大小也不会超过 65 536 块;而每个盘块中可存放 256 个盘块号,因此系统最多只要用到2次间址。实际上,使用一个一次间址项和一个二次间址项后,允许文件的最大长度已达 11 + 256 + 256 ∗ 256 11+ 256 + 256 *256 11+256+256256 块,已经超出了该磁盘系统中实际的盘块数目。
(2) 根据题意,该文件的最后一个字节的字节偏移量为 18 000 000, 18000000 / 512 18 000 000/512 18000000/512
的商为 35 156, 因此该文件的最后一块的逻辑块号为 35 156。
由于

10 + 170 + 170 ∗ 170 ≤ 35156 < 10 + 170 + 170 ∗ 170 ∗ 170 ∗ 170 ∗ 170 10 + 170 + 170 * 170\leq 35 156< 10 + 170 + 170 * 170*170 *170*170 10+170+17017035156<10+170+170170170170170

故该文件不仅需要使用十个直接地址项,还需要使用一次、二次及三次间址项。又因为
35156 − ( 10 + 170 + 170 ∗ 170 ) = 6076 35 156- (10 + 170 + 170 * 170) = 6076 35156(10+170+170170)=6076
6076 / ( 170 ∗ 170 ) 6076/(170*170) 6076/(170170)得到商为 0, 余数为 6076, 得知该文件在三次间址时还需要1个二次间址块;而余数 6076 / 170 6076/170 6076/170 得到商为 35 、余数为 126, 可知该文件在三次间址时还需要 36 个一次间址块。因此该文件需要:三次间址块 = 1 个,二次间址块: 1 + 1 = 2 个 1 + 1 = 2个 1+1=2,一次间址块: 36 + 170 + 1 = 207 36 + 170 + 1 = 207 36+170+1=207个,数据块: ( 35 ∗ 170 + 127 ) + 170 ∗ 170 + 170 + 10 = 35157 (35 * 170 + 127) + 170 * 170 + 170 +10= 35157 (35170+127)+170170+170+10=35157,故共需要 35 367 个物理盘块。

王道课后题

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

(1)一个普通文件最多可有的文件页数 10 + 256 + 256 ∗ 256 + 256 ∗ 256 ∗ 256 = 16843018 10 + 256 + 256*256 + 256*256*256 = 16843018 10+256+256256+256256256=16843018
(2)由图可知,目录A和D中的目录项都只有两个,因此这两个目录文件都只占用一个物理块。要读文件J中的某一页,要从根目录中读到目录文件A的磁盘地址,再从目录文件A中读入目录文件D的磁盘地址,再从目录文件D中找出文件J的FCB读入内存(已访问磁盘3次),在最坏情况下,该访问页存放在三级索引下,这时需要一级地址读三级索引块,才能得到文件J的地址(已访问磁盘6次),最后读入文件J的相应页,共访问磁盘7次。
(3)同理(2)从根目录访问到C->D->I>U->W,此时已将W的FCB读入内存,在最好情况下,要访问的页在FCB的前10个直接块中,按照直接块指示的地址读文件W的相应页面,因此共访问磁盘6次。
(4)①可将W挂在根目录的最前面的目录项中,此时可直接在根目录中找到W的FCB,最差情况下,需要的W文件的那个页挂在FCB的三级索引下,因此读3个索引块需要访问磁盘3次(已访问磁盘4次)得到该页的物理地址,再去读这个页即可(己访问磁盘5次)。此时,磁盘最多启动5次。②也可设置U为当前目录,也可直接访问W的FCB,同①一样的效果。

【例6】.某个文件系统中,外存为硬盘。物理块大小为512B,有文件A包含598条记录,每条记录占255B,每个物理块放2条记录。文件A所在的目录如下图所示。文件目录采用多级树形目录结构:由根目录结点、作为目录文件的中间结点和作为信息文件的树叶组成,每个目录项占127B,每个物理块放4个目录项,根目录的第一块常驻内存。试问:
在这里插入图片描述
(1)若文件的物理结构采用链式存储方式,链指针地址占2B,则要将文件A读入内存,至少需要存取几次硬盘?
(2)若文件为连续文件,则要读文件A的第487条记录至少要存取几次硬盘?
(3) —般为减少读盘次数,可采取什么措施,此时可减少几次存取操作?

(1)由于每个物理块放4个目录项,因此root/目录下分为两个物理块,又因为根目录的第一块常驻内存(bin、dev、etc、boot可直接获得),故访问root/下读盘一次,usr/目录下需要读盘两次,he/目录下读盘一次,dir/下读入A读盘一次,共读盘5次。由于 255 ∗ 2 + 2 = 512 255*2+2=512 2552+2=512可知一个物理块在链式存储结构下可放2条记录及下一个物理块地址,而文件A共有598条记录,因此读取A的所有记录所需的读盘次数为 598 / 2 = 299 598/2 = 299 598/2=299,所以将文件A读到内存至少需读盘 299 + 5 = 304 299 + 5 = 304 299+5=304次。
2) 当文件为连续文件时,找到文件A同样需要5次读盘,且知道文件A的地址后通过计算只需一次读盘即可读出第487条记录,所以至少需要5 + 1=6次读盘。
(3)两种方法 ①FCB分解法(索引节点法)②设置当前目录
为减少因查找目录而读盘的次数,可采用索引结点方法。若一个目录项占16B,则一个盘块可存放512/16 = 32个目录项,与本题一个盘块仅能存放4个目录相比,可使因访问目录而读盘的次数减少1/8。对查找文件的记录而言,可用一个或多个盘块来存放该文件的所有盘块号,即用链接索引方法;一个盘块可存放 512 / 2 − 1 = 255 512/2-1 =255 512/21=255个盘块号,留下一个地址用来指向下一个存储盘块号(索引块)的磁盘块号。这样,就本题来说,查找目录时需启动5次磁盘。文件A共有299个盘块,则查找文件A的某一记录时需两次取得所有盘块号,再需最多启动一次磁盘即可把A中的任意一条记录读入内存。所以,查找一条记录最多需要8次访盘,而原来的链接方法查找一条记录时,读盘次数为6~304。

往年真题

1、某系统的文件物理结构采用多级索引结构。索引结点共设置 13 个地址项,其中 0 到 9 项为直接地址项,后 3 项分别为一级、二级、三级间接地址。逻辑块和物理块大小均为 1K字节,磁盘盘块地址占 16 位。(10 分)(2023-848)
(1)请画出该文件系统文件索引结构示意图。
(2)列出计算该文件系统允许的最大文件的长度计算表达式。
(3)读取一个长 256256 字节的文件的全部数据,共需读盘多少次?
在这里插入图片描述

(1)如上图所示
(2)已知逻辑块和物理块均为1KB,故每个盘块的大小为 2 K B = 2 11 B 2KB=2^{11}B 2KB=211B,又因为磁盘盘块地址占16位也即4B,故每个盘块最多存放 2 11 / 4 = 2 9 2^{11}/4=2^{9} 211/4=29个盘块地址,故最大文件长度: 10 + 2 9 + 2 9 ∗ 2 9 + 2 9 ∗ 2 9 ∗ 2 9 块 = ( 10 + 2 9 + 2 18 + 2 27 ) ∗ 2 11 B = 134480394 B 10+2^{9}+2^{9}*2^{9}+2^{9}*2^{9}*2^{9}块=(10+2^{9}+2^{18}+2^{27})*2^{11}B=134480394B 10+29+2929+292929=(10+29+218+227)211B=134480394B
(3) 256256 / 2 11 256256/2^{11} 256256/211得到商为125余数为256,即对应逻辑块号125,块内偏移量为256,由于 10 ≤ 266 < 10 + 2 9 10\leq266<10+2^{9} 10266<10+29 ,而 256 − 10 = 255 256-10=255 25610=255故可以从FCB的第10项地址,即一级间址这个i部分得到一级间址块地址,并从她的第255项中获得对应盘块号,块内偏移为256,即读FCB一次,读一级间址块一次,读文件盘块一次共读磁盘三次。

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

(1)系统空间最多存放 4 T B / 1 K B = 2 32 4TB/1KB=2^{32} 4TB/1KB=232个磁盘块。需要 32 b i t / 8 = 4 B 32bit/8=4B 32bit/8=4B来表示索引表项中的块号;可支持单个文件的最大长度 512 / 4 = 128 512/4=128 512/4=128个表项,最多 128 K B 128KB 128KB
(2)所求的单个文件最大长度一共包含两部分:预分配的连续空间和直接索引区。连续区块数占2B,共可表示 2 16 2^{16} 216个磁盘块,即 2 26 B 2^{26}B 226B。直接索引区共 504 B / 6 B = 84 504B/6B=84 504B/6B=84个索引项,所以该系统可支持的单个文件最大长度是 2 26 B + 84 K B 2^{26}B + 84KB 226B+84KB
为了使单个文件的长度达到最大,应使连续区的块数字段表示的空间大小尽可能接近系统最大容量4TB。分别设起始块号和块数占4B这样起始块号可以寻址的范围是 2 32 2^{32} 232个磁盘块,共4TB,即整个系统空间。同样,块数字段可以表示最多 2 32 个 2^{32}个 232磁盘块,共4TB;

3、文件存储空问管理中的典型问题分析

基础例题

【例1】有一计算机系统利用如图所示的位示图(行号、列号都从 开始编号)来管理空闲盘块。如果盘块从 开始编号,每个盘块的大小为 1KB。
在这里插入图片描述
(1) 现要为文件分配两个盘块,试具体说明分配过程;
(2) 若要释放磁盘的第 300 块,应如何处理?

(1) 为某文件分配两个盘块的过程如下:
①顺序检索位示图,从中找到第一个值为0的二进制位,得到其行号i = 2, 列号j = 2;
②计算出位所对应的盘块号: b = i ∗ 16 + j + l = 2 ∗ 16 + 2 + 1 = 35 b = i * 16 + j + l = 2 * 16 + 2 + 1 = 35 b=i16+j+l=216+2+1=35
③修改位示图,令: m a p [ 2 , 2 ] = l map[2, 2] = l map[2,2]=l, 并将对应块 35 分配给文件。
按照同样的方式,可找到第3行、第6列的值为0的位,转换为盘块号55, 将位的值修改为1,并将 55 号盘块分配给文件。
(2) 释放磁盘的第 300 块时,应进行如下处理:
①计算出磁盘第 300 块所对应的二进制位的行号i和列号j:
i = ( 300 − l ) / 16 = 18 , j = ( 300 − 1 ) i =(300- l)/16= 18, j =(300-1)%16= 11 i=(300l)/16=18,j=(3001)
②修改位示图,令: m a p [ 18 , 11 ] = 0 map [18, 11] = 0 map[18,11]=0, 表示对应块为空闲块。

【例2】假定一个盘组共有100个柱面,每个柱面上有16个磁道,每个磁道分成4个扇区。
(1)整个磁盘空间共有多少个存储块?
(2)若用字长32位的单元来构造位示图,共需要多少个字?
(3)位示图中第18个字的第16位对应的块号是多少?(假设字号,位号,块号都从1开始)

(1)整个磁盘空间共有 100 ∗ 16 ∗ 4 = 6400 100*16*4=6400 100164=6400个存储块。
(2)位示图应为6400个位,若用字长32位的单元来构造位示图,共需要 6400 / 32 = 200 6400/32=200 6400/32=200个字。
(3)位示图中第18个字的第16位(即 i = 18 , j = 16 i=18,j=16 i=18,j=16)对应的块号为 32 ∗ ( 18 − 1 ) + 16 = 560 32*(18-1)+ 16 = 560 32(181)+16=560

往年真题

【例3】(2020-848) 某个系统采用成组链接法来管理磁盘的空闲空间,目前磁盘的状态如图所示:
(1) 该磁盘中目前还有多少个空闲盘块?
(2) 请简述磁盘块的分配过程。
(3) 在为某个文件分配 个盘块后,系统要删除另一文件,并回收它所占的 个盘块:700 711 703 788 70 1,写出回收后,空闲盘块号栈的情况。
在这里插入图片描述

(1)从图中可以看出,目前系统共有四组空闲盘块,第一组为 块,第二、三组分别为 100 块,第四组虽记为 100 块,但除去结束标记 后实际只有 99 块,故空闲盘块总数为 301 块。
(2)(2) 磁盘块的分配过程如下:首先检查超级块空闲盘块号栈是否已上锁,若已上锁则进程睡眠等待;否则,核心在给超级块的空闲盘块号栈上锁后,将 s_n free 减1,若 s_n free仍大于0, 即第一组中不只一个空闲盘块,则将 s_ free[ s _ free] 中登记的(即空闲盘块号栈栈顶的)空闲盘块分配出去;若 s_n free为0, 即当前空闲盘块号栈中只剩最一个空闲盘块,由于该盘块中登记有下一组空闲盘块的盘块号和盘块数,因此先必须将该盘块的内容读入超级块的空闲盘块号栈中,然后再将该盘块分配出去。若 s_nfree o, 而且栈底登记的盘块号为 0, 则表示系统已无空闲盘块可分配。分配操作结束时,还需将空闲盘块号栈解锁,并唤醒所有等待其解锁的进程。
(3) 进行上述的分配和回收操作后,空闲盘块号栈的栈顶指针 s_nfree 的值为 4, 而空闲盘块号栈中依次登记着盘块号 711, 703, 788, 701, 其中 701 登记在栈顶。

注:上面是题解答案,本题详解请参考这个博客:实例讲解成组链接法

参考书目

  • 《计算机操作系统(第4版)》(汤小丹)
  • 《计算机操作系统(第4版)》学习指导与题解(梁红兵,汤小丹编著)
  • 《2024王道计算机操作系统考研复习指导》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1145037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux ln命令:建立链接文件

如果要想说清楚 ln 命令&#xff0c;则必须先解释下 ext 文件系统&#xff08;Linux 文件系统&#xff09;是如何工作的。我们在前面讲解了分区的格式化就是写入文件系统&#xff0c;而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统。 ext4 …

Django之登录注册

最近在准备上线一个网站&#xff08;基于django的编程技术学习与外包服务网站&#xff09;&#xff0c;所以会将自己的在做这个项目的过程中遇到的模块业务以及所涉及到的部分技术记录在CSDN平台里&#xff0c;一是希望可以帮到有需要的同学&#xff0c;二十以供自己后续回顾学…

Jmeter调用Python脚本实现参数互相传递的实现

这篇文章主要介绍了Jmeter调用Python脚本实现参数互相传递的实现&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 接口性能测试时&#xff0c;接口请求参数是根据一…

蓝桥杯每日一题2023.10.28

题目描述 递增三元组 - 蓝桥云课 (lanqiao.cn) 题目分析 60分解法&#xff1a; 直接暴力循环每一个数进行比较 #include<bits/stdc.h> using namespace std; const int N 2e5 10; typedef long long ll; ll n, a[N], b[N], c[N], ans; int main() {cin >> n;…

C++STL---Vector、List所要掌握的基本知识

绪论​ 拼着一切代价&#xff0c;奔你的前程。 ——巴尔扎克&#xff1b;本章主要围绕vector和list的使用&#xff0c;以及容器底层迭代器失效问题&#xff0c;同时会有对原码的分析和模拟实现其底层类函数。​​​​话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑…

shouldComponentUpdate 是做什么的?

目录 前言 生命周期函数 shouldComponentUpdate 的写法和用法 代码 事件和API 优缺点 方法 总结 理论 结论 shouldComponentUpdate 是 React 类组件中的一个生命周期方法&#xff0c;用于决定一个组件的 props 或 state 发生变化时是否应该重新渲染。默认情况下&…

HBuilderX 自定义语法提示

在开发实践中&#xff0c;会使用到各种第三方组件&#xff0c;比如Element UI&#xff0c;通常的做法是到官网中复制模板再在本地根据设计要求进行修改&#xff0c;或是从其它已经实现的组件中复制相似的内容。但每次复制粘贴确实比较麻烦。 在HBuilderx中可以设置代码块来创建…

上海高考语文命题趋势和备考建议?附1990年-2023年高考语文真题和答案资源

虽然语文是我们的母语&#xff0c;但是语文从小到大都是我们学习的重点&#xff0c;更是难点&#xff0c;分值也是最高的科目之一。甚至很多时候&#xff0c;语文科目的分值差会带来最终的分值差。综观各个省市的高考状元&#xff0c;基本上语文科目都在130分以上&#xff08;满…

JAVA中的垃圾回收器(1)

一)垃圾回收器概述: 1.1)按照线程数来区分: 串行回收指的是在同一时间端内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾回收工作结束&#xff0c;在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;出行…

【每日一题】合并两个有序数组

链接奉上&#xff1a;合并两个有序数组 目录 直接合并后排序&#xff1a;思路&#xff1a;代码实现&#xff1a; 双指针思路&#xff1a;代码实现&#xff1a; 直接合并后排序&#xff1a; 思路&#xff1a; 将nums2直接合并到nums1后边&#xff0c;并进行排序 代码实现&…

LeetCode题:1:两数之和

&#xff08;1&#xff09;、题目要求&#xff1a; &#xff08;2&#xff09;、解题思路&#xff1a; 由上图可知&#xff0c;target 20&#xff0c;这题有多种解法 1、暴力枚举的方法&#xff1a; 但是这样时间复杂度就很高了&#xff0c;要定义两个下标&#xff0c;列举出所…

CSP-J 2023 第二轮认证入门级(含答案)

一。题目 二。答案 T1 ⼩苹果&#xff08;apple&#xff09; 每⼀轮拿掉的苹果数量为 。模拟拿苹果的过程&#xff0c;每⼀轮中令 &#xff0c;当 时最后⼀个苹果会被拿掉。 时间复杂度为对数。 #include <iostream> using namespace std; int n; int ans1, ans2; boo…

Ajax学习笔记第三天

做决定之前仔细考虑&#xff0c;一旦作了决定就要勇往直前、坚持到底&#xff01; 【1 ikunGG邮箱注册】 整个流程展示&#xff1a; 1.文件目录 2.页面效果展示及代码 mysql数据库中的初始表 2.1 主页 09.html:里面代码部分解释 display: inline-block; 让块元素h1变成行内…

第二次课10.28

hash 计算接口 Crypto API &#xff08;证书&#xff0c;对称加密&#xff0c;非对称加密&#xff0c;编码和解码&#xff09; CryptAcquireContext CryptCreateHash CryptReleaseContext CryptHashData CryptDestroyHash CryptGetHashParam 注册表操作接口 RegEnumKeyEx RegE…

如何快速解决d3dcompiler_43.dll缺失问题?五种方法快速解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“D3DCompiler_43.dll缺失”。这个错误通常会导致游戏、应用程序或系统无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些修复方案来恢复缺失的文件。本文将介绍五个修复D3DCompi…

Vue 3响应式对象: ref和reactive

目录 什么是响应式对象&#xff1f; Ref Reactive Ref vs Reactive 适用场景&#xff1a; 访问方式&#xff1a; 引用传递&#xff1a; 性能开销&#xff1a; 响应式对象优点 响应式对象缺点 总结 Vue 3作为一种流行的JavaScript框架&#xff0c;提供了响应式编程的…

Linux中shell脚本中的运算

目录 一、运算符号 二、运算指令 三、练习 一、运算符号 加法-减法*乘法/除法%除法后的余数**乘方自加一--自减一 <小于<小于等于>大于>大于等于等于ji&#xff0c;jji*jj*i/jj/i%jj%i 二、运算指令 (()) ##((a12)) let ##let a12 expr ##expr 1 2 …

MyBatis入门的第一个程序

2023.10.28 今天正式开始MyBatis的学习&#xff0c;先来一个入门程序的编写。 ①准备一个数据库表&#xff1a; ②配置pom.xml文件&#xff1a;&#xff08;打包方式和2个依赖的引入&#xff09; <?xml version"1.0" encoding"UTF-8"?> <proj…

freeRTOS学习day4-中断使用消息队列

首先设置好中断优先级 看freeRTOS配置文件 freeRTOS可以管理的优先级范围是5-15 所以开始我把子优先级设置为4 会卡死在发送那里 https://www.cnblogs.com/realiot/articles/16699272.html 另外一点 一定要设置中断优先级分组 忘了设置也会卡死 void USART1_IRQHandler(vo…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…