概念
存储系统
解决成本-速度-容量之前的矛盾问题
寄存器–cache–内存–硬盘–外存储
局部性原理
- 时间局部:相邻的时间访问同一个数据
- 空间局部:相邻的空间地址会被连续访问
cache
cpu与主存之间,命中cache后就不需要访问主存,但是cpu还是访问内存地址,这个时候需要需要做映射转换。
映射方法:主存地址转换为cache地址,由硬件自动完成,要解决主存很大,但是cache很小的问题。
- 直接映射,主存先分区后分块与cache等分成块编号,主存区和cache块形成一对多的关系,每个主存块只有一个固定区可存放,容易产生冲突,使Cache效率下降。
- 全相连映射,主存任何一块与cache中任意一块对应,主存的各块可以映射到Cache的任一块中,Cache的利用率高,块冲突概率低。
- 组组相连(类似给cache加索引),组间采用直接映射,主存和cache都进去分组,组内使用全相连映射,适度兼顾二者的优点,尽量避免二者的缺点。
cache替换算法
- 随机替换 :随机数发生器产生一个替换
- 先进先出 :最先进入cache信息替换出来
- 最近最少使用 :最少使用cache信息替换出来
- 优化替换:先统计cache替换情况,再一次选择替换信息
磁盘结构和参数
一个磁盘由多个盘片叠加而成。一个盘片可能会有两个盘面。,每个盘面多个同心圆,每个同心圆就是一个磁道,每个同心圆划分多个扇区,数据存放到上扇区中。
调度算法:寻找磁道
读取数据的时间=寻道时间+旋转时间,寻道时间最长
- 寻道时间:磁头移动到磁道
- 等待时间:等待读写的扇区转到磁头下方
- 先来先服务FCFS:进程请求先后顺序
- 最短寻道时间优先SSTF:请求的磁道与当前磁道最近优先调度,磁道相同,顺序读取扇区号
- 扫描算法SCAN:“电梯算法”选择磁头最近的请求磁道,向上或向下一个方向移动完后掉头
- 单向扫描算法CSCAN:不根据请求,只单向移动
输入输出技术
内存与外设接口地址的编址方法
- 独立编址:内存地址和接口地址各自独立地址空间,指令也独立不同
- 统一编址:公用一个地址空间,不区分指令
计算机和外设间的数据交互
- 程序控制查询方式:cpu主动查询外设是否完成数据传输,效率低。
- 程序中断方式:外设完成后,向cpu发送中断,等待cpu处理数据,效率相对较高。
- DMA直接主存存取:数据传输整个过程由DMA控制器完成,在主存与外设直接建立数据通道,效率很高。
一条指令结束后才会响应中断,一个总线周期结束后才会响应DMA请求
总线结构
总线是指计算机设备和设备之间传输信息的公共数据通道,总线上的设备所有共享
- 内部总线:内部芯片总线,芯片与处理器之间
- 系统总线:计算机各部分的连接(PCI)
- 数据总线:并行传输数据位数
- 地址总线:系统可管理的内存空间大小
- 控制总线:传输控制命令
- 外部总线:微机和外部设备的连接(usb、SCSI)
计算
cache命中率及平均时间
90%几率命中读取cache时间为一次1ns,10%不命中读取内存数据时间1000ns,读取一次的平均时间?
(1ns * 90%+1000ns * 10%)ns
磁盘
- 不需要考虑寻道时间,磁头已经在R0磁道
- 每个扇区读取时间=33/11=3ms
- 顺序旋转处理记录,而读取+执行=6ms,必然无法顺序执行,因为执行3ms后旋转已经转到R2,每次读取需要旋转一次从R0-R2-R4…R10-R1-R3…-R9,为了顺序执行,就需要每次旋转,以此类推,因为每次磁道都不是顺序停留在想要的位置上。
- 3 R0读取时间+3 R0执行时间+(10 * 3 旋转一次等待时间+3 读取时间+3 执行时间)* 10 旋转10次才能都读取完=6+36*10=366
- 优化逻辑记录间隔存放R0-R2-R4…-R9,结果就是(3+3)*11=66
某系统中磁盘的磁道数为200 (0~199),磁头当前在184号磁道上。用户进程提出的磁盘访问请求对应的磁道号依次为184、187、176、182、199。若采用最短寻道时间优先调度算法 (SSTF) 完成磁盘访问,则磁头移动的距离(磁道数)是( )。
最近排序是:184-182-187-176-199(187对比176和199分别距离是11和12),计算 |184-184|+|182-184|+|187-182|+|176-187|+|199-176|=0+2+5+11+23=41