• 通俗易懂理解文件系统


    文件

    1. 文件的概念

      文件是记录在外存上具有名称相关信息的集合

    2. 文件的类型和属性

      • 文件的类型
        1. 按用途分:系统文件、库文件、用户文件
        2. 按保护级别分:只读文件、读写文件、不保护文件
        3. 按信息流分:输入文件、输出文件、输入输出文件
        4. 按存放的时限分:临时文件、永久文件、档案文件
        5. 按文件设备类型分:磁盘文件、磁带文件、软盘文件
        6. 根据文档的内容分:ASCII码文件、二进制文件
      • 文件的属性
        1. 基本属性:文件名、扩展名、标识符、文件所属ID等
        2. 类型属性:表明文件的类型,如普通文件、目录文件、系统文件等
        3. 控制属性:文件的位置信息、逻辑记录长、文件当前长等
        4. 管理属性:创建时间、最后访问的时间、最后修改的时间
        5. 保护属性:用户对文件允许执行的访问操作。如只读、可写等
    3. 文件的存取方法

      • 文件的存储单位

        文件内容是以物理块(物理记录)为单位存取的

      • 文件的访问方式

        1. 顺序访问:从文件的开头顺序读取文件的全部字节或记录,不能跳过某些内容,文件后面的内容不能先于文件前面的部分读取出来。
        2. 随机访问(直接访问):能够以任意次序读取文件中的记录或字节,可以按照关键字而不是位置来取记录。
        3. 索引访问:索引访问建立在随机访问方式上。索引访问需要为文件创建索引。类似于文件内容目录
    4. 文件操作

      1. 创建文件:创建不包含任何数据的文件
      2. 打开文件:使用文件
      3. 写文件调:调用针对已经打开的文件执行写操作
      4. 读文件:调用针对已经打开的文件执行读操作
      5. 调整读写指针:用于调整读写指针
      6. 关闭文件:文件访问结束,关闭文件释放所占用的相关内存资源,同时写入文件的最后一块
      7. 删除文件:删除不需要的文件,释放其所占的外存空间

    目录

    1. 概念

      目录提供了访问文件的入口,是文件系统实现“按名存取”文件的重要手段

    2. 目录项(文件控制块(FCB))

      目录项用于记载文件的属性信息,如名称、位置、大小和类型等。

      FCB包含的信息

      • 文件标识和控制信息
      • 文件逻辑结构信息
      • 文件的物理结构信息
      • 文件使用信息
      • 文件管理信息
    3. 目录项结构与索引节点

      • 索引节点型目录项结构:文件名以外的属性信息存放在称为索引节点的数据结构中
      • 系统内存活动索引节点表:索引节点缓冲区
    4. 目录层次

      1. 一级目录:一个目录中包含所有的文件,即根目录
      2. 层次目录系统:多级目录,形成树形结构,也称为目录树。windows的目录就是这样的
    5. 目录操作

      • 创建目录
      • 删除目录
      • 打开目录
      • 关闭目录
      • 链接目录:建立已存在文件到一个路径名的链接,使多个目录中出现同一个文件
      • 删除链接目录

    文件结构

    1. 文件的逻辑结构

      文件的逻辑结构是从用户角度看到的反映一定逻辑意义的文件内容组成单位及各部分之间的关系。

      • 流式文件(无结构文件):将文件内容看做字节流
      • 记录式文件(有结构文件):包含若干逻辑信息记录。例如学生信息文件、储户信息文件
    2. 文件的物理结构

      文件内容及其各部分之间的逻辑关系在物理存储空间中的存储和实现方法。

      构造文件物理结构的方法

      • 计算法:利用哈希函数等设计映射算法,建立逻辑记录到物理记录地址之间的映射关系
      • 指针法(链表法):在存储各个逻辑记录的同时存储各记录所在的物理地址

      常见的物理文件

      • 顺序文件(计算法)
      • 连接文件(指针法)
      • 直接文件(计算法)
      • 索引文件(指针法)
  • 相关阅读:
    Flink开发_Flink中的函数接口
    Netty简介
    java NIO简单了解
    Kafka发送消息流程
    Kafka高性能的原理
    Hbase表设计
    Hbase的读写过程
    Hbase各组件职责
    什么是java的深浅拷贝?
    Flink问题1
  • 原文地址:https://www.cnblogs.com/cjdstudy/p/13266138.html
Copyright © 2020-2023  润新知