操作系统补充知识点归档
文件系统
1. 文件创建(Create)
文件创建是指在文件系统中生成一个新的文件。
操作步骤:
- 指定文件名: 用户或应用程序需要指定新文件的名称和路径。
- 分配目录项: 文件系统会在目标目录下分配一个新的目录项,用于存储文件的元数据。
- 分配磁盘空间: 文件系统分配一定数量的磁盘块给该文件,通常至少包含一个用于存储文件的内容。
- 初始化文件描述符: 创建一个文件描述符,供后续文件操作使用。
系统调用:
creat()
:创建一个新文件,通常同时打开该文件。open()
:可以用于创建文件,当文件不存在时,如果指定了O_CREAT
标志,文件将被创建。
2. 文件删除(Delete)
文件删除是指从文件系统中移除一个文件,使其无法再被访问。
操作步骤:
- 找到文件路径: 系统需要确定要删除的文件的完整路径。
- 释放目录项: 文件系统从目录结构中移除该文件的目录项。
- 释放磁盘空间: 文件系统释放该文件占用的所有磁盘块,使这些块可以被其他文件重用。
- 关闭文件描述符: 如果文件正被打开,需要关闭其对应的文件描述符。
系统调用:
unlink()
:用于删除文件。remove()
:删除文件或目录。rmdir()
:用于删除空目录。
3. 文件读取(Read)
文件读取是指从文件中获取数据,通常涉及将数据从磁盘或缓存加载到内存。
操作步骤:
- 打开文件: 使用文件描述符打开文件。
- 读取数据: 指定读取的字节数,系统会从指定位置(或当前读指针)开始读取数据。
- 更新读指针: 读取数据后,系统会自动更新文件的读指针,使其指向下一次读取的位置。
系统调用:
read()
:从文件中读取数据。pread()
:从指定偏移量处读取数据,不影响当前文件指针。
4. 文件写入(Write)
文件写入是指向文件中写入数据,将数据存储到磁盘上。
操作步骤:
- 打开文件: 使用文件描述符打开文件,并指定写入模式。
- 写入数据: 系统会将数据写入文件的指定位置(或当前写指针位置)。
- 更新写指针: 写入数据后,系统会自动更新文件的写指针。
- 更新文件大小: 如果写入的数据超出了当前文件大小,文件系统会扩展文件大小以适应新数据。
系统调用:
write()
:向文件中写入数据。pwrite()
:向文件的指定偏移量写入数据,不影响当前文件指针。append()
:在文件末尾追加数据。
5. 文件打开(Open)
文件打开是指将文件与一个文件描述符关联,以便对文件进行后续的读、写操作。
操作步骤:
- 查找文件路径: 系统通过文件路径查找到文件的目录项。
- 分配文件描述符: 系统为该文件分配一个文件描述符,标识文件在进程中的打开状态。
- 设置文件模式: 指定文件的打开模式(如只读、只写、读写、追加等)。
- 初始化文件指针: 将文件的读写指针初始化为文件的起始位置(或末尾位置,视打开模式而定)。
系统调用:
open()
:打开一个文件并返回文件描述符。fopen()
:用于C标准库中,以文件指针的形式返回。
6. 文件关闭(Close)
文件关闭是指释放文件描述符,将文件从当前进程中断开,保存文件的状态。
操作步骤:
- 刷新缓存: 将文件缓冲区中的数据写回磁盘,确保数据一致性。
- 释放文件描述符: 系统释放文件描述符,使其可以被其他文件或进程使用。
- 更新文件元数据: 文件系统更新文件的元数据,例如最后修改时间、文件大小等。
系统调用:
close()
:关闭文件描述符,使之失效。fclose()
:用于C标准库中,关闭文件指针。
总结:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ephemeral!
评论