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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值