《操作系统教程》(第三版)CH1应用题参考答案
1. 磁带卷上记录了若干文件,假定当前磁头停在第j个文件的文件头标前,现要按名读出文件i,试
给出读出文件i的步骤。 答:由于磁带卷上的文件用“带标”隔开,每个文件的文件头标前后都使用了三个带标。
文 文 文 文 件 件 件 件 ? * 头 * 文件体 * 尾 * ? * 头 * 文件体 * 尾 * 标 标 标 标 ?
正常情况磁头应停在文件头标的前面,所以,只要计算带标的个数,就可找到所要文件。 1)当i≧j时,要正走磁带,
步1 组织通道程序正走磁带,走过“带标”个数为3×(i-j)个。 步2 组织通道程序读文件i的文件头标。
步3 根据文件i的文件头标信息,组织读文件信息。
2)当i 步1 组织通道程序反走磁带,走过“带标”个数为3×(j-i)+1个。 步2 组织通道程序读文件i的文件头标。 步3 根据文件i的文件头标信息,组织读文件信息。 2. 假定令B=物理块长、R=逻辑记录长、F=块因子。对定长记录(一个块中有整数个逻辑记录),给 出计算F的公式。 答:F=[B/R]。 3. 某操作系统的磁盘文件空间共有500块,若用字长为32位的位示图管理盘空间,试问:(1)位示 图需多少个字? (2)第i字第j位对应的块号是多少? (3)并给出申请/归还一块的工作流程。 答: (1) 位示图占用字数为500/32=16(向上取整)个字。 (2) 第i字第j位对应的块号N=32×i+j。 (3)申请时自上至下、自左至有扫描位示图跳过为1的位,找到第一个迁到的0位,根据它是第i字第j位算出对应块号,并分配出去。归还时已知块号,块号/32算出第i字第j位并把位示图相应位清0。 4. 若两个用户共享一个文件系统,用户甲使用文件A、B、C、D、E;用户乙要用到文件A、D、E、 F。己知用户甲的文件A与用户乙的文件A实际上不是同一文件;甲、乙两用户的文件D和E正是同一文件。试设计一种文件系统组织方案,使得甲、乙两用户能共享该文件系统又不致造成混乱。 答:可以采用二级目录或树形目录结构来解决难题。例如, 用户甲文件目录 文件名 物理地址 B C 主文件目录 用户名 甲 乙 …?… A 文件 文件目录始址…… …… D E 用户乙文件目录 文件 33 文件 文件名 物理地址 D E 《操作系统教程》(第三版)CH1应用题参考答案 5. 在UNIX 中,如果一个盘块的大小为1KB,每个盘块号占4个字节,即每块可放256个地址。请 转换下列文件的字节偏移量为物理地址:(1)9999;(2)18000;(3)420000。 答: 步1 将逻辑文件的字节偏移量转换为文件的逻辑块号和块内偏移。方法是:将逻辑文件的字节偏移量/盘块大小,商为文件的逻辑块号,余数是块内偏移。 步2将文件的逻辑块号转换为物理块号。使用多重索引结构,在索引节点中根据逻辑块号通过直接索引或间接索引找到对应物理块号。 (1) 9000 L1=INT(9999,1024)=9 B1=MOD(9999,1024)=783 其逻辑块号为9,故直接索引addr[8]中可找到物理块号。 (2) 18000 L2=INT(18000,1024)=17 B1=MOD(18000,1024)=592 其逻辑块号为17,通过一次间接索引addr[10]中可找到物理块号。 (3) 420000 L1=INT(420000,1024)=410 B1=MOD(9000,1024)=160 其逻辑块号为410,通过二次间接索引addr[11]中可找到物理块号。 6. 在UNIX/Linux系统中,如果当前目录是/usr/wang,那么,相对路径为‥/ast/xxx文件的绝对路径 名是什么? 答:在UNIX/Linux系统中,“/”表示根目录,“.”是指当前目录,“‥” 是指父目录。在本题中当前目录是/usr/wang,故相对路径为‥/ast/xxx文件实际上是usr目录下的文件,故绝对路径名是/usr/ast/xxx。 7. 一个UNIX文件F的存取权限为:rwxr-x---,该文件的文件主uid=12,gid=1,另一个用户的uid=6, gid=1,是否允许该用户执行文件F? 答:F的存取权限为:rwxr-x---,表示文件主可对F进行读、写及执行操作,同组用户可对F进行读及执行操作,但其他用户不能对F操作。因为另一用户的组标识符gid相同,所以,允许访问。 8. 设某文件为连接文件,由5个逻辑记录组成,每个逻辑记录的大小与磁盘块大小相等,均为512 字节,并依次存放在50、121、75、80、63号磁盘块上。若要存取文件的第1569逻辑字节处的信息,问要访问哪一个磁盘块? 答:1569/512得到商为:3,余数为:33。所以,访问的是75磁盘块的第33个字节。 9. 一个UNIX/Linux文件,如果一个盘块的大小为1KB,每个盘块占4个字节,那么,若进程欲访 问偏移为263168字节处的数据,需经过几次间接? 答:UNIX/Linux文件系统中,直接寻址为10块,一次间接寻址为256块,二次间接寻址为2562块,三次间接寻址为2563块。 偏移为263168字节的逻辑块号是:263168/1024=257。块内偏移量=263168-257×1024=0。由于10<257<256+10,故263168字节在一次间接寻址内。 34 《操作系统教程》(第三版)CH1应用题参考答案 10. 设某个文件系统的文件目录中,指示文件数据块的索引表长度为13,其中0到9项为直接寻址方 式,后3项为间接寻址方式。试描述出文件数据块的索引方式;给出对文件第n个字节(设块长512字节)的寻址算法. 答:索引表长度为13,其中0到9项为直接寻址方式,后3项为一次、二次和三次间接寻址。 步1 将逻辑文件的字节偏移量转换为文件的逻辑块号和块内偏移。方法是:将逻辑文件的字节偏移量n/盘块大小(512),商为文件的逻辑块号,余数是块内偏移。 步2将文件的逻辑块号转换为物理块号。使用多重索引结构,在索引节点中根据逻辑块号通过直接索引或间接索引找到对应物理块号。再判别逻辑块号在10块以内或以上,分别采用可直接寻址,一次、二次和三次间接寻址。 11. 设文件ABCD为定长记录的连续文件,共有18个逻辑记录。如果记录长为512B,物理块长为 1024B,采用成组方式存放,起始块号为12,叙述第15号逻辑记录读入内存缓冲区的过程。 答:采用成组方式存放,块因子为2。由于共有18个逻辑记录,故占用了9个物理块,而第15号逻辑记录占用的是第15/2=8(向上取整)物理块。因为,是连续文件物理块也是连续的,所以,该逻辑记录占用的是12+8-1=19块。所以,第15号逻辑记录读入内存缓冲区的过程如下:根据块因子,计算占用的相对物理块号8;根据起始块号为12,计算出绝对物理块号19;把物理块号19读入内存缓冲区;把所要的逻辑记录分解出来。 12. 若某操作系统仅支持单级目录,但允许该目录有任意多个文件,且文件名可任意长,试问能否模 拟一个层次式文件系统?如能的话,如何模拟。 答:可以,文件名中可以用插入多个“/”来模拟文件分层。例如/usu1/datafile/data1和/user1/datafile/data2。但在此操作系统中,这些仅仅是包含“/”的单个文件名。 13. 文件系统的性能取决于高速缓存的命中率,从高速缓存读取数据需要1ms,从磁盘读取数据需要 40ms。若命中率为h,给出读取数据所需平均时间的计算公式,并画出h从0到1变化时的函数曲线。 答:读取数据所需平均时间T=h×1+40×(1-h)=h+40×(1-h)。 T(ms) .30 . . . . . 20 . . . . .10 . . . . . h(%) 0 .2 . 3 .4 .5 .6 .7 .8 .9 14. 有一个磁盘组共有10个盘面,每个盘面有100个磁道,每个磁道有16个扇区。若以扇区为分配 35 《操作系统教程》(第三版)CH1应用题参考答案 单位,现问:(1)用位示图管理磁盘空间,则位示图占用多少空间?(2)若空白文件目录的每个目录 项占5个字节,则什么时候空白文件目录大于位示图? 答: (1)磁盘扇区总数为:10×16×100=16000个,故位示图占用16000/8=2000字节。 (2)己知空白文件目录的每个目录项占5个字节,而位示图占用2000字节,也就是说2000字节可容 纳400个文件目录项。当空白文件目录>400时,空白文件目录大于位示图。 15. 某磁盘共有100个柱面,每个柱面有8个磁头,每个盘面分4个扇区。若逻辑记录 与扇区等长,柱面、磁道、扇区均从0起编号。现用16位的200个字(0-199)来组成位示图来管理盘空间。现问:(1)位示图第15个字的第7位为0而准备分配给某一记录,该块的柱面号、磁道号、扇区号是多少?(2)现回收第56柱面第6磁道第3扇区,这时位示图的第几个字的第几位应清0? 答:(1)位示图第15个字的第7位对应的块号=15×16(字长)+7=247,而块号247对应的: 柱面号=247/(8×4)=7(从0编号,向下取整) 磁头号=(247 MOD 32)/4=5 扇区号=247 MOD 32 MOD 4=3 (2)块号=柱面号×柱面扇区数+磁道号×盘扇区+盘扇区=56×(8×4)+6×4+3=1819 字号=1819/16=113 位号=1819 MOD 16 =11 所以,回收第56柱面第6磁道第3扇区时,位示图的第113字的第11位应清0。 16. 如果一个索引节点为128B,指针长4B,状态信息占用68B,而每块大小为8KB。问在索引节点 中有多大空间给指针?使用直接、一次间接、二次间接和三次间接指针分别可表示多大的文件? 答:由于索引节点为128B,而状态信息占用68B,故索引节点中用于磁盘指针的空间大小为:128-68=60字节。 一次间接、二次间接和三次间接指针占用三个指针项,因而直接指针项数为:60/4-3=12个。每块大小为8KB。所以,直接指针时:12×8192=98304B。 一次间接指针时:8192/4=2048,即一个磁盘块可装2048个盘块指针,2048×8192=16MB。 二次间接指针时:2048×2048=4M,即二次间接可装4M个盘块指针,4M×8192=32GB。 三次间接指针时:2048×2048×2048=8G,即三次间接可装8G个盘块指针,8G×8192=16TB。 17. 设一个文件由100个物理块组成,对于连续文件、连接文件和索引文件,分别计算执行下列操作 时的启动磁盘I/O次数(假如头指针和索引表均在内存中):(1)把一块加在文件的开头;(2) 把一块加在文件的中间(第51块);(3) 把一块加在文件的末尾;(4)从文件的开头删去一块;(5)从文件的中间(第51块)删去一块;(6)从文件的未尾删去一块。 答: 操作名称 连续文件 链接文件 索引文件 加一块到文件开头 201 1 1 加一块到文件中间 101 51 1 加一块到文件末尾 1 2 1 从文件头删去一块 0 1 1 删去文件中间块 98 52 1 从文件尾删去一块 0 100 1 36