2017-2018-1 20155216 《信息安全系统设计基础》第九周学习总结
2017-2018-1 20155216 《信息安全系统设计基础》第九周学习总结
教材学习内容总结
一、常见的储存技术(RAM、ROM、磁盘、固态硬盘等)
层次结构:
存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
存储器层次结构(图示):
存储器层次结构(文字描述):
从①到⑦:更大、更慢和每字节成本更低的存储设备。
①寄存器:CPU寄存器保存着从高速缓存存储器取出的字
②L1高速缓存(SRAM):L1高速缓存保存着从L2高速缓存取出的缓存行
③L2高速缓存(SRAM):L2高速缓存保存着从L3高速缓存取出的缓存行
④L3高速缓存(SRAM):L3高速缓存保存着从主存高速缓存取出的缓存行
⑤主存(DRAM):主存保存着从本地磁盘取出的磁盘块
⑥本地二级存储(本地磁盘):本地磁盘保存着从远程网络服务器磁盘上取出的文件
⑦远程二级存储(分布式文件系统、Web服务器)
RAM
静态RAM
Static Random-Access Memory,静态随机访问存储器,每个位存储在一个双稳态的存储器单元里,每个位晶体管数为6;相对访问时间快;具有双稳态特性,所以只要有电,就会永远地保持它的值;即使有干扰,当干扰消除时,电路就会恢复到稳定值;相对花费贵,主要应用在高速缓冲存储器上。
动态RAM
Dynamic Random-Access Memory,动态随机访问存储器,每个位存储在一个对干扰非常敏感的存储单元里,每个位晶体管数为1;相对访问时间慢;当电容的电压被扰乱后,它就永远不会恢复了;相对花费便宜,主要应用在主存以及图形系统的帧缓冲区。
磁盘:
(1)磁盘转速:
磁盘转速决定磁盘的速度。转速越快,磁盘寻找文件的速度就越快,传输速度越快。目前大部分笔记本电脑所采用的机械式硬盘均是依靠主轴的马达带动盘片高速旋转以产生浮力,使磁头漂浮在盘片上方,要将所要存取数据的扇区带到磁头下方,转速越快则等待时间也就越短,从而也就意味了高效率的工作。
(2)磁盘构造:
①磁盘是由盘片(platter)构成的,每个盘片有两个表面(surface),表面覆盖着磁性材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400-15000转/分钟(Revolution Per Minute,RPM)。
②每个表面由磁道(track,一组同心圆)组成。
③每个磁道被划分为一组扇区(sector),每个扇区包含数量相等的数据位,这些数据编码在扇区上的磁性材料中。
④扇区之间由一些间隙(gap)分隔,间隙存储用来标识扇区的格式化位。
⑤柱面(cylinder):所有盘片表面上到主轴中心的距离相等的磁道的集合。
(3)磁盘容量计算:
磁盘容量 = 字节数/扇区 * 扇区数/磁道 * 磁道数/表面 * 表面数/盘片 * 盘片数/磁盘
ROM
ROM 是 ROM image(只读内存镜像)的简称,常用于手机定制系统玩家的圈子中。
常见的 ROM image 有 img、zip 等格式,前者通常用fastboot程序通过数据线刷入(线刷),后者通常用 recovery 模式从 sd刷入(卡刷),固 img 镜像也被称为线刷包,zip 镜像也被称为卡刷包。
固态硬盘
固态硬盘(Solid State Drives),简称固盘,固态硬盘(Solid State Drive)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。
读写速度快。采用闪存作为存储介质,读取速度相对机械硬盘更快。固态硬盘不用磁头,寻道时间几乎为0。持续写入的速度快,其持续读写速度超过了500MB/s。
二、局部性原理
局部性通常有两种形式:
时间局部性(temporal locality)
时间局部性指的是:被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。
空间局部性(spatial locality)
如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。
取指令的局部性
指令存在于存储器中,cpu 要读指令就必须取出指令。所以也能评价对于取指令的局部性。
在for 循环中,循环体内的指令多次被执行,所以有良好的时间局部性。
循环体中的指令是桉顺序执行的,有良好的空间局部性。
局部性的简单原则:
1、重复引用同一个变量有良好的时间局部性
2、对于步长为k 的引用的程序,步长越小,空间局部性越小。步长为1 的引用具有良好的空间局部性。k越大,空间局部性越差。
3、对于取指令来说、循环有较好的时间和空间局部性。
三、缓存思想
使用高速缓存的过程称为缓存
对于每一个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。
在解决问题前提下,命中率高的缓存比命中率低的缓存,在硬件投入上可能会比较小,同时缓存的数量比命中率低的缓存数量也可能少,这样寻址的速度肯定比较快, 所以命中率高的缓存是好缓存。
缓存的命中率:
一个缓存的实体在被丢到缓存中后,在这个实体被缓存的期间(这个实体被缓存的生命周期内),如果外部一次都没有使用过它,这个缓存实体的命中率就是0。这个实体被请求的次数越多,它的缓存命中率越高。
四、局部性原理和缓存思想在存储层次结构中的应用
对于存储器而言,存取速度越快的其成本越高。为了在成本和性能之间进行平衡,现代计算机体系架构往往选择:使用少量性能高但成本也高的存储器作为速度慢而成本也低的存储器的缓存。成本越高的存储器数量越少,但它们被设计为更靠近CPU,所以它们性能要比次级存储器高的多。
由于上层存储器是下层存储器的缓冲,基于局部性原理,使用这种架构是正确的选择。因为下层存储器中的数据一旦被装入上层存储器,就很有可能被多次用到,此时CPU则可以在更靠近它的性能也更高的存储器内找到其需要的数据,而不需要每次都要到离它更远,性能也更低的存储器内去存取它们。
教材学习中的问题和解决过程
- 问题1:
关于缓存命中率的理解不够充分。
- 问题1解决方案:
关于缓存命中率:
小型网站可以全部数据缓存,一般压力也不会很大,可以忽略缓存命中率问题。
大型服务无法全部数据缓存,只能部分数据缓存,这时候就需要架构师设计出对该业务逻辑适用的缓存方法,尽可能的提高缓存的命中率。
提高命中率的方法大多是跟业务逻辑捆绑的,需要跟具体问题具体分析 。
对于不能被内存缓存的数据,最简单的提高性能方法就是使用文件缓存。
文件缓存可以把整个内容缓存成一个静态文件;也可以是整个页面的一个区域被缓存成一个文件,然后被包含;也可以是把一个实体序列化成XML文件进行缓存。
代码调试中的问题和解决过程
- 问题1:
关于pwd的实现
如果目录太深,则在循环中会出现不明确的问题。
- 问题1解决方案:
为保证目录的正确性,限制目录长度,若目录太深,则提示。
代码托管
结对及互评
本周结对学习情况
- [20155214](http://www.cnblogs.com/besti155214/p/7782336.html)
- 结对照片
- 结对学习内容
- 第六章内容。
- socket编程。
其他(感悟、思考等,可选)
1、计算机通过存储系统的层次结构,在一定存储空间的前提下,大大地提高了计算机的工作效率。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 114/114 | 3/3 | 20/20 | |
第四周 | 136/250 | 2/5 | 18/38 | |
第五周 | 87/337 | 2/7 | 22/60 | |
第六周 | 271/608 | 2/9 | 30/90 | |
第七周 | 185/716 | 2/11 | 30/90 | |
第八周 | 531/1247 | 3/14 | 30/90 | |
第九周 | 439/1686 | 3/17 | 30/90 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:25小时
-
实际学习时间:20小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)