- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章磁盘存储器的管理
上次课回顾 * * * * ? 8.2 文件存储空间的管理与内存分配相似,连续分配或离散分配,基本单位:磁盘块8.2.1 空闲表法和空闲链表法1. 空闲表法1) 空闲表空闲表法属于连续分配方式,它与内存的动态分配方式类似。它为每个文件分配一块连续的存储空间。系统也为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其起始盘块号递增的次序排列,如图8-9所示。 图8-9 空闲盘块表 2) 存储空间的分配与回收空闲盘区的分配与内存的分区(动态)分配类似,同样是采用首次适应算法和最佳适应算法等,它们对存储空间的利用率大体相当,都优于最坏适应算法。在系统为某新创建的文件分配空闲盘块时,先顺序地检索空闲表的各表项,直至找到第一个其大小能满足要求的空闲区,再将该盘区分配给用户(进程),同时修改空闲表。 系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法,即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。 应该说明,在内存分配上,很少采用连续分配方式,然而在外存的管理中,由于这种分配方式具有较高的分配速度,可减少访问磁盘的I/O频率,故它在诸多分配方式中仍占有一席之地。例如,在前面所介绍的对换方式中,对对换空间一般都采用连续分配方式。对于文件系统,当文件较小(1~4个盘块)时,仍采用连续分配方式,为文件分配相邻接的几个盘块;当文件较大时,便采用离散分配方式。 对于多媒体文件,为了能减少磁头的寻道时间,也采用连续分配方式。 2. 空闲链表法空闲链表法是将所有空闲盘区拉成一条空闲链。根据构成链所用基本元素的不同,可把链表分成两种形式:(1)空闲盘块链。是将磁盘上的所有空闲空间,以盘块为单位拉成一条链。当用户因创建文件而请求分配存储空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户。当用户因删除文件而释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末尾。这种方法的优点是用于分配和回收一个盘块的过程非常简单,但在为一个文件分配盘块时,可能要重复操作多次。 (2)空闲盘区链。是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。每个盘区上除含有用于指示下一个空闲盘区的指针外,还有指明盘区大小(盘块数)的信息。分配盘区的方法与内存的动态分区分配类似,通常采用首次适应算法。在回收盘区时,同样也要将回收区与相邻接的空闲盘区相合并。为了提高对空闲盘区的检索速度,可以采用显式链接方法,亦即,在内存中为空闲盘区建立一张链表。 这种方法的缺点是用于分配和回收的过程非常复杂,但在效率较高,每次分配多个连续的块,而且链较短。 8.2.2 位示图法1. 位示图位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配(或者相反)。由所有盘块所对应的位构成一个集合,称为位示图。 位示图也可描述为一个二维数组map: Var map: array of bit; 通常可用m × n个位数来构成位示图,并使m × n等于磁盘的总块数,如图8-10所示。 图8-10 位示图 2. 盘块的分配根据位示图进行盘块分配时,可分三步进行: (1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲)。 (2) 将所找到的二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示图的第i行、第j列,则其相应的盘块号应按下式计算: b?=?n(i?-?1)?+?j式中,n代表每行的位数。 (3) 修改位示图,令map[i, j]?=?1。 3. 盘块的回收盘块的回收分两步: (1) 将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为: i?=?(b?-?1)DIV? n?+?1 j?=?(b?-?1)MOD ?n?+?1 (2) 修改位示图。令map[i, j] =?0。 这种方法的主要优点是:从位示图中很容易找到一个或一组相邻接的空闲盘块。例如,我们需要找到6个相邻接的空闲盘块,这只需在位示图中找出6个其值连续为“0”的位即可。此外,由于位示图很小,占用空间少,因而可将它保存在内存中,进而使在每次进行盘区分配时,无需首先把盘区分配表读入内存,从而节省了许多磁盘的启动操作。因此,位示图常用于微型机和小型机中,如CP/M、Apple-DOS等OS中。 8.2.3 成组链接法空闲表法和空闲链表法不适用于大型文件系统,因为会使空闲表或者链表太长,所以UNIX
文档评论(0)