教材7、8章知识点
-
文件操作级别:
- 硬件级别
- 操作系统内核中的文件系统函数
- 系统调用
- I/O库函数
- 用户命令
- sh脚本
-
文件I/O操作:
- 打开文件:使用open系统调用打开文件,并返回文件描述符。
- 关闭文件:使用close系统调用关闭文件描述符。
- 读取文件:使用read系统调用从文件中读取数据。
- 写入文件:使用write系统调用向文件中写入数据。
- 定位文件指针:使用lseek系统调用移动文件指针的位置。
-
低级别文件操作:
- 分区:将硬盘划分为多个逻辑区域,每个分区可以独立使用。
- 格式化分区:对分区进行格式化,以便于文件系统的创建和使用。
- 挂载分区:将分区与文件系统关联,使其可以被操作系统识别和访问。
-
EXT2文件系统:
- 数据结构:包括超级块、块组描述符、位图、索引节点、目录条目等。
- 超级块:存储文件系统的整体信息,如分区大小、块大小、索引节点数量等。
- 块组描述符:存储每个块组的信息,如空闲块数量、空闲索引节点数量等。
- 位图:记录每个块或索引节点的使用情况。
- 索引节点:存储文件的元数据,如权限、大小、时间等。
- 目录条目:存储目录中的文件名和对应的索引节点。
-
系统调用:
- 系统调用是操作系统提供给应用程序的接口,用于访问底层系统资源。
- 系统调用可以用C语言编写,通常通过软中断或陷阱指令触发。
- 系统调用的执行过程包括参数传递、内核态切换、系统调用处理、返回结果等。
-
系统调用手册页:
- 系统调用手册页是系统提供的文档,包含了系统调用的详细信息。
- 可以使用man命令查看系统调用手册页,如man 2 open。
-
使用系统调用进行文件操作:
- 打开文件:使用open系统调用打开文件,并指定打开模式和权限。
- 关闭文件:使用close系统调用关闭文件描述符。
- 读取文件:使用read系统调用从文件中读取数据,并指定读取的长度。
- 写入文件:使用write系统调用向文件中写入数据。
-
常用的系统调用:
- open:打开文件。
- close:关闭文件。
- read:读取文件数据。
- write:写入文件数据。
- lseek:定位文件指针。
- stat:获取文件的状态信息。
-
链接文件:
- 链接是指将一个文件名与一个文件关联起来。
- 可以通过硬链接和软链接两种方式进行文件的链接。
- 硬链接是指将一个文件名与一个索引节点关联,可以通过多个文件名访问同一个文件数据。
- 软链接是指创建一个新的文件名,指向原文件名所在的路径。
-
stat系统调用:
- stat系统调用用于获取文件的状态信息,如文件类型、权限、大小、时间等。
- 可以通过stat结构体中的成员变量获取文件的各种属性。
-
open-close-lseek系统调用:
- open系统调用用于打开文件,并返回文件描述符。
- close系统调用用于关闭文件描述符。
- lseek系统调用用于定位文件指针的位置。
-
read()系统调用:
- read系统调用用于从文件中读取数据。
- 需要指定文件描述符、缓冲区和读取的长度。
- 返回实际读取的字节数。
-
write()系统调用:
- write系统调用用于向文件中写入数据。
- 需要指定文件描述符、缓冲区和写入的长度。
- 返回实际写入的字节数。
苏格拉底挑战