- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[电脑基础知识]操作系统 第6章
作业:P246 2, 7, 10,11,19,24, 6.7.3 并发控制 利用互斥锁实现“顺序性” 2. 利用互斥锁和共享锁实现顺序性 6.7.4 重复数据的数据一致性问题 1. 重复文件的一致性 图 6-28 UNIX类型的目录 2. 盘块号一致性的检查 图 6-29 检查盘块号一致性情况 图 6-29 检查盘块号一致性情况 3. 链接数一致性检查 为每个盘块建立一个表项,其中含有该索引结点号的计数值。 进行检查时,从根目录开始查找,每当在目录中遇到该索引结点号时, 便在该计数器表中相应文件的表项上加1。当把所有目录都检查完后,便可将该计数器表中每个表项中的索引结点号计数值与该文件索引结点中的链接计数count值加以比较: 如果两者一致,表示是正确的;否则,便是发生了链接数据不一致的错误。 如果索引结点中的链接计数count值大于计数器表中相应索引结点号的计数值,则即使在所有共享此文件的用户都不再使用此文件时,其count值仍不为0,因而该文件不会被删除。 这种错误的后果是使一些已无用户需要的文件仍驻留在磁盘上,浪费了存储空间。解决的方法是用计数器表中的正确的计数值去为count重新赋值。 。 反之,如果出现count值小于计数器表中索引结点号计数值的情况时,就有潜在的危险。 假如有两个用户共享一个文件,但是count值仍为1, 这样, 只要其中有一个用户不再需要此文件时, count值就会减为0,从而使系统将此文件删除, 并释放其索引结点及文件所占用的盘块,导致另一共享此文件的用户所对应的目录项,指向了一个空索引结点,最终是使该用户再无法访问此文件。 如果该索引结点很快又被分配给其它文件,则又会带来潜在的危险。 解决的方法是将count值置为正确值 6.4.3 目录查询技术 1. 线性检索法 图 6-19 查找/usr/ast/mbox的步骤 2. Hash方法 一种处理此“冲突”的有效规则是: (1) 在利用Hash法索引查找目录时,如果目录表中相应的目录项是空的,则表示系统中并无指定文件。 (2) 如果目录项中的文件名与指定文件名相匹配, 则表示该目录项正是所要寻找的文件所对应的目录项,故而可从中找到该文件所在的物理地址。 (3) 如果在目录表的相应目录项中的文件名与指定文件名并不匹配,则表示发生了“冲突”,此时须将其Hash值再加上一个常数(该常数应与目录的长度值互质),形成新的索引值, 再返回到第一步重新开始查找。 6.5 文件存储空间的管理 6.5.1 空闲表法和空闲链表法 1. 空闲表法 图 6-20 空闲盘块表 序号 第一空闲盘块号 空闲盘块数 1 2 4 2 9 3 3 15 5 4 — — (2) 存储空间的分配与回收。 空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。 如,在系统为某新创建的文件分配空闲盘块时,先顺序地检索空闲表的各表项, 直至找到第一个其大小能满足要求的空闲区,再将该盘区分配给用户(进程),同时修改空闲表。 系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法: 即要考虑回收区是否与空闲表中插入点的前区和后区相邻接; 对相邻接者应予以合并。 2. 空闲链表法 空闲盘块链。 (2) 空闲盘区链 6.5.2 位示图法 1. 位示图 图 6-21 位示图 例 有一计算机系统利用如图所示的位示图(行号、列号都从0开始编号)来管理空闲盘块,如果盘块从1开始编号,每个盘块大小为1KB。则: 现要为文件分配两个盘块,试具体说明分配过程。 若要释放磁盘的第300块,应如何处理 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 A)过程如下:a、顺序检索位示图,从中找到第一个值为0的二进制位,得到其行号i1=2,列号j1=2;第二个值为0的二进制位的行号i2=3,列号j2=6。 b、计算出找到的两个空闲块的盘块号: b1=i1*16+j1+1=35 b2=i2*16+j2+1=55 c、修改位示图,令map[2,2]=map[3,6]=1,并将35
文档评论(0)