【OS笔记35】:文件系统的使用、实现与管理

文章目录

  • [6.2.3 文件的使用(主要操作)](#6.2.3 文件的使用(主要操作))
      • [1. 创建文件 (Create)](#1. 创建文件 (Create))
      • [2. 打开文件 (Open)](#2. 打开文件 (Open))
      • [3. 读文件 (Read)](#3. 读文件 (Read))
      • [4. 写文件 (Write)](#4. 写文件 (Write))
      • [5. 关闭文件 (Close)](#5. 关闭文件 (Close))
      • [6. 删除文件 (Delete/Unlink)](#6. 删除文件 (Delete/Unlink))
  • [6.4 文件系统的实现与管理](#6.4 文件系统的实现与管理)

6.2.3 文件的使用(主要操作)

核心概念 :对文件的操作通过操作系统提供的系统调用实现。在编程层面,这些操作表现为一组函数。

1. 创建文件 (Create)

  • 语法fd = creat(pathname, modes)
  • 参数说明
    • pathname:文件存储的路径名。
    • modes:文件的存取权限(如:只读、读写等)。
  • 返回值fd 是文件代号(File Descriptor,文件描述符),后续操作都通过这个 fd 进行。

2. 打开文件 (Open)

  • 语法fd = open(pathname, flags, modes)
  • 参数说明
    • pathname:欲打开的文件路径。
    • flags:打开文件后的操作模式(如:只读 O_RDONLY、只写 O_WRONLY、追加 O_APPEND 等)。
    • modes:文件创建时指定的存取权限。
  • 注意 :在读写文件之前,必须先执行 Open 操作,将文件控制块(FCB)调入内存。

3. 读文件 (Read)

  • 语法number = read(fd, buffer, count)
  • 参数说明
    • fd:文件代号(由 open 返回)。
    • buffer:读出的信息送往用户指定的内存区域首地址(缓冲区)。
    • count:本次请求读取的字节数。

4. 写文件 (Write)

  • 语法number = write(fd, buffer, count)
  • 参数说明
    • fd:文件代号。
    • buffer:保存欲写出信息的缓冲区首地址。
    • count:请求写出的字节数。

5. 关闭文件 (Close)

  • 语法close(fd)
  • 操作意义:撤销该文件在内存中的数据结构,释放系统资源。

6. 删除文件 (Delete/Unlink)

  • 语法unlink(pathname)
  • 参数说明pathname 为被删除文件的路径名。
  • 底层逻辑:在磁盘上找到对应的目录项,释放其占用的物理块。

6.4 文件系统的实现与管理

6.4.1 文件存储空间管理

在深入具体算法之前,需要明确主存(内存)管理文件存储(外存)管理的区别。

内存 、 外存 管理对比表

特性 主存储器 (内存 - 第5章) 辅助存储器 (外存 - 本章)
访问速度 访问快 访问慢
容量大小 容量有限 容量大
CPU访问 处理器可直接访问 处理器不可直接访问
管理名称 操作系统的存储管理 文件存储空间管理
核心任务 用户区、内存块的分配 空闲块的组织和管理

核心任务:对空闲块的管理

文件系统的一大职能是记录磁盘上哪些块是已经被占用的,哪些是空闲的。

常见的管理方法:

  1. 空闲文件表(连续分配常用)
  2. 空闲块链表
  3. 位示图法 (Bitmap)(重要,常见于计算题)
  4. 成组链接法(UNIX系统采用,结构较复杂)

关键概念说明

  1. FD (文件描述符) :文件描述符可以理解为一个"句柄"或"指针"。在 Linux 系统中,"一切皆文件",无论是硬盘上的文件、网卡,还是键盘输入,都通过 fd 进行 read/write 操作。
  2. Open 与 FCB:"打开文件"的操作实质是:系统根据路径名找到目录项,将文件的描述信息(FCB)从磁盘读入内存的打开文件表,并返回一个索引(fd)给用户进程。
相关推荐
曦月逸霜2 小时前
离散数学-学习笔记(持续更新中~)
笔记·学习·离散数学
hunter14503 小时前
windows server AD域与CA部署证书
笔记
im_AMBER3 小时前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
laplace01233 小时前
# 第四章|智能体经典范式构建 —— 学习笔记(详细版)
笔记·学习
别了,李亚普诺夫3 小时前
PCB设计大师篇笔记
笔记·嵌入式硬件·学习
西瓜堆3 小时前
提示词工程学习笔记: IT技术行业提示词推荐
笔记·学习
2301_810746313 小时前
CKA冲刺40天笔记 - day24 Kubernetes Clusterrole 和 Clusterrole Binding
笔记·容器·kubernetes
顾林海3 小时前
Android文件系统安全与权限控制:给应用数据上把“安全锁”
android·面试·操作系统
清风拂山岗 明月照大江3 小时前
同步与死锁
操作系统