详见教材第5章习题5-9、5-10、5-13、5-14、5-15。
5-9.
文件存储空间可采用成组自由块链表或位示图。若一个磁盘有B个盘块,其中有F个自由块,盘空间用D位表示。试给出使用自由块链表比使用位示图占用更少的空间的条件。当D为16时,给出满足条件的自由空间占整个空间的百分比。
一磁盘有B个盘块,用位图表示要使用B位
成组自由块链表需要存储 F 个空闲盘块的地址,总共占用位数为 F×D。 位示图需要用 B 位来标示全部盘块的占用情况。
所以当F×D<B 时,链表比位示图更省空间。
当D=16时,满足条件的自由空间占整个空间的百分比为
F/B<1/16=6.25%。
5-10.
文件系统的执行速度依赖于缓冲池中找到盘块的比率。假设盘块从缓冲池读出用1ms,从盘上读出用40ms,从缓冲池找到盘块的比率为n,请给出一个公式计算读盘块的平均时间,并画出n从0到1.0的图像。
读一个盘块的平均时间=n+40(1-n)=40-39n
5-13.
磁盘上有一个链接文件A,有10个记录,每个记录的长度为256B,存放在5个磁盘块中,如图所示。若要访问该文件的第1574字节数据,应该访问哪个磁盘块?要访问几次磁盘才能将该字节的内容读出?
| 物理块号 | 链接指针 |
|---|---|
| 5 | 7 |
| 7 | 14 |
| 14 | 4 |
| 4 | 10 |
| 10 | 0 |
1574/256 = 6.....38
所以要访问的文件在第七个记录的38B位置。每个物理块放两个记录,所以要访问的物理块号是4的第38个字符。
要访问4次磁盘
5-14.
一个文件系统中,当前只有根目录被缓存到主存。假定所有目录文件都只占用一个磁盘块,那么要打开文件/usr/lim/course/os/result.txt,共需要多少次磁盘操作?
根目录:已在主存,不需要磁盘访问
usr:需要 1 次
usr/lim:需要 1 次
usr/lim/course:需要 1 次
usr/lim/course/os:需要 1 次
读取文件本身块:需要 1 次
5次
5-15.
一个文件系统采用索引结构来组织文件,且索引表的内容只包含存储文件的磁盘块号。假定一个索引项占2B,磁盘块大小为16KB,磁盘空间为1GB。
现有一个目录只包含3个文件,大小分别为10KB,1089KB,129MB。若忽略目录文件占用的空间,请问存储这些文件要占用该磁盘多少空间?
1GB=230 ,16KB=214 , 230/214 =216 ,每个磁盘块号需要2个字节表示,即2B。
(1)10KB<16KB, 所以,只占用1个磁盘块。
(2)1089KB/16KB=69 需一个索引块和69个数据块,共70个盘块。
(3)129MB/16KB=8256 , 16KB/2B=8K(个索引项)<8256
所以,需2个一级索引表和一个1个二级索引表,8256个数据块。
共需8259个磁盘块。
