Linux下访问文件的基本模式
浏览:3063次 出处信息
访问文件的操作主要是指读文件和写文件,下文简单说明内核中几种常见的访问文件的方式。
普通模式
读写系统调用的默认方式。以读系统调用为例,默认情况下读函数以阻塞的形式访问数据,并且使用了内核的页高速缓存机制。而写函数则直接将修改后的数据写入页高速缓存就返回。此时O_SYNC和O_DIRECT两个标志均被置0。
同步模式
同步模式主要是指进程将阻塞到数据请求完成为止,但是读操作默认情况下即为阻塞方式,因此该模式主要针对写函数,此时O_SYNC标志被置1,写函数并不是将页高速缓存中的数据修改后就立马返回,而是直到相应数据被写入磁盘后才返回。
直接I/O模式
该模式下的读写操作并不会使用内核中的页高速缓存机制,而是在用户地址空间和磁盘之间直接进行数据传送。此时O_DIRECT标志被置1。
异步模式
异步模式需要使用特定的系统调用来完成,比如aio_read和aio_write。异步模式是指进程在发出数据请求后并不需要以阻塞的方式等待数据,而是立即返回继续执行其他操作,数据的请求工作在后台自动完成。
内存映射模式
内存映射方式和传统意义上的读写系统调用不同,它将磁盘上的文件映射到进程用户空间的一块虚拟内存中,这样对该文件的操作就可以转化为对内存的操作。通过mmap()就可以实现内存映射。
建议继续学习:
- 关于IO的同步,异步,阻塞,非阻塞 (阅读:14456)
- MySQL在切换binlog时会阻塞更新 (阅读:2944)
- 总结一下遇到过的网络同步IO导致服务阻塞的问题 (阅读:2709)
- 用insert delayed减少阻塞时间 (阅读:2704)
- Linux 核心编程 – fsync, write (阅读:2478)
- PHP非阻塞实现方法 (阅读:1311)
- 说说最近Google:safebrowsing引发页面加载阻塞的问题 (阅读:1133)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Linux下CPU的利用率
后一篇:文件操作函数在VFS层的实现 >>
文章信息
- 作者:edsionte 来源: edsionte's Linuxworld|新手区
- 标签: 内存映射 访问文件 阻塞
- 发布时间:2013-07-15 13:26:14
建议继续学习
近3天十大热文
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成