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模型---学习笔记的更多相关文章

  1. Linux下面的IO模型

    1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞      应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空 ...

  2. linux下文件搜索命令学习笔记

    1. locate:按照文件名搜索文件 locate filename 与find在整个操作系统中遍历搜索不同,locate命令在/var/lib/mlocate这个后台数据库中按照文件名搜索,所以优 ...

  3. Linux 的 Socket IO 模型

    前言 之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系. 他 ...

  4. NIO模型学习笔记

    NIO模型学习笔记 简介 Non-blocking I/O 或New I/O 自JDK1.4开始使用 应用场景:高并发网络服务器支持 概念理解 模型:对事物共性的抽象 编程模型:对编程共性的抽象 BI ...

  5. [转载] Linux五种IO模型

      转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析   目录(?)[-] 概念理解 Lin ...

  6. Linux五种IO模型(同步 阻塞概念)

    Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.比如,调用readfrom系统调用时,必须等待IO操 ...

  7. 概率图模型学习笔记:HMM、MEMM、CRF

    作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  8. Windows五种IO模型性能分析和Linux五种IO模型性能分析

    Windows五种IO模型性能分析和Linux五种IO模型性能分析 http://blog.csdn.net/jay900323/article/details/18141217 http://blo ...

  9. (转载) Linux五种IO模型

    转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型及分析   目录(?)[-] 概念理解 Linux下 ...

随机推荐

  1. Mybatis-基本学习(上)

    目录 Mybatis mybatis开始 -----环境准备 一.简介 1.什么是MyBatis 2.持久化 3.持久层 4.为什么需要Mybatis? 二.第一个Mybatis程序 1.搭建环境 1 ...

  2. 现在互联网好多bug 想到都烦

    我接触计算机十多年了,只是在15年前发布一篇给计算机有关的技术文章,后来就在也不发表了,今天在163博客写个备录,,写到一半结果误 关了,,浪费了好几个小时,还以为像以前那样,又要重写,,这也是我不爱 ...

  3. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!

    OpenYurt作为阿里巴巴首个开源的边缘云原生项目,涉及到边缘计算和云原生两个领域.然而,许多边缘计算的开发者并不熟悉云原生相关的知识.为了降低 OpenYurt 的使用门槛,帮助更多地开发者快速上 ...

  4. 215 day01_Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...

  5. 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

    文/朱季谦 本文主要想通过动手实际分析一下是如何通过DNS服务器来解析域名获取对应IP地址的,毕竟,纸上得来终觉浅,绝知此事要躬行. 域名与IP地址 当在浏览器上敲下"www.baidu.c ...

  6. Elasticsearch(ES)的滚动搜索与批量操作

    1. 概述 今天我们来聊一下Elasticsearch(ES)的滚动搜索与批量操作. 2. Elasticsearch(ES)的滚动搜索 2.1 概述  滚动搜索我们经常能够用到,例如:推荐列表,此类 ...

  7. Linux系列(33)- rpm命令管理之RPM包校验提取(5)

    校验 格式 rpm -V 已安装的包名 选项: - -V:校验指定RPM包中的文件(verify) 例子 rpm -V httpd 后, 无任何提示, 代表该文件没有被做任何修改 # 判断本地的apa ...

  8. JAVA-java内存分配

    二.java-class的内存分配 三.JAVA string类特别之处 String 通过构造方法创建是在堆内存中, 通过直接赋值对象是在方法区的常量里 四.字符串做拼接 非常耗时和浪费内存的原因 ...

  9. ubuntu 安装 gightingale

    ubuntu 安装 nightingale 准备情况 # 三台ubuntu机器 192.168.1.91 master 192.168.1.92 node1 192.168.1.93 node2 # ...

  10. 通用JS七

    instanceof 在原型链上寻找这个属性的定义 match 正则匹配字符串 Symbol() Symbol()函数不能用作构造函数,与new关键字一起使用.这样做是为了避免创建符号包装对象,像使用 ...