计算机存储系统-CPU-Cache-主存-辅助存储器

- 2 mins

概述

主存:存放计算机运行期间所需的大量程序和数据,CPU可以直接对其进行访问。可以和Cache以及辅助存储器交换数据。

Cache:高速缓冲存储器,位于CPU内部,速度可与CPU相匹配,用来存放正在执行的程序段和数据,以便CPU能高速地使用它们。

辅助存储器:存放当前暂时不用的程序和数据,以及一些需要永久性保存的东西,不可以与CPU直接交换信息。

所有的缓冲技术都是用来解决速度不匹配问题的。Cache是用来解决CPU与主存间的速度不匹配问题。而辅助存储器是外部设备,也就是平时电脑上的硬盘,解决主存与辅存间速度不匹配问题则是操作系统在 I/O管理中采用的缓冲技术,在主存内部开辟一片区域作为高速缓冲区。

虚拟存储器:从逻辑上扩充主存容量,解决主存的空间不足问题。基于局部性原理,在程序装入时,可以将程序 的一部分装入内存,将其余部分留在外存。执行过程中,当访问的信息不在内存时,操作系统管理数据的的换入换出。虚拟存储器实际上并不存在,只是操作系统提供了部分装入、请求掉入和置换功能后,给用户的感觉好像内存变大。比如你的电脑是8G,但可以运行16G的游戏,就是这个道理。

Cache高速缓冲存储器

Cache基本工作原理

Cache通常由SRAM构成,Cache和主存都被分为若干大小相等的块,Cache与主存间的交换是以块为单位的。Cache速度比主存高的多,所以也贵很多,从而Cache容量也比主存小很多。

每当CPU要访问主存时,会给出主存某存储单元的地址,检查Cache中是否含有此访存地址的数据,如果命中,就将此主存地址转换成Cache地址,对Cache进行操作;若不命中,则仍需访问主存,并把此字所在的块一次从主存调入Cache内,如果Cache满,则根据某种替换算法,替换掉Cache中原来的某块信息。

Cache行结构

Cache每行分为标记项和每行存储数据两部分,不同的Cache映射方式Cache的标记项是不同的。但一般含有以下几种:

ps:有效位和标记位是必有的,具体题目要根据题目给出的条件分析Cache标记字段到底有多长。

Cache与主存的映射方式

地址变换:当CPU给出一个主存地址时,地址映射机制要能按照一定的规则转换为Cache地址;

Cache地址映射指的是把主存地址空间映射到Cache地址空间,也就是通过规定一种方式,把主存中的部分数据块放到Cache内,还要把该主存块的地址,经过某种函数关系处理后写进Cache标记字段。

这样在映射方式给出后,CPU便可以通过规定的映射方式,将主存地址转化为Cache地址从而查找Cache内的数据。

Cache

Cache基本工作原理

Cache写策略

Cache中的内容本质是主存块副本,所以当对Cache中的内容更新时,需要选用写操作策略使Cache与主存中的内容保持一致。

现代计算机设立多级Cache,离CPU越近的Cache速度越高,所以采用Write-Through需要的时间也不会很多,最后一级靠近主存的Cache,通常都采用Write-Back,如果每次对Cache的修改都需要同时改主存的话,如果频繁修改就会造成写缓冲饱和而溢出,因为主存修改速度太慢了。

主存管理

概述

程序的装入和链接

从源程序到执行

内存保护

在内存分配时,需要保护操纵系统不受不受用户进程的影响,也要保护不同进程之间不受干扰,可以采用两种方法:

覆盖 (远古时代):将用户空间分为固定区和覆盖区,活跃部分放在固定区,内存中只能更新覆盖区的段。首先将即将要访问的段放入覆盖区,其他段放在内存中,需要调用时,才将其调入覆盖区替换其原有的段。

交换 :把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上,腾出空间后,把已具备运行条件的进程或进程所需要的程序和数据调入内存。

交换技术主要在不同进程(或作业)之间进行,而覆盖则用于同一程序或进程间。

连续分配管理方式

基于顺序搜索的动态分区分配算法

首次适应算法:从头开始找,第一个能找到的能放下的空闲分区,分割。

循环首次适应算法:从上次找到的空闲分区的下一个空闲分区开始查找,如果最后一个不能满足要求,返回到第一个空闲分区。

以上两种空闲分区都是按照地址递增的顺序排列

最佳适应算法:分区按照大小由小到大排列,找到第一次满足要求的空闲分区,分割。会导致碎片非常小,难以利用。

最坏适应算法:每次分配最大的空闲分区,分割后的空闲分区会比较大.

基于索引搜索的动态分区分配算法

快速适应算法:又称分类搜索法,对每一类具有相同容量的所有空闲分区设立空闲分区链表, 同时在内存中设立一张管理索引表

算法思想:根据进程长度找到能容纳它们的最小空闲区链表,分配第一块即可。

离散分配方式

基本分页存储管理方式

把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位。每个进程以块为单位进行划分,进程在执行时以块为单位逐个申请主存中的块空间。

分页形式上与固定分区分配相似,但固定分区是为每个作业分配一个连续的分区,而分页是为作业分配很多个页面,页面比分区小的多得多。但进程的最后一个页面很可能会占不满页面,这就形成了内部碎片。

页表的作用

分页存储管理的地址变换机构题目给出一个逻辑地址,根据题目中给出的页面大小可以计算出逻辑地址结构中的页内偏移所占bit,从而得出页号。根据页号查页表,得到对应逻辑页号的物理块号,再加上页内偏移地址就可得出物理地址。

注意:每次访存操作都需要进行逻辑地址到物理地址的转换,转换过程必须足够快,否则访存效率会较低;页表不能太大,否则内存利用率会降低

快表TLB :具有并行查找能力的高速缓冲存储器,存放当前访问的若干页表项。快表是联想寄存器,可以实现按内容查找。

3-3具有快表的地址变换机构

引入快表之后,如果在快表中存在逻辑页号对应的页表项,那么存取数据只需要访问 1次内存就可以实现。如果没有找到,则需要访问主存中的页表,在读出页表项之后,同时将其存入快表,所以还是需要2次内存访问,1次查页表,1次访问内存单元。

多级页表

实际上就是在原有页表结构上再加了若干层页表,顶级页表中存的不再是数据,而是二级页表的地址,等等以此递推。

3-4二级页表结构示意图

ps:顶级页表最多只能有 1 个页面;n级页表每次访问某页需要那n+1次访存。

基本分段存储管理方式

3-5利用段表实现地址映射

3-6分段系统的地址变换过程

  1. 从逻辑地址中取出前几位段号;
  2. 比较段号和段表长度,如果段号 > 段表长度,产生越界中断;
  3. 比较段表中的对应段的段长和逻辑地址中的段内偏移,如果逻辑地址中的段内偏移 > 段长,产生越界中断;
  4. 段表基址 + 段内偏移生成主存地址

段页式管理方式:每个进程建立一张段表,每段有一张页表。

虚拟存储器

虚拟内存中允许将一个作业分多次调入内存,所以必须 建立在离散分配的内存管理之上。

请求分页管理方式是基本分页管理方式进化体。在请求分页系统中,必然会出现要访问的页面不再内存的情况,所以请求页表项字段为 页号 + 物理块号 + 状态位 + 访问字段 + 修改位 + 外存地址

缺页中断与一般中断相比有以下两个区别:

3-7请求分页中的地址变换过程

页面置换算法(略)

页面分配策略

驻留集:在某段时间间隔内,进程要访问的页面的集合。让操作系统跟踪每个进程的驻留集,并为进程分配大于其驻留集的物理块。如果还有空闲物理块,则可以再调一个进程到内存以增加多道程序数;如果所有驻留集之和超过了可用物理块的总数,那么操作系统会暂停一个进程,将其页面调出并将物理块分配给其他进程。

请求分页系统中外存分为文件区和对换区。若交换空间利用率异常高,而CPU利用率及硬盘繁忙率正常,即作业不多交换情况却频繁,立即推物理内存严重短缺。

从虚拟地址到Cache查找内容

给出一个虚拟地址,首先应该根据请求分页地址变换过程得到物理地址;然后根据物理地址到data Cache中访问数据,若不命中,再到主存中访问该存储单元

请深刻理解王道操作系统P184页从一个虚地址到访问数据时如何操作的例题。

磁盘组织与管理

概念与计算

磁盘结构图

PS:所有盘片上相对位置相同的磁道组成柱面。扇区是磁盘可寻址的最小存储单位,磁盘地址用柱面号 + 盘面好 + 扇区号表示。

磁盘计算题

注意:磁盘是自转设备,有些题目在每读完一个扇区需要数据处理时间,在处理的时间中,磁头还是在向前运动,所以要根据具体问题具体分析,当处理结束后,磁头位于哪个扇区,要读的扇区又在哪。

磁盘调度算法

PS:不特别说明默认SCAN和S-CSAN为LOOK和C-LOOK。

磁盘管理

  1. 初始化
    1. 低级初始化:将磁盘分成扇区以便磁盘控制器能进行读写操作;
    2. 将磁盘分为一个或多个柱面组成的分区;
    3. 对物理分区进行逻辑格式化
  2. 引导块
  3. 坏块:对坏块的处理实际上是采用某种机制,使系统不去使用坏块。硬件故障操作系统无法修复。
    • 扇区备用:用备用块替代逻辑坏块。

磁盘高速缓存(Disk Cache) :利用内存中的存储空间来暂存从磁盘读出的一系列盘块中的信息。逻辑上属于磁盘,物理上是驻留在内存中的盘块。


参考资料:《王道2019考研计算机组成原理》、《王道2019考研操作系统》

Inger Chao

Inger Chao

A girl willing to learn and progress

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora qq quora wechat