思考题:一个文件系统中有一个 20MB 大文件和一个 20KB 小文件 ,当分别采用连续、
隐式链接、链接索引 、二级索引和 LINUX 分配方案时,每块大小为 4096B,每块地址用
4B 表示,问 :
(1)各文件系统管理的最大的文件是多少 ?
(2)每种方案对大、 小两文件各需要多少专用块来记录文件的物理地址 (说明各块的用
途) ?
(3)如需要读大文件前面第 5.5KB 的信息和后面第( 16M +5.5KB)的信息,则每个
方案各需要多少次盘 I/O 操作 ?
答:
(1)连续分配:理论上是不受限制,可大到整个磁盘文件区。
?隐式链接: 由于块的地址为 4 字节, 所以能表示的最多块数为 2
32
=4G,而每个盘块中
存放文件大小为 4092 字节。链接分配可管理的最大文件为: 4G×4092B=16368GB
?链接索引: 由于块的地址为 4 字节, 所以最多的链接索引块数为 2
32
=4G,而每个索引
块有 1023 个文件块地址的指针, 盘块大小为 4KB 。假设最多有 n个索引块,则 1023×n+n=2
32
,
算出 n=2
22
,链接索引分配可管理的最大文件为: 4M*1023*4KB=16368GB
? 二级索引:由于盘块大小为 4KB ,每个地址用 4B 表示,一个盘块可存 1K 个索引表
目。
二级索引可管理的最大文件容量为 4KB ×1K ×1K= 4GB。
? LINUX 混合分配: LINUX 的直接地址指针有 12 个,还有一个一级索引,一个二级
索引,一个三级索引。因此可管理的最大文件为 48KB + 4MB+4GB +4TB 。
(2)?连续分配: 对大小两个文件都只需在文件控制块 FCB 中设二项, 一是首块物理块
块号,另一是文件总块数,不需专用块来记录文件的物理地址。
? 隐式链接:对大小两个文件都只需在文件控制块 FCB 中设二项,一是首块物理块块
号,另一是末块物理块块号;同时在文件的每个物理块中设置存放下一个块号的指针。
?一级索引:对 20KB 小文件只有 5 个物理块大小,所以只需一块专用物理块来作索引
块,用来保存文件的各个物理块地址。对于 20MB 大文件共有 5K 个物理块,由于链接索引
的每个索引块只能保存 (1K -1)个文件物理块地址 (另有一个表目存放下一个索引块指针) ,
所以它需要 6 块专用物理块来作链接索引块,用于保存文件各个的物理地址。
? 二级索引:对大小文件都固定要用二级索引,对 20KB 小文件,用一个物理块作第一
级索引,用另一块作二级索引,共用二块专用物理块作索引块,对于 20MB 大文件,用一
块作第一级索引,用 5 块作第二级索引,共用六块专用物理块作索引块。
? LINUX 的混合分配: 对 20KB 小文件只需在文件控制块 FCB 的 i_addr[15] 中使用前 5
个表目存放文件的物理块号,不需专用物理块。对 20MB 大文件, FCB 的 i_addr[15] 中使用
前 12 个表目存放大文件前 12 块物理块块号( 48K ),用一级索引块一块保存大文件接着的
1K 块块号( 4M),剩下还有不到 16M,还要用二级索引存大文件以后的块号,二级索引使
用第一级索引 1 块,第二级索引 4 块(因为 4KB ×1K×4=16 M )。总共也需要 6 块专用物
理块来存放文件物理地址。
(3) ?连续分配:为读大文件前面和后面信息都需先计算信息在文件中相对块数,前面
信息相对逻辑块号为 5.5K /4K=1(从 0 开始编号),后面信息相对逻辑块号为 (16M +5.5K)
/4K=4097 。再计算物理块号=文件首块号+相对逻辑块号, 最后化一次盘 I/O 操作读出该块
信息。
?链接分配:为读大文件前面 5.5KB 的信息,只需先读一次文件头块得到信息所在块的
块号,再读一次第 1 号逻辑块得到所需信息, 共 2 次。而读大文件 16MB +5.5KB 处的信息,
逻辑块号为( 16M+5.5K )/4092=4107,要先把该信息所在块前面块顺序读出,共化费 4107