-- 作者:tonystill
-- 发布时间:12/26/2006 9:38:00 AM
-- 大家看看我做的文件系统的一些课后题,做的很差,望指点!
求助! 各位高手,大家好!由于本人文件系统学的很差,所以我把os新版的教材简单做了做,有些会做,但不知如何阐述,有些就根本不会做,在这里贴一些我做的,希望大家多多批评,多多指点,指出错误!其中有些题目的答案是在此网站上找的。 我做了一些题,其它的不怎么会,懂也不知道该怎么阐述,大家多帮帮忙! 4. 706/248 = 2; 0--247; 248--495; 496--743; 应该读出两个。 5. 文件的最大尺寸(单位:磁盘块)分别为: 直接磁盘块指针方法:1024 一重索引方法:10242 两重索引方法:10243 三重索引方法:10244 或按I节点的方式理解: 直接盘块指针:12 一重索引方法:12+1024 二重索引方法:12+1024+10242 三重索引方法:12+1024+10242+10243 6. 不能。 64k * 512bytes = 32M < 512M 7. 文件目录是文件控制块的有序集合,它使得文件系统按名存取,即文件符号名到物理地址映射成为可能,所以文件目录主要提供检索目录的功能。 一个目录项主要包括文件名,文件代号,用户名,文件物理位置等。 9.书中有 层次清晰 解决了文件重名问题 查找搜索速度快 10. 1)偏移量为8192,处理方式如下: ① 读入I节点到内存;(这里I节点可以看作一个指针数组) ②根据I节点的第9个指针即可找到相应的磁盘块。 (2)偏移量为640000,因为前面12个指针所能寻址的范围是1024*12-1=12287;第13个指针指向一个索引表,增加的寻址范围是262144,仍然小于640000;第14个指针增加的寻址范围是67108864,已经超过了640000,因此过程如下: ① 读入I节点到内存 ②根据第14个指针找到了2级索引表,然后根据它的第2个表项找到1级索引表,此时,1级索引表的第102个表项的指向的磁盘块即为所求。(这个索引项所指磁盘块的始址恰好为12287+262144*2+1024*101+1=640000) 12(1)一个文件的所有块可以通过下面三种途径找到:直接通过FCB找到前10块,通过一级索引找到256块,通过二级索引找到256*256块,通过三级索引找到256*256*256块,所以一个文件最大可以有10+256+256^2+256^3=16,843,018块 如果要找\A\D\G\I\K中的某一块,首先要找到其FCB,最好的情况是:每次读取目录描述信息的时候都在第一块找到下级目录或文件,所以要找到该文件至少要读取A、D、G、I四个目录项的第一块,读取K的FCB,总共5次启动硬盘;最坏情况是:每次读取目录描述信息的时候都在最后一个块找到下级的目录或文件,所以要找到该文件,所以要找到该文件至少要读取A的第一块,D、G、I三个目录项的所有四个块,在读取K的FCB,总共要1+4*3+1=14次启动硬盘。找到FCB后在读取某一块,如果这一块在前10块之列,那么在启动一 次硬盘就可以找到这一块,如果这一块在最后一块,则可能需要通过三级索引找到这一块,这总共需要读取三级索引和最后一块共3+1次读取硬盘。综上,最好情况下只需要启动5+1次硬盘,最坏情况需要启动14+3+1=18次硬盘 若要减少硬盘启动的次数,第一可以对于经常访问的文件项或者目录进行项缓存,第二可以用散列表将常用的文件和目录进行散列,第三增减常驻内存的目录描述的数量(可以考虑将所有的一级和二级目录常驻内存),第四减少文件描述项的大小,使得每一块可以存放更多的文件描述项(更祥细的文件描述信息可以转存他处。) (2)为读取FCB所启动的硬盘次数和(1)一样,那么读取第75块最少需要5+75=80次硬盘,最多需要启动14+75=89次硬盘。 13. 在实现文件系统时,为加快文件目录的检索速度,可利用“文件控制块分解法”。 假设目录文件存放在磁盘上,每个盘块512 字节。文件控制块占64 字节,其中文件名占8字节,文件控制块分解后,第一部分占有10字节(包括文件名和文件内部号),第二部分占56字节(包括文件内部号和文件其他信息)。 (1)假设某一目录文件共有256个文件控制块,试分别给出采用分解法前和分解法后,查找该目录文件的一个文件控制块的平均访盘次数。 (2)一般地,若目录文件分解前占用n个盘块,分解后改用m个盘块存放文件名和文件内部号部分,请给出访盘次数减少的条件。 答: 1) 分解前,每一块可以存放512/64=8个文件控制块,256个文件需要32个块,所以平均需要访盘(1+32)/2=16.5次 分解前,每一块可以存放512/10=51个文件控制块第一部分,256个文件需要256/51=6个块,再加上读取文件控制块的第二部分,平均访盘(1+6)/2+1=4.5次 2)不会。 14. 用三位二进制表示一个块的信息 循环对每个块进行操作: 检测一个块时,检测位置1,表示已检测再判断 1)若已分配,分配位写1 2)若未分配,分配位写0 3)若坏块,坏块位写1 直到整个位示图检测完毕。 15. create和open命令的目的和功能是创建和打开文件。 不能只有一个。 若只有一个,设用create命令可完成建立和打开操作,那么当要找开一个已存在文件时,就不能成功,反之亦然. 18. 文件分配的位示图应该保存在内存中,因为系统要对它进行频繁的操作,若存在外存则效率太低。 19. 对于记录大小小于物理块大小的文件,将几个记录组全在一起放在一个块中,而不是分别放在一个块中,这样就达到了提高存储空间的目的。 20. 1).2048 / 80 约= 26 100 / 26 约= 4 占用了4个块; 26 2) 不会 21. 1).(800 * 180) / (800*500 + 800*180) = 9 / 34 约= 26.4/100 2).约= 73/100 3).块因子至少为8 22. 1) 文件保护,设置安全权限避免一些用户进行越权操作 2) 要有避免数据丢失的机制 3) 能够防范入侵者 4) 病毒防御 5) 要能具有一定的防范入侵功能。 25. 识别分三类:你知道什么?你有什么?你是谁? 27. (1)SSTF 磁头移动顺序:143,147,150,130,102,94,91,86,175,177 移动总量:首先划分分成三段(143~150,150~86,86~177),然后计算,移动总量为(150-143)+(150-86)+(177-86)=162 (2)SCAN 磁头移动顺序:143,147,150,175,177,130,102,94,91,86 移动总量:只需要划分成两段(143~177,177~86),移动总量为(177-143)+(177-86)=125 总结:SCAN通过减少方向改变的次数减少了磁头移动的总量。 28. 6 2 1 4 3 5 两个考虑点,一个是柱面号 另一个是扇区号 29. 1) 200 ms 2) 42ms A C E G I B D F H J 30. 1) 文件系统不一致现象的发生主要发生在当系统正在对某一文件进行操作的时候系统突然停机造成的。文件系统不一致可以有以下几种情况:某一块既在空闲块表中又在分配块表中,某一块既不空块表中又不在分配块表中,某一块同时被分配给两个文件;某一块同时出现在两个空闲块表中(在位示图中不会出现)。这四种情况的危害如下:第一种情况可能造成一个有用的块被系统当成空闲块在分配给其他的文件;第二种情况可能造成块的“丢失”;第三种情况可能造成原本两个不同的文件由于共同拥有了这一块,从而在一个文件修改这一块的时候也同时修改了另一个文件的内容;第四种情况可能造成当这一块被分配的时候,没有修改所有的空闲块表,从而使得这一块在另一张表上还是空闲的。 2) 出现的错误 a.块2同时出现在空闲块表和分配块表中 b.块9在分配块表中出现两次 c.块11不出现在任何表中 d.块15在空闲块表中出现两次 解决方法 a.在空闲块表中将块2除去 b.将块9的内容拷贝到一个空块中,用这个快替换其中一个文件的块9 c.将其添加到空闲块表中 d.重建空闲块表 31. 1)处理者: 磁盘空间管理模块 处理方法和过程: 有预防和治理两种策略。预防方面,可以使用较好的文件物理结构安排,尽是避免出现碎片,例如采用索引结构或I节点而不是顺序结构可能会减少磁盘碎片的产生;治理方面,无论采用哪种物理结构,碎片总是不可避免的,经过一段时间的使用,磁盘碎片总会严重到一定程度,因此,文件系统要向用户提供磁盘碎片整理功能,在用户提出碎片整理请求进行文件系统的整理,对文件的存储位置进行适当调整。 2)处理者:目录管理模块 处理方法和过程:使用两级目录或多级目录结构都可以实现这一功能。不同的,如果处在不同的目录下,就可以拥有相同的文件名。 3)处理者:存取管理模块 处理方法和过程: 这一功能主要是为了提高文件系统的性能。方法是利用程序访问的局部性原理,在内存中保存一些经常使用的存储快。当用户提出文件访问请求时,并行的在块高速缓存和硬盘上查找相应的内容,如果在块高速缓存中找到,则停止硬盘上的查找。如果请求的内容不再块高速缓存中,则将其调入块高速缓存(当然,可能会有一些淘汰和置换的问题)。 4)处理者:磁盘空间管理模块 处理方法和过程: 处理方法依文件物理结构的不同而不同。基本的思想是根据一定的算法在FSL(Free Space List)中找到相应的磁盘空间(如果没有跔的空间,则报错),然后在文件的相应数据结构,例如在索引文件结构下,要建立相应的索引表项,并填写适当的数值。 32. 不知从哪里开始答题。望高手指点。
|