zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155315 《信息安全系统设计基础》第9周学习总结

    2017-2018-1 20155315 《信息安全系统设计基础》第9周学习总结

    教材学习内容总结

    本周我学习的是6章

    RAM

    • 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
    • 随机访问存储器
      • SRAM(静态):高速缓存存储器。将每个位存储在一个双稳态的存储器单元里面。(每个单元用一个六晶体管电路来实现;其属性是可以无限期保持在两个不同的典雅配置或者状态之一,其他的任何状态都是不稳定的)
      • DRAM(动态):将每个位存储为对一个电容的充电(这个电容很小)。存储单元对干扰(如光线、噪音等)很敏感;当电容的电压被扰乱之后就永远不会恢复。优势是密集度低,成本低。
    • DRAM的芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。
    • 一个d*w的DRAM总共存储了dw位的信息。
    • 超单元被组织成一个r行c列的长方形阵列,这里rc = d。
      • 信息通过引脚的外部连接器流入和流出芯片。 每个DRAM芯片被连接到某个称为存储控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或者依次从每个芯片传出w位。
      • 电路设计者将DRAM组织成二维而不是线性数组的一个原因是降低芯片上地址引脚的数量。 DRAM芯片包装在存储器模块中,它是插到主版的扩展槽上的。

    ROM

    • PROM:只能被编程一次。

    • 可擦可写编程ROM(EPROM):被擦除和重写的次数可以达到10^3次。

    • 电子可擦除PROM(EEPROM):能够被编程的次数可以达到10^3次。

    • 闪存:基于EEPROM。基于此的磁盘驱动器称为固态硬盘, 存储在ROM设备中的程序通常称为固件;当一个计算机系统通电之后,它会运行存储在ROM中的固件。

      数据流通过总线的共享电子电路在处理器和DRAM之间来回;包括读事务(从主存到CPU)和写事务。总线是一股并行的线,可以携带数据、控制信号和地址(数据总线,地址总线,控制总线)。

    磁盘

    • 盘片正反两面,表面覆盖着磁性记录材料。
    • 每个表面是由磁道构成。磁道又被划分为扇区和间隙。
    • 磁盘是由多个盘片构成。
    • 磁盘制造
      • 每个表面是由一组称为磁道(track)的同心圆组成;每个磁道被划分成一组扇区(sector);
      • 每个扇区包含相等数量的数据位(通常是512字节);
      • 这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。
    • 磁盘容量是由以下技术因素决定的:记录密度、磁道密度、面密度
      • 记录密度:磁道一英寸的段可以放入的位数。
      • 磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
      • 面密度:记录密度与磁道密度的乘积。
    • 磁盘容量
      • 一个磁盘上可以记录的最大位数称为它的最大容量/容量。
      • 磁盘容量的决定因素:
      • 磁盘容量计算公式:

    磁盘操作

    • 任何时刻,所有的读写头都位于同一柱面上。
    • 在传动臂末端的读/写头在磁盘表面高度约0.1微米处一层薄薄的气垫上飞翔,速度大约为80km/h。磁盘以扇区大小的块来读写数据。
    • 对扇区的访问时间有三个主要部分组成:
      • 寻道时间(seek time):为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上。所需时间即为寻道时间,约等于最大旋转时间。
      • 旋转时间(rotational latency):定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。 Tmax rotation = 1/最大旋转数率 Tavg rotation = (1/2) × Tmax rotation
      • 传送时间(transfer time):Tavg transfer = (1/最大旋转数率) × (1/每磁道的平均扇区数)
        访问一个磁盘扇区的512字节的主要时间在于寻道和旋转延迟。访问时间:磁盘>DRAM>SRAM

    逻辑磁盘块

    • 现代磁盘构造复杂,有多个盘面,这些盘面上有不同的记录区。为了对操作系统隐藏这样的复杂性,现代磁盘将它们的构造简化为一个b个扇区大小的逻辑块的序列,编号为0,1,2,...b-1。磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号的和实际(物理)磁盘扇区之间的映射关系。

    局部性

    • 局部性原理
      • 计算机程序倾向于引用邻近于其他最近引用过的数据项的数据或其本身,这种倾向性,被称为局部性原理。
      • 局部性原理包括时间局部性,空间局部性。
    • 评价一个程序中局部性的简单原则:
      • 重复引用同一个变量的程序有良好的时间局部性。
      • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好;在存储器中以大步长跳来跳去的程序空间局部性会很差。
      • 对于取指令来说,循环有很好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
      • 有良好局部性的程序比局部性差的程序运行得更快

    存储器层次结构——缓存

    • 对于每个k,位于k层的更快更小的存储设备作为位于(k+1)层的更大更慢的存储设备的缓存。

    • 第(k+1)层的存储器被划分成连续的数据对象片,称为块;数据总是以块大小为传送单元在相邻两层之间来回拷贝的;在任何时刻,第k层的缓存包括第(k+1)层块的一个子集的拷贝。

    • 缓存命中及缓存不命中

      • 缓存命中:当程序需要第(k+1)层的数据对象d的时候,首先会在第k层找d;如果d刚好缓存在第k层,那么就叫做缓存命中;反之,不命中
      • 如果缓存不命中,那么第k层缓存就从第(k+1)层取出包含该数据的块,有可能会覆盖现有的块。覆=决定替换哪个块是由缓存的替换策略来控制的;例如,一个具有随机替换策略的缓存会随机选择;而LRU替换策略会选择被访问时间距今最远的块
    • 缓存管理

      • 在每一层上,某种形式的逻辑必须管理缓存;
      • 可以是硬件也可以是硬件、软件的结合。
    • 高速缓存存储器(S,E,B,m)

      • 作用:连接CPU和主存
      • 每个存储器地址有m位,形成M=2^m个不同地址。这m位被划分成t个标记位、s个组索引位和b个块偏移位。
      • 一个机器的高速缓存被组织成S=2s个高速缓存组的数组;每个数组包含E个高速缓存行;每行由一个B=2b字节的数据块、一个有效位(指明这个行是否包含有效信息)、t=m-(b+s)个标记位(唯一标识存储在这个高速缓存行中的块)组成。

      理解:从高向低来看,M=2m个地址平均分给S=2s个组,每组获得2(m-s)个地址,即(m-s)位;减去t位用于标记块,还有2(m-t-s)个地址可以表示一个块,也就是说,一个块可以有2^(m-t-s)个字节的信息。

    • 直接映射高速缓存

      • 高速缓存确定一个请求是否命中,然后抽搐被请求字的过程,分为:组选择,行匹配,字抽取
      • 组选择:从w的地址中抽取组索引;这些位被解释成对应于一个组号的无符号整数
      • 行匹配:对于直接映射高速缓存,行匹配是容易而且快的;因为每个组只有一行
      • 字匹配:块偏移提供的是这个字的第一个字节是从哪个位置开始的

    缓存不冲突的种类

    • 强制性不命中/冷不命中:即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
    • 冲突不命中:由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
    • 容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。

    教材学习中的问题和解决过程

    问题1: 磁盘与内存的关系?

    解决1: 两者都是数组,磁盘是块数组,内存是字节数组。

    代码托管

    (statistics.sh脚本的运行结果截图)

    结对及互评

    暂无

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

    这一章的内容很多,吸收得不够,还要继续学习。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 5/5 1/1 25/25
    第二周 236/241 3/4 30/55
    第三周 169/410 2/6 30/85
    第四周 169/410 2/8 50/135
    第五周 1177/1587 2/10 30/165
    第六周 1826/3413 2/12 30/195
    第七周 977/4390 3/15 30/225
    • 计划学习时间:30小时
    • 实际学习时间:30小时

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    C语言运算符优先级和口诀
    跨域问题的解决方案 php
    浅谈跨域攻击及预防
    浅析Websocket--PHP
    linux下的删除目录和文件的方法
    python魔法方法
    双指针
    python常用模块
    python三大器
    对闭包的误区
  • 原文地址:https://www.cnblogs.com/-zyl/p/7860832.html
Copyright © 2011-2022 走看看