- 1、本文档共148页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统PPT教学课件-第6章_文件管理
图 6-21 位示图 位示图也可描述为一个二位数组map: Var map : array of bit; 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]=1。 这种方法的主要优点是,从位示图中很容易找到一个或一组相邻的空闲盘块。此外,位示图很小,占用空间很少,因而可以将它保存在内存中,进而可使在每次进行盘区分配时,无需首先将盘区分配表读入内存,从而节省了许多磁盘的启动操作。因此位示图常用于微型机和小型机操作系统中。 6.5.3 成组链接法 1. 空闲盘块的组织 空闲表法和空闲链表法都不适用于大型文件系统,因为这会使空闲表或空闲链表太长。在Unix系统中采用了成组链接法,这是将上述两种方法相结合而形成的一种空闲盘块管理方法,它兼备了上述两种方法的优点而克服了两种方法中表太长的缺点。 ⑴ 空闲盘块号栈:空闲盘块号栈用来存放当前可用的一组空闲盘块的盘块号(最多含100个号),以及栈中尚有的空闲盘块号N。顺便指出,N还兼作栈顶指针用。例如当N=100时,它指向S.free(99)。由于栈是临界资源,每次只允许一个进程去访问,故系统为栈设置了互斥锁。图6-23示出了空闲盘块的成组链接法。 图 6-23 空闲盘块的成组链接法 其中,S.free(0)表示栈底,栈满时的栈顶为S.free(99)。 ⑵ 文件区中的所有空闲盘块被分成若干个组,比如,将每100个盘块作为一组。假定盘上共有10000个盘块,每个盘块大小为1KB,其中第201~7999号盘块用于存放文件,即作为文件区,这样,该区的最末一组盘块号应为7901~7999,次末组为7801~7900,…,第二组的盘块号为301~400;第一组为201~300,如图6-23所示。 ⑶ 将每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块的S.free(0)~S.free(99)中。这样,由各组的第一个盘块可链成一条链。 ⑷ 将第一组的盘块总数和所有的盘块号记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。 ⑸ 最末一组只有99个盘块,其盘块号分别记入其前一组的S.free(1)~S.free(99)中,而在S.free(0)中则存放“0”,作为空闲盘块链的结束标志。(注:最后一组的盘块数应为99个,而不是100个,因为这是指可供使用的空闲盘块,其编号应为1~99,0号中存放空闲盘块链的结束标志。) 2. 空闲盘块的分配与回收 当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底, 即S.free(0),这是当前栈中最后一个可分配的盘块号。由于在该盘块号所对应的盘块中记有下一组可用的盘块号,因此, 须调用磁盘读过程,将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去(其中的有用数据已读入栈中)。 然后,再分配一相应的缓冲区(作为该盘块的缓冲区)。最后,把栈中的空闲盘块数减1并返回。 在系统回收空闲盘块时,须调用盘块回收过程进行回收。它是将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空闲盘块号数目已达100时, 表示栈已满,便将现有栈中的100个盘块号, 记入新回收的盘块中,再将其盘块号作为新栈底。 6.6 文件共享与文件保护 在现代计算机系统中,必须提供文件共享手段,即系统应允许多个用户(进程)共享同一份文件。这样,在系统中只需保留该共享文件的一份副本。如果系统不能提供文件共享功能,就意味着凡是需要该文件的用户,都须各自备一份该文件的副本,显然这会造成对存储空间的极大浪费。随着计算机技术,特别是计算机网络技术的发展,文件共享的范围由原来的单机共享,发展为局
文档评论(0)