文件描述符表、文件结构表和文件节点
- 文件描述符表:每个进程都维护着自己的一个文件描述符表,每个文件描述符占其中一。该表记录进程打开的文件相关信息,因文件描述符为进程所有,文件描述符表也为进程内共享;文件表结构体内存在一个指针变量指向
存放在内核空间的文件结构表
;- 文件结构表:内核为所有打开的文件维护一个文件结构表,记录保存了进程对文件读写的相关信息。对于一个文件来每个进程都各自拥有文件结构,是因为这可以使每个进程都有自己的对该文件的当前读写指针(文件操作偏移量),同时存在
一个文件节点指针,指向文件节点结构体
;- 文件节点:每个打开的文件都有一个文件节点,对于一个给定的文件只有一个文件节点,用于记录文件相关的权限、用户等信息;
在SylixOS中,IO系统结构分为ORIG型和NEW_1型,ORIG模型使用文件描述符,文件结构表,设备头及底层驱动实现构成,NEW_1 型驱动结构在 ORIG 的基础上增加了文件节点,从而引入文件访问权限、文件用户信息、文件记录锁等内容,这里针对NEW_1型驱动展开。
IO系统相关描述:
- 每一个文件描述符对应一个文件结构,不同的文件描述符可以对应同一个文件结构;当对应同一个文件结构的所有文件描述符被关闭时,操作系统会释放对应的文件结构,同时调用相应的驱动程序。
- 不同的文件结构可以指向同一个逻辑设备,例如一个 FAT文件系统设备就可以被打开很多个文件结构。
- 不同的逻辑设备也可以对应同一个驱动程序,例如物理结构相同的串口 0、串口 1 可以对应一组为其服务的驱动程序,每一组驱动程序具体服务的硬件设备则由底层 BSP 决定。
数据结构相关定义及描述:
g5hjkl’
- 每个进程都维护着自己的一个文件描述符表,每个文件描述符占其中一项,与每个
文件描述符
相关联的是:- 指向文件结构的指针;
- 文件引用计数;
- 文件描述符标志(FD_CLOEXEC)。
- 内核为所有打开的文件维护一个文件结构表,每一个
文件结构
表项包括(部分):- 设备头指针(这个指针指向设备节点);
- 文件名;
- 文件节点指针;
- 文件属性标志(读、写等);
- 文件当前指针(指示文件偏移)。
- 每个打开的文件都有一个文件节点,
文件节点
包括(部分):- 设备描述符;
- inode(同一个文件只有一个 inode);
- 文件权限信息(可读、可写、可执行);
- 文件用户信息;
- 当前文件大小;
- 文件记录锁指针。