深入理解Linux内核-访问文件

文件的访问模式:
1、规范模式:
2、同步模式:
3、内存映射模式:
4、直接IO模式
5、异步模式:

内存映射模式:
1、共享型:在线性区页上的任何写操作都会修改磁盘上的文件;而且这种修改对映射了同一文件的所有进程都是可见的。
2、私有型:进程创建只读文件的时候用到,效率更高。对它对写操作不会改变磁盘文件,也对其他进程不可见。
3、内存映射的创建同样不是立即分配页框,而是尽量推迟;当进程对它进行寻址时,就产生一个缺页异常。
4、非线性内存映射,它映射的不是文件的顺序页,而是每一内存页都映射文件数据的随机页。

直接IO传送:
1、自缓存应用程序:更愿意具有控制IO数据传输机制的全部权利,例如高性能数据库服务器。
2、很多页框浪费在复制已经在RAM中的磁盘数据上。
3、处理页高速缓存和预读的多余指令降低了read和write系统调用的执行效率,也降低了与文件内存映射相关的分页操作
4、read 和 write 系统调用不是在磁盘和用户态存储器直接直接传送数据,而是分两次传送:磁盘和内核缓冲区,内核缓冲区和用户态存储器。

异步IO传送:
1、异步实现方式就是创建一个子进程,由它去执行read、write的系统调用。父进程继续执行。














原文地址:https://www.cnblogs.com/lipeil/p/4747442.html