zoukankan      html  css  js  c++  java
  • 文件系统(II)

    接着上文,XDDD!

    FCB(File Control Block)文件控制块

    目的:OS为了管理文件而设置的数据结构保存管理文件所需的所有有关信息(元数据或者文件属性),那么这些信息主要包含:文件名,文件大小,文件地址(文件内容在磁盘上怎么找到),创建时间,修改时间,最后访问时间,文件标识(只读、隐藏。。。)

    元数据(为了管理文件,我们又有一些相应信息而该信息又以文件形式保存在磁盘上所以叫做元数据)

    unix中FCB = 文件名+i节点 

    文件目录 :

    统一管理每个文件的元数据以支持文件名到文件物理地址的转换来实现按名存取,将所有文件管理信息组织在一起即构成文件目录。

    将文件目录以文件形式放在磁盘上叫目录文件(即为之前讲的记录式文件逻辑结构,其是由若干个目录项组成 --->文件目录是FCB有序集合

    树形结构中文件名此时会扩展成路径名:

    绝对路径:根目录开始产生的路径名为绝对路径

    相对路径:从树的子根节点即当前目录产生的路径为相对路径

    文件的物理结构:

    连续结构:文件信息存放在若干个连续的物理块中

    文件分成n块,这n块在磁盘上是连续存放的

    此时FCB保存的是第一块块号和它的长度

    优点:

    支持顺序存储和随机存储(第一块块号+任意偏移量即为所要求的物理块)

    所需要的磁盘寻道次数和寻道时间少

    可以同时读入多个块,检索一个块也容易

    缺点:

    文件不能动态增长

    如果文件删除后所留下的物理块过小那么将会产生碎片

    链接结构:

    文件信息存放在若干个不连续的物理块中,各个物理块通过指针链接在一起(前一个物理块需要牺牲空间的一部分作为指针)

                                  结构图

    FCB此时只要记录起始块号即可,因为之后的物理块根据指针访问即可

    优点:

    提高了磁盘空间利用率(不存在碎片问题因为任何一个物理块都可以分配给某个文件)

    利于文件插入和删除

    有利于文件动态扩充

    缺点:

    存取速度慢,不利于随机存取

    可靠性问题,指针易出错

    更多寻道次数和寻道时间

    而且指针还要占去物理块一部分空间,如果扇区就为512字节拿去一部分就不为2的整数倍处理较为麻烦

    FAT表(链接结构的变形)

    该表保存的数据的作用就是来代替所有物理块内的指针,而且对于磁盘上任一物理块,FAT表中里存有对应表项,比如说物理块号1,那么对应的表项即为1表项

    文件A起始物理块号为1到FAT表中对应的1表项查看,而FAT中1表项,记录着下一个物理块是4,所以到物理块号4对应的4表项查看,发现4表项记录的下一个物理块号是2,所以到2表项中查看,发现为-1即表示文件的物理块就到此过。

    对于表项里面的值有三种情况:

    1.  0值表明表项为空,对应的物理块是一个空闲的物理块

    2.  下一个物理块块号

    3. -1文件结束符号

    FCB就保存着起始块号!

     

    索引结构

    一个文件存放在若干不连续物理块中,系统为每个文件建立一个索引表并将这些物理块块号存放在该索引表

    索引表是磁盘块地址数组,第i条目指向文件第i块

     

    索引表存放在何处呢?

    有些文件大有些文件小导致索引表大或者小,所以索引表不宜放到固定大小的FCB中,FCB应派生一字段保存索引表索引表会放入物理块中该块便称为索引块,存放着分配给文件的若干个物理块块号

    FCB保存的是索引块的块号

    优点:

    既可以顺序存储又可以随机存储

    可以动态增长又满足插入删除要求

    能充分利用磁盘

    缺点:

    较多寻道次数和寻道时间

    索引表本身占空间,存取也要时间

    问题

    索引表很大需要多个物理块,这些物理块在磁盘上如何存放?

    1.链接方式:多个物理块通过链接方式

    2.多级索引方式:将文件索引表地址放在另一个索引表中

    3.综合模式:有些索引表项记录的就是物理块号,有些则是记录次级索引表地址

    图中512字节/一个索引表项大小2字节 = 256个物理块号

    采用这种结构文件能用最多多少物理块?

    前12个存的就是物理块号,13存的是一级索引表地址,一级索引表又有256个表项故用了256个物理块,14存的是二级索引表地址,二级索引表地址中256表项又存这一级索引表表项,故用了256*256物理块,三级存了256个二级索引表地址,二级又存了一级索引表最终可以用256*256*256个物理块

    所以最多可以用12 + 256 + 256 *256 + 256 * 256 *256个物理块!

    如图

           作者水平有限,文章肯定有错还请各位指点!!!感谢!!!

  • 相关阅读:
    HDU 5119 Happy Matt Friends(DP || 高斯消元)
    URAL 1698. Square Country 5(记忆化搜索)
    POJ 2546 Circular Area(两个圆相交的面积)
    URAL 1430. Crime and Punishment(数论)
    HDU 1111 Secret Code (DFS)
    HDU 1104 Remainder (BFS求最小步数 打印路径)
    URAL 1091. Tmutarakan Exams(容斥原理)
    PDO连接mysql8.0报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误
    swoole简易实时聊天
    centos安装netcat
  • 原文地址:https://www.cnblogs.com/chaunceyctx/p/6862179.html
Copyright © 2011-2022 走看看