linux下的IO模型---学习笔记
1、linux文件系统和缓存
文件系统接口
文件系统—一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。
存储层次
文件系统缓存
主存(通常时DRAM)的一块区域,用来缓存文件系统的内容,包含各种数据和元数据。
2、深入Linux文件IO机制
标准文件访问方式
标准文件IO流程图
直接IO
实现方式
open + O_DIRECT = 绕过内核缓冲区的直接访问,便有效避免了CPU和内存的多余时间开销。
直接绕过IO绕过缓存,不会出现write成功数据丢失的情况,血案不再重演。
注意:直接IO的缺点就是如果访问的数据不在应用程序缓存中,那么每次数据都会直接从磁盘进行加载,这种直接加载会非常缓慢!
通常直接IO跟异步IO结合使用会得到较好的性能。
缓存同步
为了保证磁盘系统与缓冲区中内容一致,Linux系统提供了sync、fsync和fdatasync三个函数。
函数描述:向打开的文件写数据;成功返回写入的字节数,若出错,返回-1。
头文件:
#include
int fsync(int fd);
int fdatasync(int fd);
void sync(void);
说明:
sync ---将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。
fsync --- 将fd对应的文件的块缓冲区立即写入磁盘,并等待实际写磁盘操作结束返回。
fdatasync --- 类似fsybc,但只影响文件的数据部分。除数据外,fsync还会同步更新文件属性。
解决之道
更深一层次的思考
1、如何设计IO读写的尺度,提高IO的效率
2、如何理解随机IO和顺序IO
3、高并发如何提高IO的效率和并发处理能力。
————————————————
视频学习资料供大家参考学习
linux下的IO模型
http://www.makeru.com.cn/live/4011_1565.html?s=45051
Linux开发必备:IO多路复用剖析
http://www.makeru.com.cn/live/3485_1632.html?s=45051
Linux开发必备:1小时玩转儿文件I/O编程
http://www.makeru.com.cn/live/detail/1609.html?s=45051
单链表
http://www.makeru.com.cn/live/5413_1924.html?s=45051
linux系统信号
http://www.makeru.com.cn/live/5413_1936.html?s=45051
linux下的IO模型---学习笔记的更多相关文章
- Linux下面的IO模型
1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空 ...
- linux下文件搜索命令学习笔记
1. locate:按照文件名搜索文件 locate filename 与find在整个操作系统中遍历搜索不同,locate命令在/var/lib/mlocate这个后台数据库中按照文件名搜索,所以优 ...
- Linux 的 Socket IO 模型
前言 之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系. 他 ...
- NIO模型学习笔记
NIO模型学习笔记 简介 Non-blocking I/O 或New I/O 自JDK1.4开始使用 应用场景:高并发网络服务器支持 概念理解 模型:对事物共性的抽象 编程模型:对编程共性的抽象 BI ...
- [转载] Linux五种IO模型
转载:http://blog.csdn.net/jay900323/article/details/18141217 Linux五种IO模型性能分析 目录(?)[-] 概念理解 Lin ...
- Linux五种IO模型(同步 阻塞概念)
Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.比如,调用readfrom系统调用时,必须等待IO操 ...
- 概率图模型学习笔记:HMM、MEMM、CRF
作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Windows五种IO模型性能分析和Linux五种IO模型性能分析
Windows五种IO模型性能分析和Linux五种IO模型性能分析 http://blog.csdn.net/jay900323/article/details/18141217 http://blo ...
- (转载) Linux五种IO模型
转载:http://blog.csdn.net/jay900323/article/details/18141217 Linux五种IO模型及分析 目录(?)[-] 概念理解 Linux下 ...
随机推荐
- mysql多次连接后会产生最大失败值
解决办法 可以更改max_connection_errors的值,即提高允许的max_connection_errors的数量 1.进入mysql 1)首先查看该属性设置为多大:命令:show glo ...
- CSP-J 2021 游记
今年是本人第一次参加CSP组的竞赛. Day 0 晚上复习了几套初赛试卷,做到晚上十点多结束.其实暑假已经做过不少了. Day 1 早上继续复习noip历年真题,在洛谷有题上面自己做题,一向只能考十几 ...
- HCNP Routing&Switching之路由控制、路由策略和IP-Prefix List
前文我们了解了IS-IS路由聚合和认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15306645.html:今天我们来聊一聊路由控制技术中的路由策 ...
- PHP中的PDO操作学习(二)预处理语句及事务
今天这篇文章,我们来简单的学习一下 PDO 中的预处理语句以及事务的使用,它们都是在 PDO 对象下的操作,而且并不复杂,简单的应用都能很容易地实现.只不过大部分情况下,大家都在使用框架,手写的机会非 ...
- disruptor笔记之一:快速入门
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Java基础系列(21)- dowhile循环
do-while循环 对于while语句而言,如果不满足条件,则不能进入循环.但有时候我们需要即使不满足条件,也至少执行一次 do-while循环和while循环相似,不同的是,do-while循环至 ...
- 进入vim /etc/profile如何退出
按o或i输入 按Esc,输入:wq,退出
- python之jsonpath
json 官方文档:http://docs.python.org/library/json.html JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使 ...
- Redis之品鉴之旅(四)
发布订阅,简单场景下的发布订阅完全可以使用. 可以简单的理解,将一个公众号视为发布者,关注公众号的人视作订阅者,公众号发布一条文章或者消息,凡事订阅公众号的都可以收到消息.一个人可以订阅多个公众号,一 ...
- pycharm中安装扩展包
在使用Pycharm编写代码时,如果遇到了所需要的扩展包没有的情况时,可以使用以下方法来添加自己需要的扩展包. 1.点击File->settings 2.选择Project Interprete ...