操作系统之文件系统的基本概念

目录

用户和磁盘视角的文件

文件控制块(FCB)和索引结点(inode)

文件的操作

创建文件(create系统调用)

写文件(write系统调用)

读文件(read系统调用)

重新定位文件

删除文件(delete系统调用)

截断文件

文件保护

目的

方法

文件的逻辑结构

无结构文件

有结构文件

文件的物理结构

连续分配

链接分配

索引分配

优化机制


用户和磁盘视角的文件

  • 用户视角:文件被视为字符流或字节流,用户通过文件名来访问文件内容。
  • 磁盘视角:文件是由一系列盘块组成的集合,每个盘块包含文件数据的一部分。

文件控制块(FCB)和索引结点(inode)

  • 文件控制块(FCB)
    • 作用:存放控制文件所需的信息,实现"按名存取"。
    • 内容:包括文件名、物理位置、逻辑结构、物理结构、存取控制信息和使用信息。
  • 索引结点(inode)
    • 引入原因:减少内存中文件目录的大小,提高检索效率。
    • 磁盘索引结点:每个文件有一个唯一的磁盘索引结点,包含文件主标识符、类型、存取权限、物理地址、长度、链接计数、存取时间等。
    • 内存索引结点:文件打开时,磁盘索引结点复制到内存,包含索引结点编号、状态、访问计数、逻辑设备号、链接指针等。

文件的操作

写文件(write系统调用)

写文件操作允许用户将数据写入到文件中。这个过程包括:

读文件(read系统调用)

读文件操作允许用户从文件中读取数据。操作步骤如下:

重新定位文件

重新定位文件操作(通常通过lseek系统调用)改变文件的读写位置。这包括:

删除文件(delete系统调用)

删除文件操作从文件系统中移除指定的文件。这个过程通常涉及:

截断文件

截断文件操作将文件的大小减小到用户指定的大小。这通常包括以下步骤:

创建文件(create系统调用)

创建文件操作允许用户在文件系统中生成一个新的文件实体。这个过程通常涉及以下步骤:

  • 检查权限:系统检查用户是否有权限在指定目录下创建文件。
  • 分配FCB:系统为新文件分配一个文件控制块(FCB),并在其中填写文件名、创建时间、文件所有者等信息。
  • 分配inode:系统为新文件分配一个索引结点(inode),记录文件的物理位置、大小、访问权限等。
  • 初始化存储空间:根据文件的物理结构,系统可能会分配一个或多个磁盘块来存储文件数据。
  • 定位:系统根据文件指针确定写入位置。
  • 写入数据:系统将用户指定的数据写入到文件的相应位置。
  • 更新FCB和inode:系统更新文件控制块和索引结点,以反映文件的新大小和最后修改时间。
  • 分配新块:如果文件需要更多存储空间,系统会分配新的磁盘块。
  • 定位:系统根据文件指针确定读取位置。
  • 读取数据:系统从文件的指定位置读取数据,并将其传送到用户指定的缓冲区。
  • 更新文件指针:读取操作完成后,系统更新文件指针,以便下次操作可以从新的位置开始。
  • 设置文件指针:用户可以指定新的位置,系统将文件指针移动到该位置。
  • 检查边界:系统确保新的位置在文件的合法范围内。
  • 检查权限:系统检查用户是否有权限删除该文件。
  • 释放FCB:系统释放文件的文件控制块。
  • 释放inode:系统释放文件的索引结点。
  • 释放存储空间:系统释放文件所占用的所有磁盘块,以便这些块可以被重新使用。
  • 检查权限:系统检查用户是否有权限修改文件大小。
  • 调整大小:系统将文件大小减小到指定的大小,释放多余的数据块。
  • 更新FCB和inode:系统更新文件控制块和索引结点,以反映文件的新大小。
  • 处理剩余数据:如果文件被缩小,系统会处理剩余的数据块,可能会将其标记为可用

文件保护

目的
  • 防止文件共享时被破坏或未经允许的修改。
方法
  • 口令保护:访问文件时需提供口令。
  • 加密保护:文件加密,访问时需密钥解密。
  • 访问控制
    • 访问控制列表:规定用户及其所允许的访问类型。
    • 访问类型:读、写、执行、添加、删除、列表清单。
    • 用户访问权限:与文件属性共同限制文件访问。

文件的逻辑结构

无结构文件
  • 数据按顺序组织,适合基本信息单位操作不多的文件。
有结构文件
  • 顺序文件:通常是定长的,可以顺序存储或链式存储。
  • 索引文件:适用于定长和变长记录文件,提高检索效率。
  • 索引顺序文件:为顺序文件建立索引表,每组第一条记录有一个索引项。
  • 直接文件或散列文件:通过键值或散列函数直接决定记录的物理地址。

操作系统之文件的逻辑结构-CSDN博客

文件的物理结构

连续分配
  • 每个文件在磁盘上占有一组连续的块,支持随机存取,但可能导致外部碎片。
链接分配
  • 隐式链接:磁盘块离散分配,每个块(除最后一个)有指向下一个块的指针。
  • 显式链接:链接指针存放在内存的文件分配表(FAT)中,提高检索速度,支持随机访问。
索引分配
  • 每个文件有一个索引块,包含指向文件各块的指针,支持随机存取。

后面补

优化机制
  • 链接方案:多个索引块链接在一起处理大文件。
  • 多层索引:类似多级页表,处理大型索引块。
  • 混合索引:结合链接分配和索引分配的优点。
相关推荐
别说我什么都不会12 小时前
鸿蒙轻内核M核源码分析系列十二 事件Event
操作系统·harmonyos
qq_437896431 天前
动态内存分配算法对比:最先适应、最优适应、最坏适应与邻近适应
操作系统
别说我什么都不会1 天前
鸿蒙轻内核M核源码分析系列十一 (2)信号量Semaphore
操作系统·harmonyos
别说我什么都不会2 天前
鸿蒙轻内核M核源码分析系列十 软件定时器Swtmr
操作系统·harmonyos
别说我什么都不会2 天前
鸿蒙轻内核M核源码分析系列九 互斥锁Mutex
操作系统·harmonyos
别说我什么都不会3 天前
鸿蒙轻内核M核源码分析系列七 动态内存Dynamic Memory
操作系统·harmonyos
别说我什么都不会3 天前
鸿蒙轻内核M核源码分析系列六 任务及任务调度(3)任务调度模块
操作系统·harmonyos
徐徐同学3 天前
【操作系统】操作系统概述
操作系统·计算机系统
守望时空334 天前
Linux内核升级指南
linux·操作系统
塞尔维亚大汉4 天前
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【用户态内存调测】
操作系统·harmonyos