第28讲文件管理之文件存储空间管理

第28讲文件管理之文件存储空间管理

ID:35480564

大小:116.12 KB

页数:4页

时间:2019-03-25

第28讲文件管理之文件存储空间管理_第1页
第28讲文件管理之文件存储空间管理_第2页
第28讲文件管理之文件存储空间管理_第3页
第28讲文件管理之文件存储空间管理_第4页
资源描述:

《第28讲文件管理之文件存储空间管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第二十八讲文件管理之文件存储空间管理文件存储空间的管理,就是空闲空间的管理。卜-而介绍儿个常用的管理方法:1空闲表法和空闲链表法1.1空闲表法空闲表:系统为空闲区建立--张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其起始盘块号递增的次序排列,如下图。序号第一空闲盘块号空闲盘块数12429331554——存储空间的分配和回收:>与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。>内存管理中虽然很少采用连续分配

2、方式,然而在外存的管理中,山于它具有较高的分配速度,可减少访问磁盘的I/O频率,故仍可采用连续分配算法。1.2空闲链表法空闲链表法是将所有空闲盘区拉成一条空闲链。根据构成链所用基本元素的不同,町把链表分成两种形式:1.空闲盘块链:将磁盘上的所有空闲空间,以盘块为单位拉成一条链。分配存储空间吋,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户。释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末尾。优点:是用于分配和回收一个盘块的过程非常简单缺点:是分配盘块时,可能要重复操作多次2.空闲盘区链:

3、将磁盘上的所有空闲盘区(每个盘区可包含若干盘块)拉成一条链。>在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小的信息。>分配盘区的方法与内存动态分区分配类似,通常采用首次适应算法。>在冋收盘区时,同样也要将冋收区与相邻的空闲盘区相合并。>在采用首次适应算法时,为提髙对空闲盘区的检索速度,可以采用显式链接方法,亦即,在内存中为空闲盘区建立一张链表。2位示图法2.1什么是位不图?位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。0表示盘块空闲,1表示已分配。磁盘上所有盘块所

4、对应的位构成一个集合,称为位示图。通常可用个位数来构成位示图,并使m*n等于磁盘的总块数。如下图。可看成是二维数组。123456789101112110010nn111n、丿JLvz1000001011二0011二nnfl11n1011u2.2盘块的分配根据位示图进行盘块分配时,可分三步进行:1)顺序扫描位示图。找到0二进制位。2)将所找到的一个或一组二进制位,转换成与Z对应的盘块号。盘块号=列数*(i-1)+j;(ij,b(盘块号)都从1开始)盘块号二列数*i+j+l;(i,j从0开始,b从1开始

5、)3)修改位示图。令map[I,j]=li,j,b(盘块号)都从1开始。2.3盘块的回收盘块的回收分两步:1)将冋收盘块的盘块号转换成位示图中的行号和列号。转换公式为(i,j,b(盘块号)都从1开始):匸(盘块号・1)列数+1j=(盘块号-l)mod列数+1i,j从0开始,b从1开始:i=(盘块号・1)列数j=(盘块号-1)mod列数2)修改位示图。令maplI,jJ=0公式中减1加1的目的是凑齐最后一列的得数!优点是从位示图中很容易找到一个或一•纟II相邻接的空闲盘块。常用于微型机和小型机中。

6、3成组链接法3.1引入空闲表法和空闲链表法都不适川于大型文件系统,因为这会使空闲表或空闲链表太长。在UNIX系统中采用的是成组链接法是将上述两种方法结合而形成的一种空闲盘块管理方法,它兼备了上述方法的优点而克服了表太长的缺点。3.2空闲盘块的组织>空闲盘块号栈。用来存放当前可用的一组空闲盘块的盘块号(最多含100住),以及栈中尚有的空闲盘块号数N。引入一个数据结构,栈>N述兼作栈顶指针。例如当N=100时,它指向S.free(99)oS.free(O)是栈底,栈满时栈顶为S.free(99)o实际上

7、就是利用N-1来做下标。>文件中的所有空闲盘块,被分成若干个组,如有100000个盘块,每100块为1组,将会分成1000个组。>将每一组含有的盘块总数N和该组的盘块号,记入其前一组的第一个盘块的S.free(0)~S.free(99)中。这样由各组的第一个盘块形成了一条链。>将第一组的盘块总数和所有的盘块号,记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。>最末一组只有99个盘块,其盘块号分别记入其前一组的S.free(l)〜S.free(99)中,而在S.free(O)中则存放0,作为空闲盘块

8、链的结束标志。空闲盘块的成组链接法示意图100400•399•栈301—Ir30029920140039933空闲盘块的分配>首先检查空闲盘块号栈是否上锁,如没有,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给川户,然后将栈顶指针下移一格>若该盘块号己是栈底,即S.free(O),这是当前栈中最后一个可供分配的盘块号。山于在该盘块号所对应的盘块中即有下一组可用的盘块号,因此须调用磁盘读过程,将该盘块内容读入栈中,作为盘块号栈的新内容,并把原栈底盘块分配出去。3.4空

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。