- 1、本文档共92页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3 索引分配 1. 单级索引分配 链接分配方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题, 即: (1) 不能支持高效的直接存取。要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找许多盘块号。 (2) FAT需占用较大的内存空间。 图 11 索引分配方式 2. 多级索引分配 图 12 两级索引分配 图 13 混合索引方式 (1) 直接地址。 为了提高对文件的检索速度, 在索引结点中可设置10个直接地址项, 即用iaddr(0)~iaddr(9)来存放直接地址。 换言之,在这里的每项中所存放的是该文件数据的盘块的盘块号。假如每个盘块的大小为 4 KB,当文件不大于40 KB时,便可直接从索引结点中读出该文件的全部盘块号。 (2) 一次间接地址 对于大、 中型文件, 只采用直接地址是不现实的。 为此,可再利用索引结点中的地址项iaddr(10)来提供一次间接地址。这种方式的实质就是一级索引分配方式。图中的一次间址块也就是索引块,系统将分配给文件的多个盘块号记入其中。在一次间址块中可存放1K个盘块号, 因而允许文件长达4 MB。 (3) 多次间接地址 当文件长度大于4 MB+40 KB时(一次间址与10个直接地址项), 系统还须采用二次间址分配方式。这时,用地址项iaddr(11)提供二次间接地址。该方式的实质是两级索引分配方式。系统此时是在二次间址块中记入所有一次间址块的盘号。在采用二次间址方式时,文件最大长度可达4 GB。 同理,地址项iaddr(12)作为三次间接地址, 其所允许的文件最大长度可达4 TB。 5 文件存储空间的管理 5.1 空闲表法和空闲链表法 1. 空闲表法 图 20 空闲盘块表 序号 第一空闲盘块号 空闲盘块数 1 2 4 2 9 3 3 15 5 4 — — (2) 存储空间的分配与回收。 空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。例如,在系统为某新创建的文件分配空闲盘块时,先顺序地检索空闲表的各表项, 直至找到第一个其大小能满足要求的空闲区,再将该盘区分配给用户(进程),同时修改空闲表。系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法, 即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。 2. 空闲链表法 空闲盘块链。 (2) 空闲盘区链 5.2 位示图法 1. 位示图 图 21 位示图 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。 5.3 成组链接法 1. 空闲盘块的组织 图 22 空闲盘块的成组链接法 2. 空闲盘块的分配与回收 当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底, 即S.free(0),这是当前栈中最后一个可分配的盘块号。由于在该盘块号所对应的盘块中记有下一组可用的盘块号,因此, 须调用磁盘读过程,将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去(其中的有用数据已读入栈中)。 然后,再分配一相应的缓冲区(作为该盘块的缓冲区)。最后,把栈中的空闲盘块数减1并返回。 在系统回收空闲盘块时,须调用盘块回收过程进行回收。它是将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空闲盘块号数目已达100时, 表示栈已满,便将现有栈中的100个盘块号, 记入新回收的盘块中,再将其盘块号作为新栈底。 3 磁盘容错技术 (1) 通过存取控制机制来防止由人为因素所造成的文件不安全性。 (2) 通过磁盘容错技术, 来防止
您可能关注的文档
- 科学三年级上-1-我们周围的材料讲述.pptx
- 科威建材汇报材料2016-1讲述.ppt
- 科学三上_大树和小草讲述.ppt
- 科学三年级上-3-比较韧性分析讲述.pptx
- 科学三年级上-3-谁流得更快一些讲述.pptx
- 科学三上比较韧性讲述.ppt
- 科学三年级上-4-比较水的多少讲述.pptx
- 科学三年级上-5-我们周围的空气讲述.pptx
- 科学三年级上-3-大树和小草讲述.ppt
- 科学三年级上-3-比较韧性讲述.pptx
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)