存储器分层体系

存储管理器 -> 管理分层存储器体系

一、无存储器抽象

直接访问物理内存

  • 在不使用存储器抽象的情况下运行多个程序

    两个程序都引用了绝对的物理地址—静态重定位

二、一种存储器抽象:地址空间

将物理地址直接暴露给进程的问题:

  • 用户程序很容易破坏操作系统
  • 同时运行多个程序非常困难

1、地址空间的概念

解决两个问题:保护和重定位

地址空间是一个进程可用于寻址内存空间的一套地址集合,每个进程有一套自己的内存空间

地址空间的抽象概念:电话号码的前缀、IPv4地址、域名

  • 基址寄存器和界限寄存器

    动态重定位

2、交换技术

处理内存超载的两种办法:

  • 交换

    将程序完整调入内存再放回磁盘

  • 虚拟内存

    将程序的一一部分调入内存

3、空闲内存管理

跟踪内存使用情况:

  • 位图

    内存被划分为一个一个小的分配单元,对应于

  • 空闲区链表

    维护一个已分配内存段和空闲内存段的链表

三、虚拟内存

解决问题:软件膨胀

虚拟内存思想:每个程序拥有自己的地址空间,空间被分割成多块,每一块称做一页或者页面

1、分页

虚拟地址构成了虚拟地址空间,MMU负责将虚拟地址映射为物理地址

虚拟地址空间按照固定大小划分成页面

缺页中断

虚拟地址分为页号(页面的索引)和偏移量

2、页表

虚拟地址分为 虚拟页号 和 偏移量

虚拟地址(虚拟页号 + 偏移量) -> 虚拟页号 -> 虚拟页面对应的页表项 -> 页框号 -> 页框号 + 偏移量 -> 物理地址

页表的目的:将虚拟地址转换为页框

页表项结构:访问位、修改位、保护位、“在/不在”位、页框号

虚拟内存的本质是创建了一个新的抽象概念:地址空间

虚拟内存的实现,是将虚拟地址空间分成页,并将每一个页面映射到物理内存的页框或者解除映射,

3、加速分页过程

时间和空间的问题

  • 虚拟地址到物理地址的映射必须很快
  • 如果虚拟地址空间很大,则页表也会很大

(1)转换检测缓冲区

转换检测缓冲区(TLB)也称相联存储器和快表

当需要查找一个虚拟地址时,先查找TLB表;如果TLB表没有就查找页表,并将该页表项替换一个TLB表项

(2)软件TLB管理

使用软件而不是硬件来处理TLB失效的问题

4、针对大内存的页表

引入TLB可以加快虚拟地址到物理地址的转换,那么如何处理巨大的虚拟地址空间呢?

(1)多级页表

引入多级页表的原因就是避免将所有的页表全都保存在内存里面

(2)倒排页表

对虚拟页面进行散列运算,建立散列表

四、页面置换算法

发生缺页中断时候,操作系统必须去选择一个页面将其换出内存

1、最优页面置换算法

2、最近未使用页面置换算法

3、先进先出页面置换算法

n、…

五、分页系统中的设计问题

六、有关的现实问题

七、分段

在机器上提供多个相互独立的称为段的地址空间

段是一个逻辑实体