OS管理文件的方式(文件读写的过程)

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

一个进程可以打开/创建多个文件,即 进程:打开的文件 = 1:n

OS中存在多个进程,那就说明可能存在更多文件

所以,OS必须对进程中打开的文件进行管理

在了解文件如何被管理之前,我们需要先了解 文件是以何种形式存在于操作系统上的??


目录

一、文件的存储方式

1、文件的一般存储形式

2、文件的数据化存储形式

 二、进程与struct file的关系

三、文件描述符是什么?

四、文件结构体struct file如何跟底层驱动打交道?

五、总结:文件读写的过程

(1) 打开某个文件,获取对应的文件描述符

 (2) 根据文件描述符定位到对应的文件结构体的具体位置


一、文件的存储方式

1、文件的一般存储形式

我们在平时看到的文件诸如下面这样, 但是这只是Windows上表现出来的形式

这是Linux上文件的表现形式,通常这些文件是放在磁盘上的

问:一个空文件(0KB的文件) 是否会占据磁盘空间??

答:会的,无论是Windows还是Linux系统,文件一旦被创建,就会有文件的创建时间、文件权限等属性信息,这些信息都需要地方存放

所以!!!磁盘文件 = 文件内容 + 文件属性

2、文件的数据化存储形式

一个文件包含文件内容和文件属性信息,这些信息都会被存放在一个结构体 struct file中

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

 二、进程与struct file的关系

文件这么多,哪些是属于当前进程的呢??

进程的task_struct中包含一个 struct files来专门管理当前进程的文件(左图)

struct files包含的指针数组 fd_array[ ]存放着各个文件的地址,通过这些地址我们可以找到对应的文件(右图)

                           

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值