40、文件系统I/O与路径名管理详解

文件系统I/O与路径名管理详解

1. 文件系统I/O

文件系统I/O有两种不同的方法:
- read() write() 及相关系统调用
- 将文件内存映射到进程的地址空间

这两种方法的实现方式相同:先将文件映射到一个地址空间,然后对映射地址空间内的页面执行分页I/O。虽然将文件内存映射到进程地址空间时进行了内存映射很明显,但 read() write() 系统调用在读写文件之前也会进行文件映射,这一点不太明显。这两种方法的主要区别在于文件映射的位置和执行映射的主体;进程调用 mmap() 将文件映射到其地址空间以进行内存映射I/O,而内核将文件映射到内核地址空间以进行读写操作。这两种方法的对比图如下:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef kernel fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A[mmap()]:::process --> B[File Segment]:::process
    C[write()]:::kernel --> D[Paged VNODE VM Core<br>(File System Cache and Page Cache)]:::kernel
    E[read()]:::kern
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值