Linux文件系统课后作业

1、某磁盘文件空间共有500个磁盘块,若用字长为32位的位示图管理磁盘,试问:

(1)位示图需要多少个字节?
(2)第i字节的第j位对应的块号是多少?

(1)500/32=15.625,需要16字节

(2)对应的盘块号为:32 * i + j

2、若盘块大小为4KB,块地址用4字节表示,文件系统采用索引组织方式,索引项0至索引项9为直接索引,索引项10为一级间接索引,索引项11为二级间接索引,索引项12为三级间接索引。若文件索引节点已在内存中,请计算读出文件以下位置处1500字节数据,需要读写多少个磁盘块?

(1)9000
(2)180000
(3)4200000

(1) 9000 / 4k= 2.197265625 位置9000位于索引项2

​ (9000 + 1500) /4k = 2.5634765625 位置(9000 + 1500)位于索引项2 则需要读写磁盘块1个

(2)180000/4k=43.9453125

​ (180000+ 1500)/4k = 44.3115234375 位于索引项10 需要读写磁盘块3个

(3)4200000 / 4k = 1,025.390625

​ (4200000+ 1500) / 4k = 1,025.7568359375 位于索引项10 需要读写磁盘块2个

3、某计算机系统采用如前面图4-24所示的位示图(行号、列号都从0开始编号)来管理空闲盘块。如果盘块从0开始编号,每个盘块的大小为1KB。

在这里插入图片描述

(1)现在要为文件分配两个盘块,试具体说明分配过程。
(2)若要释放磁盘的第1000盘块,应如何处理?
(3)假设全局数组变量short bm [N]表示的位示图已读入内存,写出返回一个空闲盘块号的分配函数alloc (),以及归还一个盘块b的回收函数int release (intb)的描述代码。

(1)寻找一个空闲磁盘块,挂到文件的磁盘块链尾,并修改文件的FCB。

(2)查找FAT,寻找第1000盘块的位置,删除该位置上的信息,并删除其他链接到这个位置的指针。

扫描二维码关注公众号,回复: 12992541 查看本文章

​ (3)

int alloc()
{
    
    
	for(int i = 0; i < N; i++)
        for(int j = 0; j < 16; j++)
        {
    
    
            if(!(bm[i] & 1 << j)
                return i*16 + j+1;
        }
    return -1;
}
               
int release (int b)
{
    
    
	int bx = b / 16;
    int by = b % 16;
    bm[bx] &= ~(1 << by);
    return 0;
}

4、假设磁盘上某系统的逻辑块和物理块的大小都为4KB,盘块号用4字节存者假设每个文件的属性信息已经在内存中。针对三种分配方法(连续分配、链接分配和索引分配),假设当前处在逻辑块10(最后访问的是逻辑块10),现在想访问逻辑块4,那么必须从磁盘上读多少个物理块?给出原因。

1(直接访问) 4(依次访问逻辑块) 2(先读取索引结点,再获得直接索引访问)

5、某文件系统的目录结构如图4-30所示,采用一体化目录,每个目录项占256B,磁盘块大小为512B。假设当前目录为根目录。

在这里插入图片描述

(1)文件Wang的路径是什么?
(2)系统需要读取哪几个目录文件后才能查到文件Wang?
(3)系统找到文件Wang,至少需要读几个磁盘块?
(4)给出一种加速文件查找速度的目录结构。

(1)/D/DC/DDC/Wang

(2)4个目录文件:/、/D、/D/DC、/D/DC/DDC

(3)7个

(4)采用分解式目录管理

6、考虑一个含有100个数据块的文件。假如文件控制块(和索引块,当用索引分配时)已经在内存中,逻辑块与物理块大小相同。当使用连续、链接、单级索引分配策略时,下列操作各需要多少次磁盘IO操作?假设在连续分配时,在开始部分没有扩张空间,但在结尾部分有扩张空间,并且假设待添加块的信息已在内存中。

(1)在开头增加一块。
(2)在中间增加一块
(3)在末端增加一块。
(4)在开头删除一块。
(5)在中间删除一块。
(6)在末端删除一块。

连续:101、51、1、99、49、0

链接:1、50、100、1、50、100

单级:1、1、1、0、0、0

7、考虑一个使用inode来表示文件的文件系统。磁盘块大小为8kb,指向磁盘块的指针需要4个字节。这个文件系统有12个直接磁盘块,以及单个、双和三重间接磁盘块。在这个文件系统中可以存储的文件的最大大小是多少?

8kb / 4b = 2048

8 * 12 + 8 * 2048 + 8 * 2048 * 2048 + 8 * 2048 * 2048 * 2048 = 68,753,047,648 kb

8、为什么文件分配的位图必须保存在大容量存储器上而不是在主存中?

在系统崩溃或者内存故障的情况下,文件分配的位图不会像存储在主存中那样丢失。

9、对比为顺序和随机文件访问分配磁盘块(连续、链接和索引)的三种技术的性能

顺序文件访问:连续>链接>索引

顺序文件访问:连续>索引>链接

10、使用FAT将文件块链接在一起的链接分配的变体有什么优点?

优点是,在访问存储在文件中间的块时,可以通过追踪存储在FAT中的指针来确定其位置,而不是以顺序方式访问文件的所有单个块以找到指向目标块的指针。大多数FAT都可以在内存中存储,因此可以通过内存访问来确定指针,而不必访问磁盘块。

11、如果一个索引节点为128B,磁盘块指针长4B,状态信息占用68B,每块大小为8KB,试问索引节点中有多大空间留给磁盘指针?使用直接、一次间接、二次间接和三次间接指针分别可表示多大文件?

留给磁盘指针的空间:128 - 68 = 60 B

直接索引个数:60 / 4 - 3 = 12个

直接索引:12 * 8KB = 96 KB

每个磁盘块可保持索引数:8KB / 4B = 2,048 个

一级索引:2048 * 8KB = 16,384KB

二级索引:2048 * 2048 * 8KB = 33,554,432KB

三级索引:2048 * 2048 * 2048 * 8KB = 68,719,476,736

12、考虑磁盘上的一个文件系统,该文件系统同时具有逻辑和物理功能块大小为512字节。假设关于每个文件的信息已经在内存中。对于这三种分配策略(连续、链接和索引),请回答以下问题:

a.在这个系统中如何完成逻辑到物理的地址映射?(对于索引分配,假设一个文件总是小于512块。
b.如果我们当前在逻辑块10(最后访问的块是块10),并且想要访问逻辑块4,必须从磁盘读取多少物理块?

a.连续分配:逻辑地址等于物理地址/盘块大小

链接分配:为整个磁盘或磁盘分区设置一个表,每个表项的序号与磁盘块号对应,其中保持文件下一个数据块(逻辑地址)所在的磁盘号。

​ 索引分配:文件前十条逻辑地址依次保持在直接索引快的盘块号上,接下来的一级索引,二级索引,三级索引依次可保持1024,1024 * 1024,1024*1024*1024条逻辑地址。

b.1 4 2

有些答案不太确定,希望各位大佬能帮忙指正一下有错误的地方

猜你喜欢

转载自blog.csdn.net/Qingyuyuehua/article/details/115146233