访问主存
读事务:从主存传送数据到CPU
写事务:从CPU传送数据到主存
总线:一组并行的导线,能携带地址、数据和控制信号。
系统总线:链接总线接口和I/O桥
存储器总线:链接I/O桥和主存html
磁盘容量由如下技术因素决定:
记录密度(位/英寸):磁道一英寸的段中能够放入的位数。
磁道密度(道/英寸):从盘片中心出发半径上一英寸的段内能够有的磁道数
面密度(位/平方英寸):记录密度与磁道密度的乘积。算法
现代大容量磁盘使用一种称为多区记录的技术,柱面的集合被分割称为不相交的子集合,称为记录区,每一个区包含一组连续的柱面。
磁盘操做:磁盘用读/写头来读写存储在磁性表面的位,而读写头链接到一个传动臂一端,经过移动转动臂将读写头定位在磁道上的机械运动称为寻道。编程
磁盘以扇区大小的块来读写数据,对扇区的访问时间有三个主要的组成部分:
寻道时间:转动臂将读/写头定位到包含目标扇区的磁道上所需时间。
旋转时间:驱动器等待目标扇区的第一个位旋转到读/写头下的时间。最大为:ubuntu
平均旋转时间是Tmax的一半。
传送时间:读写并传送该扇区内容的时间。平均传送时间为:
vim
逻辑磁盘块:
现代磁盘将盘面的构造视为一个B个扇区大小的逻辑块序列,磁盘控制器维护着逻辑块号和实际磁盘扇区之间的映射关系。逻辑块号可识别为一个盘面、磁道、扇区三元组,惟一的标识了相对应的物理扇区。
内存能够当作字节数组、磁盘能够当作块数组。
I/O总线链接了CPU,主存和I/O设备数组
固态硬盘是一种基于闪存的存储技术。一个硬盘包由一个或者多个闪存芯片和内存翻译层组成,闪存芯片替代旋转磁盘中的机械驱动器,而闪存翻译层将对逻辑块的请求翻译成对底层物理设备的访问
SSD比旋转磁盘
优势:随机访问时间比旋转磁盘块,能耗更低,更结实。
缺点:闪存翻译层中的平均磨损逻辑试图经过将擦除平均分布在全部的块上来最大化每一个块的寿命。缓存
不一样的存储技术有不一样的价格和性能折中。
不一样存储技术的价格和性能属性以大相径庭的速率变化着
DRAM和磁盘的性能滞后于CPU的性能。安全
局部性原理:一个编写良好的计算机程序倾向于引用邻近于其余最近引用过的数据项,或者最近引用过的数据项自己。有良好局部性的程序比局部性差的程序运行的更快,在硬件层引入高速缓存存储器就体现了局部性原理。
对程序数据引用的局部性
时间局部性(temporal locality):被引用过一次的存储器位置在将来会被屡次引用(一般在循环中)。
空间局部性(spatial locality):若是一个存储器的位置被引用,那么未来他附近的位置也会被引用。
一个连续向量中,每隔k个元素进行访问,被称为步长为k的引用模式,具备步长为1的引用模式称为顺序引用模式,随着步长增长空间局部性降低。
双重嵌套循环按照行优先顺序读取数组元素。(由于C数组在存储器中是按照行顺序来存放的)bash
程序指令是存放在存储器中的,CPU读取这些指令的过程当中评价一个程序关于取指令的局部性。
代码区别与程序数据的一个重要属性就是在运行时指令是不能被修改的。异步
重复引用同一个变量的程序有良好的时间局部性
对于具备步长为k的引用模式的程序,步长越小,空间局部性越好。
对于取指令来讲,循环具备良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。
计算机软件:一个编写良好的程序倾向于展现出良好的局部性。
缓存管理:某种形式的逻辑必须管理缓存,而管理缓存的逻辑能够是硬件、软件,或者二者的集合。
高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C = S * E * B。
行匹配:
判断缓存命中的两个充分必要条件:该行设置了有效位;高速缓存行中的标记和w的地址中的标记相匹配
字选择:肯定所须要的字在块中是从哪里开始的。
组相连高速缓存中不命中时的行替换:最简单的替换策略是随机选择要替换的行,其余复杂的策略则使用了局部性原理,例如最不常使用、最近最少使用,等。
全相连高速缓存中的行匹配和字选择:与组相连高速缓存是同样的,但规模大不少,所以只适合作小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器。
另外一个问题是如何处理写不命中。
写分配:加载相应的低一层中的块到高速缓存中,而后更新这个高速缓存块。 缺点是每次不命中都会致使一个块从低一层传送到高速缓存。
非写分配:避开高速缓存,直接把这个字写到低一层中。
命中时间:从高速缓存传送一个字到CPU所需的时间,包括组选择,行匹配,字抽取的时间。
不命中处罚:因为不命中所须要的额外时间。
读带宽的时间和空间局部性的二维函数称为存储器山。
因而我从新启动的Kali ,等出现GRUB引导菜单时,按向下方向键选择“恢复模式”,按E键进入编辑模式。
进入编辑模式后将ro改成rw,在后面添加init=/bin/bash
修改完成后,按F10键或Ctrl+X键继续启动。启动完成后,出现命令行界面
直接关机并重启,就能够用新密码直接登陆了。KO.
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 120/200 | 1/2 | 16/16 | 学习Linux核心命令 |
第二周 | 100/200 | 1/3 | 30/46 | 学习vim,gcc以及gdb的基本操做 |
第三周 | 30/230 | 1/4 | 15/61 | 对信息的表示和处理有更深刻的理解 |
第四周 | 30/260 | 1/5 | 22/83 | 双系统的探索 |
第五周 | 130/390 | 1/6 | 25/108 | 汇编的深刻学习 |
第六周 | 60/450 | 1/7 | 25/133 | 熟悉了Y86模拟器 |
第七周 | 60/510 | 2/8 | 20/153 | 掌握局部性原理 |