文件的访问模式:
1、规范模式:
2、同步模式:
3、内存映射模式:
4、直接I\O模式
5、异步模式: 内存映射模式:
1、共享型:在线性区页上的任何写操作都会修改磁盘上的文件;而且这种修改对映射了同一文件的所有进程都是可见的。
2、私有型:进程创建只读文件的时候用到,效率更高。对它对写操作不会改变磁盘文件,也对其他进程不可见。
3、内存映射的创建同样不是立即分配页框,而是尽量推迟;当进程对它进行寻址时,就产生一个缺页异常。
4、非线性内存映射,它映射的不是文件的顺序页,而是每一内存页都映射文件数据的随机页。 直接I\O传送:
1、自缓存应用程序:更愿意具有控制I\O数据传输机制的全部权利,例如高性能数据库服务器。
2、很多页框浪费在复制已经在RAM中的磁盘数据上。
3、处理页高速缓存和预读的多余指令降低了read和write系统调用的执行效率,也降低了与文件内存映射相关的分页操作
4、read 和 write 系统调用不是在磁盘和用户态存储器直接直接传送数据,而是分两次传送:磁盘和内核缓冲区,内核缓冲区和用户态存储器。 异步I\O传送:
1、异步实现方式就是创建一个子进程,由它去执行read、write的系统调用。父进程继续执行。

深入理解Linux内核-访问文件的更多相关文章

  1. 读书笔记之Linux系统编程与深入理解Linux内核

    前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...

  2. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  3. Linux 内核的文件 Cache 管理机制介绍

    Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...

  4. Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc) (转载)

    [转](转)Linux内核访问外设I/O资源的方式-静态映射(map_desc)方式 Linux内核访问外设I/O资源的方式 Author: Dongas Date: 08-08-02 我们知道默认外 ...

  5. Linux 内核的文件 Cache 管理机制介绍-ibm

    https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使 ...

  6. Linux内核头文件与内核与库的关系

    看上一篇文章中对buildroot的介绍,里面的文档第 3.1.1.1 Internal toolchain backend 节内容 C库会去访问Linux kernel headers(*.h)文件 ...

  7. 【读书笔记::深入理解linux内核】内存寻址【转】

    转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...

  8. 【读书笔记::深入理解linux内核】内存寻址

    我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...

  9. linux内核initrd文件自定义方法

    linux内核initrd文件自定义方法 重新编译内核后,可能加入了自定义的模块,就有可能需要修改init文件,而init文件就在initrd中,这里记录下操作步骤,以防遗忘. 1.  cp  /bo ...

  10. Linux内核DTB文件启动的几种方式

      版权:  凌云物网智科实验室< www.iot-yun.com > 声明:  本文档由凌云物网智科实验室郭工编著! 作者:  郭文学< QQ: 281143292  guowen ...

随机推荐

  1. 【转】UIAutomator源码分析之启动和运行

    我们可以看到UiAutomator其实就是使用了UiAutomation这个新框架,通过调用AccessibilitService APIs来获取窗口界面控件信息已经注入用户行为事件,那么今天开始我们 ...

  2. adb shell dumpsys的使用

    该命令用于打印出当前系统信息,默认打印出设备中所有service的信息,可以在命令后面加指定的service name. 有两种方法可以查看service list: 1. adb shell dum ...

  3. VSTS 免费代码git/tfs托管体验-使用代码云托管

    虽然各种代码托管平台很多.真正免费的私有仓储 却很少.微软的东西还是值得一用.免费版,5个用户.够了. 申请地址: https://www.visualstudio.com/zh-hans/free- ...

  4. 自己使用过比较好用的VSCode插件

    C/C++  [ms-vscode.cpptolls]    智能推导,调试和代码浏览 C/C++ Clang Command Adapter [mitaki28.vscode-clang]   使用 ...

  5. 网站PV、UV以及查看方法

    网站PV.UV以及查看方法 一.名词解释 PV:PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次.注意,访客每刷新一次页面,pv就增加一次. UV:UV是 ...

  6. Dockerfile 构建google-chrom应用

    cat Dockerfile.chrome FROM centos MAINTAINER zh******ech.cn ENV LANG en_US.UTF-8 RUN /bin/cp /usr/sh ...

  7. Iterm2的一些好用法

    今天把mac带到公司办公了,爽歪歪啊. 1,如何脱离鼠标拷贝屏幕中的内容 1) Command+f  调出选择框,并在其中输入要复制的字符,可以使用Tab补全 2) 按 Command + c复制字符 ...

  8. xshell连接centos vi编辑器不能使用小键盘

    莫名其妙的本人的xshell,在vim编辑脚本的时候,右侧小键盘无法输出数字,输出的都是一些字母,而且还是一个字母占一行,太过艹蛋! 后来就按照正规的操作步骤,又重建了连接,居然发现正常了! 百思一虑 ...

  9. 使用requests库发起gbk编码的get请求

    有一个爬虫,查询需要发起get请求,这个网站整个都是gbk编码 如果直接发起请求,是不可以的,因为请求参数q首先用utf8编码转化成bytes,然后将bytes进行URLEncode变为字符串. re ...

  10. 实测iOS Dynamic Framework 对 App 启动时间的影响效果

    最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...