8.2.2 位示图法 1. 位示图 位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1”作为空闲标志。(它们在本质上是相同的,都是用一位的两种状态来标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。 ppt课件 图8-10 位示图 ppt课件 2. 盘块的分配 根据位示图进行盘块分配时,可分三步进行: (1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。 (2) 将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示图的第i行、第j列,则其相应的盘块号应按下式计算: b?=?n(i?-?1)?+?j式中,n代表每行的位数。 (3) 修改位示图,令map[i, j]?=?1。 ppt课件 3. 盘块的回收 盘块的回收分两步: (1) 将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为: i?=?(b?-?1)DIV? n?+?1 j?=?(b?-?1)MOD ?n?+?1 (2) 修改位示图。令map[i, j] =?0。 ppt课件 8.2.3 成组链接法 1. 空闲盘块的组织 (1) 空闲盘块号栈,用来存放当前可用的一组空闲盘块的盘块号(最多含100个号),以及栈中尚有的空闲盘块(号)数N。顺便指出,N还兼作栈顶指针用。 ppt课件 图8-11 空闲盘块的成组链接法 ppt课件 (2) 文件区中的所有空闲盘块被分成若干个组,比如,将每100个盘块作为一组。假定盘上共有10000个盘块,每块大小为1 KB,其中第201~7999号盘块用于存放文件,即作为文件区,这样,该区的最末一组盘块号应为7901~7999;次末组为7801~7900,…,倒数第二组的盘块号为301~400;第一组为201~300,如图8-11所示。 (3) 将每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块的S.free(0)~S.free(99)中。这样,由各组的第一个盘块可链成一条链。 ppt课件 (4) 将第一组的盘块总数和所有的盘块号记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。 (5) 最末一组只有99个盘块,其盘块号分别记入其前一组的S.free(1)~S.free(99)中,而在S.free(0)中则存放“0”,作为空闲盘块链的结束标志。(注:最后一组的盘块数应为99,不应是100,因为这是指可供使用的空闲盘块。其编号应为(1~99),0号中放空闲盘块链的结尾标志。) ppt课件 2. 空闲盘块的分配与回收 当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底,即S.free(0),这是当前栈中最后一个可分配的盘块号。 ppt课件 8.3 提高磁盘I/O速度的途径 (1) 改进文件的目录结构以及检索目录的方法来减少对目录的查找时间; (2) 选取好的文件存储结构,以提高对文件的访问速度; (3) 提高磁盘的I/O速度,能将文件中的数据快速地从磁盘传送到内存中,或者相反。其中的第1和第2点已在上一章或本章作了较详细的阐述,本节主要对如何提高磁盘的I/O速度作一简单介绍。 ppt课件 8.3.1 磁盘高速缓存(Disk Cache) 在设计磁盘高速缓存时需要考虑的问题有: (1) 如何将磁盘高速缓存中的数据传送给请求进程; (2) 采用什么样的置换策略; (3) 已修改的盘块数据在何时被写回磁盘。 ppt课件 1. 数据交付(Data Delivery)方式 如果I/O请求所需要的数据能从磁盘高速缓存中获取,此时就需要将磁盘高速缓存中的数据传送给请求进程。所谓的数据交付就是指将磁盘高速缓存中的数据传送给请求者进程。系统可以采取两种方式将数据交付给请求进程: (1) 数据交付 (2) 指针交付 ppt课件 2. 置换算法 现在不少系统在设计其高速缓存的置换算法时,除了考虑到最近最久未使用这一原则外,还考虑了以下几点: (1) 访问频率。 (2) 可预见性。 (3) 数据的一致性。 ppt课件 3. 周期性地写回磁盘 还有一种情况值得注意,那就是根据LRU算法,那些经常要被访问的盘块数据可能会一直保留在高速缓存
原创力文档

文档评论(0)