• 20145205 《信息安全系统设计基础》第7周学习总结


    教材学习内容总结

    三种常见存储技术:RAM/ROM/磁盘;

    1、随机访问存储器RAM

    (1)静态RAM

    SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。
    属性:它可以无限制地保持在两个不同的电压配置或状态之一。其他任何状态都是不稳定的。
    特点:由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。
    应用:高速缓存存储器,即可以在CPU芯片上,也可以在片下。

    (2)动态DRAM

    DRAM将每个位存储为对电容的充电。电容约为30×10-15F。
    特点:对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
    应用:主存以及图形系统的帧缓冲区。

    2、非易失性存储器(ROM)

    (1)区分:能被重编程的次数和对他们进行重编程所用的机制。

    PROM:只能被编程一次。
    EPROM:可擦写可编程ROM,紫外线光照清除单元内容,可擦写次数数量级1000。
    E2PROM:电子可擦除PROM,可以直接在印制电路卡上编程,可擦写次数数量级10^5。
    FLASH:闪存,基于EEPROM。(固态硬盘SSD基于闪存)
    (2)存储在ROM设备中的程序通常称为固件。

    磁盘存储

    1、磁盘构造

    (1)由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟(RPM)

    (2)每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些 间隙分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。

    2、磁盘容量

    (1)一个磁盘上可以记录的最大位数称为它的最大容量/容量。

    (2)磁盘容量的决定因素:

    记录密度:磁道一英寸的段可以放入的位数。
    磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
    面密度:记录密度与磁道密度的乘积。
    磁盘是重点,涉及到后面的i/o和文件系统,做好相关练习

    磁盘操作

    1、磁盘用读写头来读写存储在磁性表面的位,而读写头连接到一个转动臂一端。寻道就是通过沿着半径轴前后移动这个转动臂,使得驱动器可以将读写头定位在盘面上的任何磁道上。

    任何时刻,所有的读写头都位于同一柱面上。
    在传动臂末端的读/写头在磁盘表面高度约0.1微米处一层薄薄的气垫上飞翔,速度大约为80km/h。
    磁盘以扇区大小的块来读写数据。

    2、访问时间:

    (1)寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间,约等于最大旋转时间。

    寻道时间Tseek依赖于读写头以前的位置和转动臂在盘面上移动的速度。
    (2)旋转时间:定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。依赖于当读写头到达目标扇区时盘面的位置和磁盘旋转速度。

    定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。
    最大旋转时间 = 1/最大旋转数率
    平均旋转时间 = (1/2) * 最大旋转时间。
    (3)传送时间:当目标扇区的第一个位位于读写头下时,驱动器就可以开始读或者写该扇区的内容。依赖于旋转速度和每条磁道的扇区数目。
    平均传送时间 = (1/最大旋转数率) * (1/每磁道的平均扇区数)
    逻辑磁盘块

    1、内存可以看成字节数组、磁盘可以看成块数组

    2、现代磁盘构造复杂,有多个盘面,这些盘面上有不同的记忆区。为了对操作系统隐藏这样的复杂性,现代磁盘将他们的构造呈现为一个简单的试图,一个B个扇区大小的逻辑块的序列,编号为0,1,...,B-1。

    3、磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)扇区之间的映射关系。

    4、控制器上的固件执行一个快速表查找,将一个逻辑块号翻译一个(盘面、磁道、扇区)的三元组,这个三原则唯一地表示了对应的物理扇区。控制器上的硬件解释这个三元组,将读写头移动到适当的煮面,等待扇区移动到读写头下,将读写头感知到的位放在控制器上的一个小缓冲区中,然后将他们拷贝到主存中。

    连接到I/O设备

    1、想图形卡、监视器、鼠标、键盘和磁盘这样的输入输出设备,都是通过I/O总线连接到CPU和主存的。

    2、系统总线和存储器总线是与CPU相关的,I/O总线设计成与底层CPU无关。

    3、I/O总线比系统总线比存储器总线慢,但是它可以容纳种类繁多的第三方I/O设备。

    通用串行总线USB:2.0最大带宽60MB/S,3.0最大带宽600MB/S
    图形卡(适配器)
    主机总线适配器
    访问磁盘

    1、CPU使用一种存储器映射I/O技术来向I/O设备发出命令,在使用存储器映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的,称为I/O端口。当一个设备连接到总线时,它与一个或多个端口相连。

    2、直接存储器访问:设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。这种数据传送称为DMA传送。

    固体磁盘

    1、固态硬盘是一种基于闪存的存储技术。

    2、一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中机械驱动器;闪存翻译层(一个硬件/固件设备)替代磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。

    3、性能特性

    顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。
    随机顺序访问逻辑块时,写比读慢一个数量级。
    读写性能差别是由底层闪存基本属性决定的。
    4、优缺点

    (1)优点:
    由半导体构成,没有移动的部件
    随机访问时间比旋转磁盘要快、能耗低、结实
    (2)缺点:易磨损、更贵

    存储技术趋势

    1、不同的存储技术有不同的价格和性能折中,不同存储技术的价格和性能属性以截然不同的速率变化着(增加密度从而降低成本比降低访问时间更容易)

    2、DRAM和磁盘的性能滞后于CPU的性能
    访问主存

    1、读事务:从主存传送数据到CPU。

    读事务语句:movl A,%eax

    CPU将地址A放到存储器总线
    主存从总线读出A,接收字x,然后将x放到总线上
    CPU从总线读出字x,并将它copy到寄存器eax中。
    2、写事务:从CPU传送数据到主存。

    写事务语句:movl %eax,A

    CPU将地址A放到存储器总线,主存读出这个地址,等待接收数据字
    CPU将数据字y放到总路上
    主存从总线读数据字y,并将它存储在地址A。
    3、总线:一组并行的导线,能携带地址、数据的控制信号。分为:数据总线、控制总线、地址总线

    局部性

    分类:
    时间局部性
    空间局部性
    应用:

    1.硬件层:

    通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

    2.操作系统级:

    系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块

    3.应用程序中:

    Web浏览器将最近被引用的文档放在本地磁盘上。

    一、对程序数据引用的局部性

    步长为k的引用模式

    定义:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。

    步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源。

    一般来说,随着步长增加,空间局部性下降。

    存储器层次结构

    一、缓存

    高速缓存:是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。

    缓存:使用高速缓存的过程称为缓存。

    数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。

    一般来说:层越低,块越大。

    1.缓存命中

    当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。

    该程序直接从第k层读取d,比从第k+1层中读取d更快。

    2.缓存不命中

    即第k层中没有缓存数据对象d。

    这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。

    3.缓存不命中的种类

    (1)强制性不命中/冷不命中

    即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。

    (2)冲突不命中

    由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。

    (3)容量不命中

    当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。

    高速缓存存储器

    L1高速缓存:

    位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期

    L2高速缓存:

    位于L1高速缓存和主存之间,访问速度10个时钟周期

    L3高速缓存:

    位于L2高速缓存和主存之间,访问速度30或40个时钟周期

    一、通用的高速缓存存储器结构

    高速缓存是一个高速缓存组的数组,它的结构可以用元组(S,E,B,m)来描述:

    S:这个数组中有S=2^s个高速缓存组
    E:每个组包含E个高速缓存行
    B:每个行是由一个B=2^b字节的数据块组成的
    m:每个存储器地址有m位,形成M=2^m个不同的地址
    除此之外还有标记位和有效位:

    有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
    标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
    组索引位:s
    块偏移位:b
    高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。

    二、直接映射高速缓存

    根据E(每个组的高速缓存行数)划分高速缓存为不同的类,E=1的称为直接映射高速缓存,以此为例:

    高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:

    1.组选择
    2.行匹配
    3.字抽取

    三、组相联高速缓存

    E路组相联高速缓存:1<E<C/B

    1.组选择

    和直接的一样。

    2.行匹配和字选择

    形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。

    3.行替换

    有空行替换空行,没有空行,应用替换策略:

    随机替换

    最不常使用策略LFU:替换在过去某个时间窗口内引用次数最少的那一行。
    最近最少使用策略LRU:替换最后一次访问时间最久远的那一行。

    课后作业中的问题和解决过程

    XXX
    XXX

    本周代码托管截图

    上传截图

    建立归档格式

    统计代码行数

    其他(感悟、思考等,可选)

    本周我自己最大的感悟是第一次建立归档格式,其实之前感觉很麻烦事情,等到自己真正做了之后就发现,原来还是蛮简单的,而且感觉一切都井井有条了,不再像之前都是一股脑的堆在一起,想要找个东西都得找半天,相信之后要是要去找之前用到的东西都会是很方便快捷了,也不会像之前那样花费本该可以节省下来的时间。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 24篇 350小时
    第一周 0/0 1/2 8/8
    第二周 49/49 1/3 10/18
    第三周 0/49 2/5 10/28
    第四周 0/49 0/5 0/28
    第五周 42/91 1/6 15/43
    第六周 184/275 1/7 30/73
    第七周 94/369 1/8 20/93

    参考资料

  • 相关阅读:
    UML之对象图
    android5.0(Lollipop) BLE Peripheral牛刀小试
    自己定义msi安装包的运行过程
    高速排序
    字符串函数---strcat()与strncat具体解释及实现
    杭电(hdu)1181 变形课
    电脑突然死机,编译报错dll缺少依赖项
    谈谈java垃圾回收机制
    swift(2)元祖(Tuple)
    IOS小工具以及精彩的博客
  • 原文地址:https://www.cnblogs.com/20145205y/p/6014412.html
Copyright © 2020-2023  润新知