磁盘文件I/O,SSD结构,局部性原理 笔记
磁盘文件I/O过程
- 进程向内核发起read scene.dat请求;
- 内核根据inode获取对应该进程的address space,在address space查找page_cache,如果没有找到,内核分配一个page加到内存页;
- 第一次拷贝:读取scene.dat文件相应的页填充页缓存中的页 ;
- 第二次拷贝:内核将page_cahce中的page拷贝到用户进程的堆空间内存;

拷贝完成后,物理内存有两份拷贝(一份在page_cache,一份在用户的堆空间),如图;常规读文件必须从内核空间的page cache拷贝contents到用户空间,不仅耗费CPU时间降低CPU cache的命中,也浪费了物理内存。

mmap
内存映射文件mmap只复制一次是如何做的,mmap只有一次页缓存的复制,从磁盘文件复制到页缓存中;
mmap会创建一个虚拟内存区域vm_area_struct,进程的task_struct维护着这个进程所有的虚拟内存区域信息,虚拟内存区域会更新相应的进程页表项,让这些页表项直接指向页缓存所在的物理页page。mmap新建的这个虚拟内存区域和进程堆的虚拟内存区域不是同一个,所以mmap是在内存映射区域,位于用户进程 栈和堆之间。

页缓存的作用:它位于内存和文件之间(内核空间),文件I/O操作实际上只和页缓存交互,不直接和内存交互。
page结构表示物理内存页帧,同一个物理内存地址可以同时被内核进程和用户进程访问,只要将用户进程的页表项也指向这个物理内存地址。也就是mmap的实现原理。
SSD结构
基于闪存的存储技术,SSD封装插到I/O总线上标准硬盘插槽,一个SSD封装由一个或多个闪存芯片和闪存翻译层组成;闪存芯片替代传统硬盘的机械驱动器,闪存翻译层是一个硬件设备,相当于磁盘控制器的角色,将。逻辑块请求翻译成对底层物理设备的访问。

SSD的读比写快,一个闪存由若干个块的序列组成,每个块由若干页组成,页大小通常512byte~4KB,块有32~128页组成,大小约为16KB~512KB。数据是以页为单位读写的。
写时只有一页所属的块整个被擦除后,才能写这一页(通常该块中所有位置被置为1)。
随机写很慢的原因:
- 擦除块需要相对较长的时间;
- 如果写操作试图修改一个包含已经有数据的页,这个块中的所有有用数据的页都必须拷贝到一个新的块,然后才能对该页写。
SSD的优点:没有移动的部件,随机访问时间比旋转磁盘要快,能耗更低;反复写之后,闪存块会磨损;闪存翻译层中的平均磨损逻辑试图通过将擦除平均分布在所有的块来最大化每个块的寿命。
局部性原理
局部性原理通常有两种不同的形式:时间局部性和空间局部性;一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再次被多次引用;
一个具有良好空间局部性的程序中,如果内存位置被引用了一次,很可能在不远的将来引用附件的一个内存位置。
- 重复引用相同变量的程序有良好的时间局部性;
- 对于步长为k的引用模式的程序,步长越小,空间局部性越好。
- 对于取指令来说,循环有好的时间和空间局部性。循环越小,迭代次数越多,局部性越好。
链接
Page Cache, the Affair Between Memory and Files
《深入理解计算机系统》(第三版) 第六章
磁盘文件I/O,SSD结构,局部性原理 笔记的更多相关文章
- 【翻译】CEDEC2013 BANDAI NAMCO 了解游戏格斗动画中的身体运动结构和原理
CEDEC搬运工程开始~ 这篇会议PPT的作者 元梅幸司曾经就职在TECMO参与开发了死或生2,3[ DEAD OR ALIVE],忍龙「NINJA GAIDEN」后来加入NAMCO(现在是BAN ...
- Jmeter 结构、原理介绍
Jmeter结构.原理介绍 一.Jmeter 简介 1.是基于java语言的开源的应用软件. 2.可以进行接口测试.性能测试.接口及性能的自动化测试. 二.Jmeter体系结构 元件:可以理解为每一个 ...
- [转帖]SSD的工作原理、GC和TRIM、写入放大以及性能评测
SSD的工作原理.GC和TRIM.写入放大以及性能评测 https://blog.csdn.net/scaleqiao/article/details/50511279 SSD的物理结构和工作原理 ...
- 局部性原理的点滴应用场景 use of localityprinciple
话说九月份博士入学面试的时候被问到了一个问题:请说明一下局部性原理在计算机科学中的应用场景?(哈哈,不记得怎么问的了,大概是这个意思)但是巴拉巴拉整半天却也只说出了一个Cache,后来补充的也都是跟C ...
- Python的dict字典结构操作方法学习笔记
Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...
- 3D-camera结构光原理
3D-camera结构光原理 目前主流的深度探测技术是结构光,TOF,和双目.具体的百度就有很详细的信息. 而结构光也有双目结构光和散斑结构光等,没错,Iphone X 的3D深度相机就用 散斑结构光 ...
- B/S结构通信系统原理
本文介绍JavaWeb的B/S结构通信原理 概念: Javaweb中B/S架构是一种系统架构形式,这里的B是Browser(浏览器),S是Server(服务器),是一种系统的架构形式,有 ...
- 详细了解 InnoDB 内存结构及其原理
最近发现,文章太长的话,包含的信息量较大, 并且需要更多的时间去阅读.而大家看文章,应该都是利用的一些碎片时间.所以我得出一个结论,文章太长不太利于大家的吸收和消化.所以我之后会减少文章的长度,2-3 ...
- Map实现之HashMap(结构及原理)(转)
java.util包中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构 ...
随机推荐
- C#小知识点记录(QQ交流群的一个小问题)Linq提取数据
请教 这里 LINQ想 找到 最后的 4条 记录 然后放在 这里这个 List Linq查找怎么写呀? 解答:写了一个小例子作为解答. namespace C_Sharp { class Progra ...
- Java设置Excel单元格式
XSSFWorkbook wb = new XSSFWorkbook(); CellStyle style = wb.createCellStyle(); style.setBorderRight(C ...
- Elasticsearch - 快速入门
Elasticsearch是基于Apache 2.0开源的实时.分布式.分析搜索引擎,相比Lucene,Elasticsearch的上手比较容易,这篇文章主要纪录Elasticsearch的基本概念和 ...
- [codevs]1087麦森数
题目 这个题在noiOJ上是分治专题,这个题包括了很多,求位数,高精度乘,快速幂. 那么单独把这个高精度拿出来做一个自定义函数即可 一.求位数 显而易见,既然是2进制的就是log2X,是10进制就是l ...
- 清北Day 2
清北第二天,感受到了来自这个世界的不友善,大概把没听过不会的"名词"记录下来就已经一面了,然后被大佬说这都是最基础的东西,就很皮,那就趁别人练习字符串的题的时候,来写波博客了,倒不 ...
- SOA 下实现分布式 调用 cxf+ webService +动态调用
近期项目间隙 自学了 webservice 一下 是我写的 一个demo 首先我们在web.xml 里配置如下 <servlet> <servlet-name>CXFS ...
- java之反射
初学反射,也是第二次写博客了把,就简单记录一下. Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对 ...
- [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...
- Servlet,过滤器,监听器,拦截器的区别
1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml ...
- Spring IOC的使用
控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,目的是为了获得更好的扩展性和良好的可维护性.所谓依 ...