9、Linux 文件 I/O 与缓冲机制详解

Linux 文件 I/O 与缓冲机制详解

1. 虚拟文件系统(VFS)

虚拟文件系统(VFS)通过提供通用文件模型来实现抽象,这是 Linux 中所有文件系统的基础。借助函数指针和各种面向对象的实践,通用文件模型为 Linux 内核中的文件系统提供了一个必须遵循的框架。这使得 VFS 能够对文件系统进行通用请求,该框架还提供了支持读取、创建链接、同步等操作的钩子。每个文件系统会注册处理其所能执行操作的函数。

这种方法使得文件系统之间具有一定的共性。例如,VFS 使用索引节点(inode)、超级块(superblock)和目录项等概念进行操作。非 Unix 起源的文件系统,可能没有像索引节点这样的类 Unix 概念,但也必须适应。实际上,Linux 能够毫无问题地支持 FAT 和 NTFS 等文件系统。

VFS 的好处是巨大的。单个系统调用可以从任何介质上的任何文件系统读取数据;单个实用程序可以在任何文件系统之间进行复制操作。所有文件系统都支持相同的概念、接口和调用,一切都能正常工作,而且效果良好。

当应用程序发出 read() 系统调用时,会经历一个有趣的过程:
1. C 库提供系统调用的定义,在编译时将其转换为适当的陷阱语句。
2. 用户空间进程陷入内核,经过系统调用处理程序,然后传递给 read() 系统调用。
3. 内核确定给定文件描述符对应的对象。
4. 内核调用与该对象关联的读取函数。对于文件系统,此函数是文件系统代码的一部分。
5. 该函数执行实际操作,例如从文件系统物理读取数据,并将数据返回给用户空间的 read()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值