zoukankan      html  css  js  c++  java
  • Linux与windows的文件系统结构

    昨天新哥问我iNode的区别,支支吾吾说了好久也没讲清楚,自己回来赶紧百度了一下

    照例先搬砖

    一.文件存储

    文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”。每个扇区存512字节,操作系统读取硬盘的时候,不会一个个扇区地读取,这样

    效率太低,而是一次连续地读取多个扇区,即一次性读取一个块。 这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是

    4kn,即连续八个sector组成一个block。

    文件数据都存储在“块”中,那么很显然,我们还必须找到一个地方存储文件的元信息,比如文件的创建者,文件的创建日期,

    文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为“索引节点”

    inode包含文件的元信息,包括以下内容

    1.文件的字节数

    2.文件拥有者的userID

    3.文件的GroupID

    4.文件的读.写.执行权限

    5.文件的时间戳 ctime指的是inode上一次改变 的时间(权限,属性)

                         mtime指的是inode上一次修改的时间(内容)

                        atime指的是上一次的访问时间

                        但实际上,会因为修该内容而导致mtime(属性)发生变化,从而间接引起ctime变化

    二.inode的大小

    inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存文件数据;另一个是

    iNode区,存放inode所包含的信息,每个inode节点的大小,一般是128字节或256字节。inode节点的总数,

    在格式化时就给定。

    unix系统内部不使用文件名,而是使用inode号码来识别文件。

    打开文件的过程

    1.系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;

    最后,根据inode信息,找到文件数据所在的block,读出数据

    一个inode对应多个文件的情况称之为硬连接,修改一个文件内容会影响到所有文件名

    但删除一个文件不会影响到另外一个文件的访问

    二.Windows Fat文件结构

    保留扇区

          位于最开始的位置。第一个保留扇区是引导区(分区引导)

    FAT区域

          它包含有两份文件分配表,冗余考虑,它是分区信息的映射表指示簇是如何存储的

    根目录区域

           它是根目录中存储文件和目录信息的目录表,在FAT32下它可以存在分区中的任何位置。

    数据DATA区

    整个磁盘应该是这样

    我们通过bpb,获取每个fat表的所占字节,保留扇区,从而得知fdt的起始扇区

    通过fdt得到文件的首簇号,并通过首簇号得到文件的起始扇区位置。

    读取文件在数据区中的记录。

    个人感觉,通过fdt表定位到文件首簇,通过fat表(它记录着文件如何被分散在不同的扇区中),形成簇链。

  • 相关阅读:
    Xcode-调试断点不能停在代码区终极解决方案
    iOS-修改Status Bar
    iOS-appStore发布流程
    iOS-Debug调试
    iOS-项目搭建
    iOS-UIButton-设置button标题和图片位置
    iOS-布局-Masonry-优先级
    intent 传参数
    五大布局
    execute、executeQuery和executeUpdate之间的区别
  • 原文地址:https://www.cnblogs.com/clearlove/p/4590785.html
Copyright © 2011-2022 走看看