存储器分层体系
存储管理器 -> 管理分层存储器体系
一、无存储器抽象
直接访问物理内存
在不使用存储器抽象的情况下运行多个程序
两个程序都引用了绝对的物理地址—静态重定位
二、一种存储器抽象:地址空间
将物理地址直接暴露给进程的问题:
- 用户程序很容易破坏操作系统
- 同时运行多个程序非常困难
1、地址空间的概念
解决两个问题:保护和重定位
地址空间是一个进程可用于寻址内存空间的一套地址集合,每个进程有一套自己的内存空间
地址空间的抽象概念:电话号码的前缀、IPv4地址、域名
基址寄存器和界限寄存器
动态重定位
2、交换技术
处理内存超载的两种办法:
交换
将程序完整调入内存再放回磁盘
虚拟内存
将程序的一一部分调入内存
3、空闲内存管理
跟踪内存使用情况:
位图
内存被划分为一个一个小的分配单元,对应于
空闲区链表
维护一个已分配内存段和空闲内存段的链表
三、虚拟内存
解决问题:软件膨胀
虚拟内存思想:每个程序拥有自己的地址空间,空间被分割成多块,每一块称做一页或者页面
1、分页
虚拟地址构成了虚拟地址空间,MMU负责将虚拟地址映射为物理地址
虚拟地址空间按照固定大小划分成页面
缺页中断
虚拟地址分为页号(页面的索引)和偏移量
2、页表
虚拟地址分为 虚拟页号 和 偏移量
虚拟地址(虚拟页号 + 偏移量) -> 虚拟页号 -> 虚拟页面对应的页表项 -> 页框号 -> 页框号 + 偏移量 -> 物理地址
页表的目的:将虚拟地址转换为页框
页表项结构:访问位、修改位、保护位、“在/不在”位、页框号
虚拟内存的本质是创建了一个新的抽象概念:地址空间
虚拟内存的实现,是将虚拟地址空间分成页,并将每一个页面映射到物理内存的页框或者解除映射,
3、加速分页过程
时间和空间的问题
- 虚拟地址到物理地址的映射必须很快
- 如果虚拟地址空间很大,则页表也会很大
(1)转换检测缓冲区
转换检测缓冲区(TLB)也称相联存储器和快表
当需要查找一个虚拟地址时,先查找TLB表;如果TLB表没有就查找页表,并将该页表项替换一个TLB表项
(2)软件TLB管理
使用软件而不是硬件来处理TLB失效的问题
4、针对大内存的页表
引入TLB可以加快虚拟地址到物理地址的转换,那么如何处理巨大的虚拟地址空间呢?
(1)多级页表
引入多级页表的原因就是避免将所有的页表全都保存在内存里面
(2)倒排页表
对虚拟页面进行散列运算,建立散列表
四、页面置换算法
发生缺页中断时候,操作系统必须去选择一个页面将其换出内存
1、最优页面置换算法
2、最近未使用页面置换算法
3、先进先出页面置换算法
n、…
五、分页系统中的设计问题
六、有关的现实问题
七、分段
在机器上提供多个相互独立的称为段的地址空间
段是一个逻辑实体