20145301 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
6.1存储技术
-
随机访问存储器(RAM)
-
静态RAM(SRAM):快,作为高速缓存存储器。(几百几千兆)
-
动态RAM(DRAM):作为主存,图形系统的帧缓冲区。(<=几兆)
-
静态RAM 具有双稳定状态,它可以无期限地保持在两个不同的电压配置(状态)其中的一个。也可以保持在亚稳定状态,但这个状态易被干扰。由于它具有双稳定性,所以即使有干扰,当干扰消除时,它能很快地恢复到稳定值。
-
动态RAM DRAM将每个位存储为对一个电容充电。对干扰非常敏感,电容的电压被干扰之后就永远不会恢复了。
-
非易失性存储器:非易失性的意思断电后不会丢失信息。SRAM、DRAM都是易失性存储器。
-
ROM:只读存储器(read-only memory)它有的类型既能读也能写,历史原因这样称呼它。
-
ROM分类:(依据能被重新编程、写的次数和 编程所用的机制)
-
PROM:只能被编程一次。
-
可擦写可编程ROM(EPROM):被编程105次
-
闪存:基于EEPROM,为大量的电子设备提供快速持久的非易失性存储。
-
固件:存储在ROM设备中的程序。
-
总线:总线是一组并行的导线,能够携带地址,数据和控制信号。
-
CPU与主存之间的数据传送:通过总线的共享电子电路在处理器和DRAM主存来回往返。
-
总线事务:读事务(主存传送数据到CPU,即cpu从主存读)、写事务(CPU传送到主存)
-
系统总线:连接CPU和I/O桥
-
存储器总线:连接主存的I/O桥
-
磁盘存储 大,但是慢。DRAM快10万倍,SRAM快100万倍。
-
磁盘构造:磁盘(旋转磁盘)由一个或者多个叠放在一起的盘片组成,封装在一个固定的容器里。盘片有两个表面,盘片中央有一个可以旋转的主轴,固定速度5400~15000转每分钟。整个装置称为磁盘驱动器。
-
磁道:一个表面从圆心扩散,划分了一组同心圆。
-
扇区:存储等数量的数据位。
-
间隙:存储标识扇区的格式化位。
-
柱面:半径距离相等的磁道的集合。
-
-
磁盘容量
-
磁盘容量:磁盘最大容量。
-
计算方法:磁盘容量=每个扇区字节数每个磁道平均扇区数每个表面的磁道数每个盘面的表面数磁盘的总盘面数
-
-
磁盘操作
-
寻道时间:读写头定位到磁道上的时间。通常:3~9ms
-
旋转时间:到了磁道,等待目标扇区的时间。最大旋转延迟:Tmax rotation=1/RPM * 0secs/min
-
平均旋转时间(延迟):最大的一半。 传送时间:驱动器读写内容所花时间。
-
6.2局部性
-
局部性原理:程序倾向于引用邻近最近引用过的数据项或者就是数据项本身。
-
时间局部性:存储器位置多次被引用。
-
空间局部性:存储器位置附近的位置在不远的将来被引用。 对程序数据引用的局部性
-
步长为一的引用的模式为顺序引用模式。每隔K个元素进行访问,称为步长为K的引用模式。 对指令的局部性:循环体具有良好的时间和空间局部性
-
重复引用同一个变量的程序具有良好的时间局部性
-
对于步长为K的引用模式,K越小,空间局部性越好。
-
对于取指令,循环具有良好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
6.3存储器层次结构
- 高速缓存:是一个小而快速地存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。 缓存:使用高速缓存的过程。
- 块:第k+1层的存储器被划分成连续的对象片。每个块有一个唯一的地址或名字,使之区别于其他的块。
- 传送单元:数据总是以块大小为传送单元。
- 缓存命中:
- 当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
- 该程序直接从第k层读取d,比从第k+1层中读取d更快。
- 缓存不命中:第k层中没有缓存数据对象d
- 第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块;覆盖一个现存的块的过程称为替换/驱逐这个块;被驱逐的块有时也称为牺牲块。
- 替换策略:决定替换哪个块;随机替换策略:随机选择一个牺牲块;最近最少被使用替换策略(LRU):选择最后被访问的时间距现在最远的块。
- 缓存不命中的种类:
- 强制性不命中/冷不命中:即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
- 冲突不命中:由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
- 容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
6.4高速缓存存储器
-
通用的高速缓存存储器结构
-
一个计算机系统每个存储地址有m位,形成M=2^m个不同的地址。 高速缓存被组织成一个有S=2^s个高速缓存组的数组,每个组包含E个高速缓存行,每个行是由一个B=2^b字节的数据块、一位有效位以及t=m-(b+s)个标记位组成,唯一标识存储在这个高速缓存行中的块。
-
高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C = S * E * B。 地址: t位 s位 b位
标记 组索引 块偏移
s个组索引位:一个无符号整数,说明字必须存储在哪个组中。
t个标记位:组中的哪一行包含这个字。
b个块偏移位:在B个字节的数据块中的字偏移。 -
直接映射高速缓存
- 1.直接映射高速缓存中的组选择
抽取目标地址的对应的S位组索引位。 -
2.直接映射高速缓存中的行匹配
有效位&&t位标记位和目标地址的标记匹配,同时为真则命中 -
不命中时的处理方法:行替换,先从下一层取出被请求的块,再在块中组索引,再行匹配(同时有效的话,就可以确认是这个对象了)。由于直接映射高速缓存每组只有一行,所以只需要将新的行替换当前行就行了。
- 3.直接映射高速缓存中的字选择 块偏移提供的是所需要的字的第一个字节的偏移。
- 组相连高速缓存中的组选择:与直接映射高速缓存中的组选择一样,组索引位标识组。
- 组相连高速缓存中的行匹配和字选择:把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。
- 1.直接映射高速缓存中的组选择
-
全相连高速缓存
-
全相连高速缓存中的组选择:只有一个组,没有组索引位。
-
直写:立即将w的高速缓存块写回紧接着的低一层中,虽然简单但每次都会引起总线流量。
- 写回:尽可能地推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写到低一级的块中。减* 少流量但增加了复杂性。 写不命中
- 写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。(写回)
-
非写分配:避开高速缓存,直接把这个字写到低一层中。(直写)
-
高速缓存参数的性能影响
- 不命中率:不命中数量/引用数量
- 命中率:1-不命中率
- 命中时间:从高速缓存传送一个字到CPU所需的时间,包括组选择,行匹配,字抽取的时间。
- 不命中处罚:由于不命中所需要的额外时间。 影响性能的因素
教材学习中的问题和解决过程
-
习题6.2
磁盘容量 = (512/400)4001000022= 8 192 000 000 字节 = 8.192GB
-
习题6.3
访问时间 = Taveseek+Taverotation+Tavetransfer = 8ms+0.51/15000RPM60secs.min1000ms/s+1/15000RPM1/50060secs/min1000ms/s=8ms+2ms+0.008ms=10.008ms
-
习题6.4
(1)T=Taveseek+Taverotation+2Tmaxrotation=5ms+3ms+26ms=20ms
(2)在这种情况下,块被随机的映射到扇区上,读2000块的每一块都需要Taveseek+Tavgrotation=8ms。所以读这个文件的总时间为T = 8ms*2000=16000ms=16s
课后作业中的问题和解决过程
ubuntu常见错误解决--could not get lock /var/lib/dpkg/lock -open
-
出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因,可能是上次安装时没正常完成,而导致出现此状况。
-
方案一:解决方法:输入以下命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock - 方案二:
1、ps-aux 查出apt-get进程的PID,通常是一个四位数字。
2、用sudo kill PID代码 杀死进程
3、用sudo apt-get update,sudo apt-get dist-upgrade升级。 - 方案三:重启系统。。。
本周代码托管截图
-
tree的建立,学习参考:代码驱动的程序设计学习
-
代码统计:
其他(感悟、思考等,可选)
这周学习主要是课本知识与概念上学习,相对轻松但又不那么容易真正理解,有些抽象,同时与之前的学习联系紧密。课后习题还需多再看看,直到熟练掌握为止。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4000行 | 24篇 | 400小时 | |
第一周 | 150/150 | 1/1 | 15/15 | 对Linux有了初步的认识 |
第二周 | 200/350 | 1/2 | 20/35 | vim的使用 |
第三周 | 250/600 | 1/4 | 20/55 | 各种信息的表示方法 |
第五周 | 250/850 | 1/5 | 25/80 | 汇编与反汇编 |
第六周 | 150/1000 | 1/6 | 25/105 | Y86 |
第七周 | 74/1074 | 1/7 | 25/130 | 各类存储器 |