第8章磁盘存储器管理分解.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 直接地址:在索引结点中可设置10个直接地址项,即用iaddr(0)~iaddr(9)来存放直接地址。假如盘块大小为4KB,当文件不大于40KB时,便可直接从索引结点中读出该文件的全部盘块号 一次间接地址:利用索引结点中的地址项iaddr(10)来提供一次间接地址(同二级索引:每个盘块号占4B,盘块个数1KB),。实质就是一级索引分配方式(大、中型文件,文件长达4 MB) 多次间接地址:文件大于4MB+40KB时,须采用二次间址分配方式。地址项iaddr(11)提供二次间接地址,实质是两级索引分配方式,此时文件最大长度可达4 GB。同理,地址项iaddr(12)作为三次间接地址,其所允许的文件最大长度可达4 TB unix操作系统上,如果一个块的大小是1KB?,一个盘块号占4个字节(一个盘块有256个地址)。请把下面的文件字节偏移量转换为物理地址: (1)9999???(2)18000???(3)140000 * P276,11 (1)9999 逻辑块号:9999/1024=9? ??? 块内偏移量为: 9999-9*1024=783? 逻辑块号<10, 直接地址 物理地址为: inode[9]+783 图8-8 增量式(混合)索引方式 * 直接地址: 可设10个直接地址项 一次间接地址: 多次间接地址: * (2)18000?? 逻辑块号: 18000/1024=17 ??? 块内偏移量为: 18000-17*1024=592 ? 1017256+10, 一次间接地址,若一次间接盘块号为M M中第17-10=7项地址,即物理块号为M[7] 物理地址为: M[7]+592 * (3) 140000 ?? 逻辑块号: 420000/1024=410 ??? 块内偏移量为: 420000-410*1024=160 10+256<410<65802,(65536+256+10) 二次间接盘块号 若二次间接的盘快号为M,由于一次间接快可容纳256个块号,且410-256-10=144 所以该文件的物理块号在: M[0]所指示的间接快N的第144项中的数据, 该地址的第160字节即位文件的物理地址 8.2 文件存储空间的管理 先要记住空闲存储空间的情况。为此,设置相应的数据结构;系统要提供对存储空间分配和回收的功能。 空闲表法/空闲链表法 2. 位示图法 成组链接法 * 8.2.1 空闲表法和空闲链表法(1) 1. 空闲表法 空闲表:外存每个空闲区对应一个空闲表项 空间的分配和回收(可采用多种方式,如首次适应算法、循环首次适应算法等) 序号 第一空闲盘块表 空闲盘块数 1 2 4 2 9 3 3 15 5 ? ? ? 空闲盘块表 * 8.2.2 位示图法 1. 位示图 每一位表示一个块/簇,值0和1分别表示空闲和占用 占用空间少、容易找到相邻的空闲盘块 * 2. 盘块的分配(三步) ? 顺序扫描位示图,找出一个/组值是0的二进制位 ? 将找到的二进制位,转换成对应的盘块号 b = n(i-1) + j ? 修改位示图 map[ i,j ] = 1 * 3. 盘块的回收(2步) ? 将盘块号b转换成位于图中的行号和列号 i=(b-1) DIV n + 1 j=(b-1) MOD n + 1 ? 修改位示图 map[i,j]= 0 * 8.2.3 成组链接法 1. 空闲盘块的组织(图8-11) 空闲盘块号栈:存放当前可用的一组空闲盘块的盘块号 所有空闲盘块,被分成若干个组 每组含有的盘块总数N + 该组所有的盘块号,记入前一组的第一个盘块的S.free(0)~S.free(99)中。 第一组的盘块总数和所有盘块号,记入空闲盘块号栈 最末一组只有99个盘块,盘块号记入其前一组第一盘块的S.free(1)~S.free(99)中。而在S.free(0)中存放“0”,作为空闲盘块链的结束标志。 * 图8-11 空闲盘块的成组链接法 * * 8.3.2 提高磁盘I/O速度的其它方法 1. 提前读(Read-Ahead) 2. 延迟写 3. 优化物理块的分布 4. 虚拟盘 * 1. 提前读(Read-Ahead) 进程对文件进行访问时,常采用顺序访问的方式 这种情况下,读当前块时可预测下一次要读的盘块,采取预先读方式将下一个盘块的数据也读入缓冲区(提前读)。 当下次要读该盘块中的数据时,由于数据已被提前读入缓冲区,便可直接从缓冲区中取得下一盘块的数据,而不需再去启动磁盘

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档