一个进程可以打开/创建多个文件,即 进程:打开的文件 = 1:n
OS中存在多个进程,那就说明可能存在更多文件
所以,OS必须对进程中打开的文件进行管理
在了解文件如何被管理之前,我们需要先了解 文件是以何种形式存在于操作系统上的??
目录
一、文件的存储方式
1、文件的一般存储形式
我们在平时看到的文件诸如下面这样, 但是这只是Windows上表现出来的形式
![]()
这是Linux上文件的表现形式,通常这些文件是放在磁盘上的
![]()
问:一个空文件(0KB的文件) 是否会占据磁盘空间??
答:会的,无论是Windows还是Linux系统,文件一旦被创建,就会有文件的创建时间、文件权限等属性信息,这些信息都需要地方存放
所以!!!磁盘文件 = 文件内容 + 文件属性
2、文件的数据化存储形式
一个文件包含文件内容和文件属性信息,这些信息都会被存放在一个结构体 struct file中

对于多个文件,就以双链表的形式相互联系起来

二、进程与struct file的关系
文件这么多,哪些是属于当前进程的呢??
进程的task_struct中包含一个 struct files来专门管理当前进程的文件(左图)
struct files包含的指针数组 fd_array[ ]存放着各个文件的地址,通过这些地址我们可以找到对应的文件(右图)

本文详细介绍了文件在操作系统中的存储方式,包括一般存储形式和数据化存储形式,并探讨了文件描述符的概念及其在进程中的作用。每个进程通过structfiles结构管理其打开的文件,文件描述符作为索引指向文件结构体。此外,文件结构体包含的文件操作函数指针使得系统调用能与底层驱动交互完成读写操作。总结了文件读写的基本流程,从打开文件获取描述符到根据描述符定位文件结构体,最后执行读写操作。
最低0.47元/天 解锁文章
1015

被折叠的 条评论
为什么被折叠?



