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

@(OS)

文件管理有三大部分内容:

  • 目录管理
  • 文件存储空间管理
  • 文件共享保护管理

目录管理又细分为:

  • 文件控制块和索引结点
  • 目录结构
    • 单级目录结构
    • 两级目录结构
    • 树形目录结构

文件存储空间管理主要是四种:

  • 空闲表
  • 空闲链表
  • 位示图
  • 成组连接

文件共享和保护主要分为:

  • 基于索引结点的共享方式–硬链接
  • 利用符号链接实现文件共享–软链接

个人感觉最重要的是理解目录管理中的文件控制块设计与其优化后得到的索引结点存储方式。

剩下的,都可以稍加推断,很容易明白。但是如果FCB这些概念不能理解,后面的就很难打通。

这里再次总结FCB相关与磁盘访问计数问题。

文件控制块

设计目的:为了对一个文件进行正确的存取,设置了用于描述和控制文件的数据结构–文件控制块(FCB)。
文件管理程序可以借助文件控制块中的信息,对文件进行各种操作。

特别需要理解的是:一个文件对应一个文件控制块。 具体场景(利用场景记忆)是,比如你在桌面上建立了一个txt文档,这个文档就有一个自己的FCB,可能这个文档是空的,但是这种格式化文件需要记录一些基本描述信息,假设1KB,而它的FCB呢,大概是64B左右,其实也不是很大,就512个二进制位而已。

我们常用电脑知道,会新建个文件夹进行组织文件。这里也一样,单个的FCB与文件一一对应,如何组织这些FCB呢?用的是文件目录

老实说,这个名称非常容易引起误会,以为是我们自己新建的文件夹,其实是FCB的集合。因此,文件目录下的文件目录项就是文件控制块,即FCB。关系本身不复杂,只是名字乱。还不止这些,一个文件目录也可以看作是一个文件,称之为目录文件

会问,既然目录也是文件,那么它有没有FCB?答案是不一定。有些题可以说不设FCB,组织成链接文件。

我们先看普通文件中FCB存储了什么。

  • 基本信息

    • 文件名:标识文件的符号名,唯一,用户使用。
    • 文件的物理位置:指示文件在外存上的存储位置。包括:存放文件的设备名;文件在外存上的起始盘块号,指示文件所占用的盘块数或字节数的文件长度,
    • 文件的逻辑结构–指示文件是流式文件还是记录式文件,记录数等;文件是定长记录还是变长记录。
    • 文件的物理结构:指示文件是顺序文件还是链接式文件或索引文件。
  • 存取控制信息
    • 文件的主存取权限
    • 核准用户的存取权限
    • 一般用户的存取权限
  • 使用信息
    • 文件的建立日期和时间
    • 上一次修改的日期和时间
    • 当前使用信息
      • 已经打开该文件的进程数
      • 是否被其他进程锁住
      • 文件在内存中是否已经被修改但尚未拷贝到磁盘

值得关注的是FCB中含有文件起始盘块号和总共占用的盘块号数。这是计算访问磁盘数目的基础知识。

访问磁盘次数与索引结点的引入

文件目录通常存放在磁盘上。文件很多时文件目录要占用大量的盘块。查找目录的过程是:先将存放目录文件的第一个盘块中的目录调入内存,然后把用户给定的文件名与目录项中的文件名一一比较。若未找到指定文件,则把下一个盘块号中的目录项调入内存

也就是调入内存是以磁盘块为单位进行。

这简短的一段话就讲明白了访问磁盘数的计算问题。即:主要计算的是FCB占用的盘块数,假设是N块,那么,查找一个目录项的平均需要调入盘块数N+12\frac{N+1}{2}。
注意,这是查找一个文件的FCB,具体什么操作是后序的问题。因为FCB中有文件的起始磁盘块号,以及占用的磁盘块数。这还需要根据存储的物理方式来考虑计算,比如隐式链法,索引法等。具体问题具体分析。

加入一个FCB是64B,盘块大小为1KB;若一个文件目录中有640个FCB,平均查找一个文件需要启动磁盘多少次?

分析:一个盘块1KB,则一个盘块可以存16个FCB,那么640个FCB就需要40个盘块。平均需要40+12=20.5次\frac{40+1}{2} = 20.5次,也即,21次。

引入索引结点。

在上面的过程中,我们主要比较了文件名,那么用FCB这么完备的信息是有些浪费的,尤其是访问磁盘是很费时的操作。

因此,考虑将文件名与其他FCB中存储的信息分开,二者需要某个东西串在一起,这个东西可以在Unix下是一个2B的指针,文件名是14B。那么剩下的FCB的信息在哪呢?在索引结点。也叫inode。

因此文件目录中存的都是16B的文件目录项,相比64B,减少了四分之三。因此,为了找到文件,启动磁盘的次数减少了原来的四分之一,这是很大的进步。

感性认识:索引结点存储大部分文件描述信息。

上面的是思想,具体实现时,分为:

  • 磁盘索引结点
  • 内存索引结点

文件是存在磁盘的。每个文件有唯一的磁盘索引结点。

磁盘索引结点主要包括:

  • 文件主标识符
  • 文件类型
  • 文件存取权限
  • 文件物理地址:每一个索引结点含有13个地址项,以直接或间接,或多级间接的方式给出数据文件所在盘块的编号。
  • 文件长度:以字节为单位
  • 文件的连接计数
  • 文件的存取时间等

    内存索引结点:存放在内存的索引结点。
    设计缘由:文件被打开时,要将磁盘索引结点拷贝到内存的索引结点中,便于后续访问使用。
    此外,还增加了一些内容:

  • 索引结点编号–标识内存索引结点。

  • 状态:指示i结点是否锁住或被修改。
  • 访问计数
  • 文件所属文件系统的逻辑设备号
  • 链接指针:指向空闲链表或者散列队列的指针。

磁盘启动次数计算原理总结相关推荐

  1. 自定义文件系统下的磁盘访问次数计算

    有一个文件系统如图所示: 图中的方框表示目录,圆圈表示普通文件.根目录常驻内存,目录文件组织成链接文件,不设FCB,普通文件组织成索引文件.目录表指示下一级文件名及其磁盘地址(各占2B,共4B).若下 ...

  2. 磁盘结构和工作原理以及LBA与CHS

    硬盘(英语:Hard Disk Drive,缩写:HDD) 硬盘(英语:Hard Disk Drive,缩写:HDD)是电脑上使用坚硬的旋转盘片为基础的非易失性存储器,它在平整的磁性表面存储和检索数字 ...

  3. oracle 开始一个事务,oracle的启动与关闭原理-事务commit或者rollback

    oracle的启动与关闭原理-事务commit或者rollback 4.事务 4.1事务的概念 从第一个DML语句开始执行,以rollback或者commit为结束标记,之前所有的DML操作(inse ...

  4. (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现

    (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现 文章目录 (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现 摘要 RPC几何定位模型介绍 RPC模型库 ...

  5. 【推荐算法】从零开始做推荐(二)——TopK推荐的评价指标,计算原理与样例

    前言   推荐系统的评价指标在不同类型的推荐场景下,选用的不同.有些推荐的评价指标并非完全出自推荐系统,而是从搜索算法,信息检索,机器学习等相关领域沿用过来,因此网上有些对评价指标的解释并非完全以推荐 ...

  6. 《伟大的计算原理》一第3章 Great Principles of Computing 信  息

    本节书摘来自华章出版社<伟大的计算原理>一书中的第3章,第3.1节,作者[美]彼得 J. 丹宁(Peter J. Denning)克雷格 H. 马特尔(Craig H. Martell), ...

  7. 基于新型忆阻器的存内计算原理、研究和挑战

    作者 | 林钰登.高滨.王小虎.钱鹤.吴华强 来源 | <微纳电子与智能制造>期刊 引言 过去半个世纪以来 ,芯片计算性能的提高主要依赖于场效应晶体管尺寸的缩小.随着特征尺寸的减小 ,器件 ...

  8. 《伟大的计算原理》一致谢

    本节书摘来华章计算机<伟大的计算原理>一书中的第1章 ,[美]彼得 J. 丹宁(Peter J. Denning) 克雷格 H. 马特尔(Craig H. Martell)著 罗英伟 高良 ...

  9. OpenGL中摄像机矩阵的计算原理

    OpenGL中摄像机矩阵的计算原理 熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄 ...

最新文章

  1. 企业文化建设不能仅仅靠大声疾呼
  2. Python的Descriptor和Property混用
  3. 关于网络投票的反思2018-11-11
  4. C/C++学习之路: 智能指针
  5. SAP Spartacus Storefront 页面 cx-page-layout 的赋值逻辑
  6. Spring Boot之自定义属性
  7. jQuery初识 - jQuery是什么
  8. 视频全程:哈萨比斯首次公开解读AlphaZero
  9. 关于map的几种非常规排序
  10. 一本院校大三萌妹子须臾:我的大数据之路
  11. 一人顶一个团队的华为天才少年稚晖君,又带来一项硬核黑科技,引起极客圈地震!...
  12. sox免安装直接使用
  13. 为什么禁止超过三张表 join,原理是什么?
  14. MD5的标准幻数的不同写法
  15. Java毕业设计_基于BootStrap的晴雅花艺交流论坛的开发
  16. css动画走马灯5秒,css3 transition 和 animation实现走马灯
  17. python3.5中import cv2报错
  18. Android手机提示“未安装应用程序”
  19. 【日本中部电力公司开始着手区块链事业】
  20. Java SSM外卖跑腿系统

热门文章

  1. ios 格式化html字符串,ios – 粘贴格式化文本,不是图像或HTML
  2. 松下伺服电机pwm控制连线_从零打造树莓派家庭监控 (一): 伺服电机控制
  3. (01)数据库及相关
  4. php floatval_php floatval()函数的用法详解
  5. django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据
  6. python关键词共现_python 共现矩阵的实现
  7. python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
  8. ajax返回功能,jquery – 记得ajax在点击返回按钮时添加的数据
  9. linux 编译.sh,Linux内核编译步骤
  10. 计算机课程设计评分表,课程设计的评分标准.doc