• 操作系统原理,文件系统的实现,磁盘上和内存中的内容布局,文件目录的检索过程,目录项分解法


    文件系统的实现

    实现文件系统需要考虑磁盘上和内存中的内容布局,文件目录的检索过程

    磁盘上的内容布局

    一、磁盘上需要解决的问题:
    1、如何启动操作系统
    2、磁盘如何管理,以及获取磁盘的有关信息
    3、目录文件在磁盘上如何存放,普通文件在磁盘上如何存放

    二、磁盘与文件系统的相关术语
    1、磁盘分区partition:把一个物理磁盘的存储空间划分为几个相互独立的部分,称为分区
    2、文件卷volume:磁盘上的逻辑分区,由一个或多个物理快(簇)组成
    2.1、一个文件卷可以由整个磁盘或部分磁盘,或跨越多个磁盘组成
    2.2、同一个文件卷中使用同一份管理数据对进行文件分配和磁盘空间管理,不同的文件卷中的管理数据是相互独立的
    2.3、一个文件卷上的内容包括:文件系统信息,一组文件(用户文件和目录文件),未分配空间
    2.4、块block或簇cluster:一个或多个连续的扇区,可寻址数据块,大小通常为2^n
    3、格式化format:在一个文件卷上建立文件系统,建立并初始化用于文件分配和磁盘空间管理管理数据(元数据)

    三、磁盘上存放的内容
    1、引导区:包括了从该卷引导操作系统所需要的信息,每个卷(分区)一个,通常位于卷(分区)的第一个扇区
    2、卷(分区)信息:包括该卷(分区)的块(簇)数,块(簇)大小,空闲块(簇)数量和指针,空闲FCB数量和指针
    3、目录文件:根目录文件及其他目录文件
    4、用户文件

    四、磁盘上的文件布局示例
    1、Unix

    在这里插入图片描述

    2、Windows中的FAT文件系统布局
    在这里插入图片描述

    2.1、Windows中文件分配表2是文件分配表1的镜像

    内存中需要的数据结构,Unix为例:

    一、系统打开文件表
    1、整个系统只维护一张这样的表
    2、此表放在内存中,用于保存已经打开的文件的FCB
    3、表结构

    在这里插入图片描述

    二、用户打开文件表
    1、每个进程维护一个这样的表
    2、进程的PCB中记录了用户打开文件表的位置
    3、表结构

    在这里插入图片描述

    文件目录检索过程

    访问一个文件有两步,分别是检索目录和文件寻址
    一、目录检索
    1、用户给出文件名-》按照文件名查找到目录项FCB
    2、绝对路径会从根目录开始查询
    3、相对路径会从当前目录开始查询

    二、文件寻址
    根据目录项FCB中文件物理地址等信息,计算出文件中任意记录或字符在存储介质上的地址。

    三、目录检索的实现
    1、目录检索的速度直接影响了文件目录检索的效率,所以加快目录检索是非常有必要的
    2、提高目录检索的一种方法

    四、目录项分解法:
    把FCB分成两部分,分别是符号目录项和基本目录项,符号目录项存放文件名和文件号,基本目录项存放文件名以外的所有字段

    在这里插入图片描述

    目录项分解法将基本目录项和符号目录项分开存放,基本目录项占用的磁盘空间的物理块数目少于整个FCB的空间,在磁盘中检索文件项时,访问的磁盘物理块数目就会大大减少,整体上减少检索文件时的平均访盘次数,访问到文件名对应的文件号后,使用得到的文件目录号到基本目录项中获得FCB(算一次访盘),提升了访盘速度。

  • 相关阅读:
    AtCoder Beginner Contest 237 VP补题
    JPEG算法及例程
    CentOS7 下载安装卸载 Docker——Docker启动关闭
    Tomcat 源码分析 (Tomcat请求处理流程) (五)
    精通Nginx(17)-安全管控
    稀碎从零算法笔记Day59-LeetCode: 感染二叉树需要的总时间
    使用JDBC访问微软Access实例
    java-net-php-python-46jspm制衣厂后整管理系统计算机毕业设计程序
    【云原生】设备入云之FlexCloud云端组态实战篇
    Spring Boot 整合 Kafka
  • 原文地址:https://blog.csdn.net/ganfanren00001/article/details/126116408