有一个文件系统如图所示:

图中的方框表示目录,圆圈表示普通文件。根目录常驻内存,目录文件组织成链接文件不设FCB,普通文件组织成索引文件。目录表指示下一级文件名及其磁盘地址(各占2B,共4B)。若下级文件是目录文件,指示其第一个磁盘块地址。若下级文件是普通文件,指示其FCB的磁盘块地址。每个目录的文件磁盘块的最后4B供拉链使用。下级目录文件在上级目录文件中的次序在图中是从左往右。每个磁盘块有512B,与普通文件的一页等长
普通文件的FCB组织如表所示。其中,每个磁盘地址占2B,前十个地址直接指示该文件的前10页的地址。第11个地址指示一级索引表地址。一级索引表中每个磁盘地址指示下一个文件页地址;第12个地址指示二级索引表地址,二级索引表中每个地址指示一个一级索引表地址;第13个地址指示三级索引表地址。三级索引表中每个地址指示一个二级索引表地址。

问:
1)一个普通文件最多可以有多少个文件页。
2)若要读文件J中的某一页,最多启动磁盘多少次?
3)若要读文件W中的某一页,最少启动磁盘多少次?
4)根据3),为最大限度减少启动磁盘的次数,可以采用什么方法?此时最多启动磁盘多少次?

分析:这是一道非常综合全面的题目,需要彻底把握每一个知识点才能解出来。
首先从题干中抽取主要信息。根目录在内存,这样不用计算找到根目录下面的目录文件名的访问磁盘的次数,但是不可忽视的是根据文件目录项的结构文件名及磁盘地址,因此把目录文件的第一个磁盘块调入内存需要访问磁盘一次。因为目录文件的组织形式是链接,因此,需要考虑如何链接。根据题目可以看出来这是隐式链接,即目录文件占用多个磁盘块时,除了最后一个磁盘块,前面的磁盘块均伸手拉着下一个磁盘块。最多最少的考察,主要来自两个方面:文件的页可以在三级索引,这样即使在文件目录中找到FCB的地址,在内存中查到这个页的磁盘地址是三级索引,还要一级一级往后找到真正的页所在的磁盘地址,再最后访问磁盘读取到这个页所在的磁盘块。
本题中一个文件页大小与磁盘块大小一致,如果不一致的情况下还要注意计算边界。

1)一个普通文件的可以有多少页这种计算是套路题。即:直接地址10个,那么可以用的磁盘个数是10,也即10个文件页。一个一级索引地址,可以导向到一个磁盘块,这个磁盘块上存着512÷2=256个512\div 2 = 256个直接地址,对应256个磁盘块。二级索引则可以对应256个一级索引地址,乘法规则:2562256^2个磁盘块,三级索引是2563256^3个磁盘块。因此共有:
10+256+2562+256310 + 256 + 256^2 + 256^3个磁盘块,也可以说是文件页。
说是套路是因为可以推导一个简洁的公式:
一个磁盘块可以存的地址(直接地址,间接地址一样大小)数是kk, 直接地址数是λ0\lambda_0,一级索引地址是λ1\lambda_1,…, i级是λi\lambda_i,
则可以索引的块数是:λ0+λ1k+..+λiki..\lambda_0+\lambda_1k+ .. + \lambda_ik^i..

2)文件目录A和D的目录项只有两个,因此可以确定只占用一个物理块。读取文件J的某一页,首先任务是找到J所在的FCB。遍历这个过程:从根目录中找到A的磁盘地址,访问磁盘一次把A所在的磁盘块调入内存,找到了D的磁盘地址,访问磁盘第二次把D所在的块调入内存,找到J的FCB地址,把FCB所在的磁盘块调入内存,这是第三次访问磁盘。在内存中计算得到J那一页的磁盘地址,但是这个地址可以是三级索引,地址指向二级索引表。因此,调入二级索引表所在磁盘块,第四次访问磁盘;取出以及索引表的磁盘地址,调入一级索引表所在的磁盘,第五次访问磁盘;在一级索引表中找到直接索引磁盘块的地址,调入内存,这是第六次访问磁盘;从中取出这一页的磁盘地址,调入该页所在的磁盘块,这是第七次访问磁盘,可以在内存中完成页的读取了。

可以看出找到三级索引表项,还需要4次访问磁盘。只需要说一级级访问直接给出4即可,不必细致到每一步。

3)目录C和U在图上反映的是目录项很多,因此可能存在多个磁盘块上,因此题目问的是最少。假设文件在第一个磁盘块上就是最少次数的场景。即:所有目录文件都在第一个磁盘块上。从根目录读到C的磁盘地址,调入C在的磁盘块,访问磁盘一次;查出I的磁盘号,调入I到内存,第2次访问磁盘;查出P的磁盘块号,调入该磁盘块到内存,第3次访问磁盘;再查出U并调入第4次访问磁盘;查出W的FCB,并把该FCB所在磁盘块调入内存,第5次访问。从FCB中读出文件页的地址,假设是直接地址,取出该磁盘块到内存,第6次访问磁盘。共6次。可以看出是从根到W的边数+1。作为验证。

4)策略是:将需要访问的W文件目录项挂在根目录中,这样可以直接找到W的FCB,调入FCB所在的磁盘块,访问磁盘一次。最多的情况仍然是当三级索引时,三级索引表项到直接磁盘块还需要4次访问磁盘,因此共需要访问磁盘5次。这是最差的情况。

自定义文件系统下的磁盘访问次数计算相关推荐

  1. 磁盘启动次数计算原理总结

    磁盘启动次数计算原理总结 @(OS) 文件管理有三大部分内容: 目录管理 文件存储空间管理 文件共享保护管理 目录管理又细分为: 文件控制块和索引结点 目录结构 单级目录结构 两级目录结构 树形目录结 ...

  2. oracle磁盘iops,存储磁盘的IOPS计算方式

    昨天苏州一客户那边出现了跟存储磁盘IOPS相关的问题:应用系统在调用数据库时特别慢,页面打开同样慢.最终一路排查下来,问题还是在存储端.存储中划给oracleRAC使用的RAID5,使用的是包含EMC ...

  3. php 真实访问次数,PHP将访问次数写入文件下

    用php实现简易的访问统计功能,计算网站的总访问量是多少,简单实用.php通过每次打开文本文件,获取文本中的数字,再进行加1后写入到文本中.因此,每次有访问就会进行累加访问数量来实现的简单访客次数的统 ...

  4. springboot记录用户访问次数_SpringBoot中自定义注解实现控制器访问次数限制示例...

    今天给大伙介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制. 在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大伙介绍一下如何利用自定义注解实现这类攻击的 ...

  5. proc文件系统下各参数解析

    文章目录 一.proc文件系统 1.1 /proc/[pid] 1.1.1 /proc/[pid]/arch_status 1.1.2 /proc/[pid]/attr 1.1.2.1 /proc/[ ...

  6. ftp/nfs卸载自定义文件系统数据

    在存储领域对于数据卸载有很多种方式,比如通过高速GTX接口流模式卸载,或者通过网络卸载数据,通过网络卸载数据可以开发上位机定制化卸载数据,但是开发上位机软件比较麻烦,以及需要安装软件,软件容易出现BU ...

  7. 多进程并发环境下的磁盘调度性能分析_来说说如何提高服务器的并发能力?

    点击上方"JAVA",星标公众号 重磅干货,第一时间送达 什么是服务器并发处理能力 一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强 有什么方 ...

  8. Spark的实战题目——寻找5亿次访问中,访问次数最多的人

    场景描述:这是一个Spark的实战题目,也是在面试中经常出现的一类题目. 问题描述 对于一个大型网站,用户访问量尝尝高达数十亿.对于数十亿是一个什么样的概念,我们这里可以简单的计算一下.对于一个用户, ...

  9. 唯一身份访问者(独立访客)与访问次数的区别

    唯一身份访问者(独立访客)与访问次数的区别 在进行网站分析前,对网站分析的基本度量的了解是非常必要的,这样才会深入理解网站分析,否则就会不知所云. 定义: 1.唯一身份访问者(Unique Visit ...

最新文章

  1. 实验三linux服务与进程管理,Linux 进程与服务管理1
  2. java 怎么中断一个线程
  3. Error: Already running on PID 31356 (or pid file 'log/gunicorn.pid' is stale)
  4. 这两天学习nRF51822的心得
  5. Beyond Compare 3.3.8 build 16340 + Key
  6. HierarchicalBeanFactory接口
  7. mysql怎么禁止远程连接_mysql如何设置禁止远程连接
  8. 机器学习基石作业一中的PLA和POCKET_PLA实现
  9. 机器学习 | 梯度下降原理及Python实现
  10. 从下往上飞入的动画效果
  11. 计算机桌面图标有箭头,电脑桌面图标为什么会有一个小箭头,原来没的呀,
  12. 机器人“病患”会流血会休克,魔鬼训练从斯坦福医院开始 |准医生的噩梦
  13. javascript实例:路由的跳转
  14. 团队-科学计算器-代码设计规范
  15. 幼儿园案例经验迁移_幼儿园故事教学的实施策略
  16. 微软拼音输入法 2003 精选版 怎么用
  17. 竞赛|全球物联网数据创新大赛
  18. 习题11-1 输出月份英文名 (15 分)
  19. 【数论】君と彼女の恋
  20. 用Python脚本能获取Wifi密码么?能。

热门文章

  1. 【C++笔记】运算符重载
  2. MFC列表控件(ListControl)
  3. vue的边距怎么设置_Vue项目如何适应浏览器,去除容器控件与浏览器四周的距离...
  4. html改为php报错,**PHP, 这段嵌入html的php代码为何第15、16、17行报错?**
  5. python怎么索引txt数据中第四行_python-在熊猫数据框中按行计数编制索引
  6. 使用Kotlin的Android Spinner
  7. adalm pluto_Apache Pluto和PHP集成示例教程
  8. 使用Spring Boot CLI的Spring Boot Initilizr
  9. spring aop示例_具有AOP事务管理的Spring ORM示例
  10. shell学习之获取用户的输入命令read