磁盘文件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,它们是可变大小的列表,比较适合构 ...
随机推荐
- 商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现
前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要 ...
- poj1182食物链,经典带权并查集
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种 ...
- input file图片上传预览效果
两种方法,方法一: js代码: //头像上传预览 $("#up").change(function() { var $file = $(this); var fileObj = $ ...
- 十分钟彻底理解javascript 的 this指向,不懂请砸店
函数的this指向谁,和函数在哪里被定义的,函数在哪里被执行的没有半毛钱关系,只遵守下面的规律: 在非严格模式中: 1.自执行函数里面,this永远指向window; <script> v ...
- Linux目录与文件的权限
零.Linux中的权限为什么重要? 权限直接关系数据安全! 一.用户基础概念: 所有者(owner):拥有这个文件的用户.一般拥有目录或文件的所有权限. 用户组(group):几个用户组成一个用户组, ...
- Scrapy 爬虫框架入门案例详解
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:崔庆才 Scrapy入门 本篇会通过介绍一个简单的项目,走一遍Scrapy抓取流程,通过这个过程,可以对 ...
- 解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- Android开发之布局--RelativeLayout布局
RelativeLayout 相对布局 true或false属性 Layout_centerHorizontal 当控件位于父控件的横向中间位置 Layout_centerVertical 当 ...
- Vmware虚拟机中安装cnetOS7详细图解步骤
1.安装VMware 下载一个软件安装: .新建一个虚拟机 .引用安装包 4.启动新建的虚拟机 .安装CentOS7的步骤 配置系统语言: 配置系统时间: 配置系统键盘: 配置键盘切换的快捷键: 配置 ...
- [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci
题意:在前100000个Fibonacci(以下简称F)数字里,能否在这100000个F里找出以某些数字作为开头的F.要求找出下标最小的.没找到输出-1. 代码:(Accepted,0.250s) / ...