存储器管理功能
- 内存分配
- 内存保护
- 内存映射
- 虚拟内存
地址映射
将程序地址空间中使用的逻辑地址变换成主存中的物理地址的过程,称为地址映射。
主存分配
1.构造分配用的数据结构
主存资源信息块:等待队列;空闲区队列;主存分配程序
2. 制定策略
① 分配策略 —— 在众多个请求者中选择一个请求者的原则
② 放置策略 —— 在可用资源中,选择一个空闲区的原则
③ 调入策略 —— 决定信息装入主存的时机。预调策略:预先将信息调入主存。请调策略:当需要信息时,将信息调入主存
④ 淘汰策略 —— 在主存中没有可用的空闲区 (对某一程序而言)时,决定哪些信息从主存中移走,即确定淘汰已占用的内存区的原则。
3. 实施主存分配与回收
存储保护
-
在多用户环境中,主存储器按区分配给各用户程序使用。为了互不影响,必须由硬件(软件配合)保证各用户程序只能在给定的存储区域内活动,这种措施叫做存储保护。
-
实现方法
- 界地址保护
- 存储键保护
界地址保护
① 上下界防护
例:程序大小为4KB,主存首址为20KB。
设置一个上界和下界寄存器,当有一个物理地址得到的时候与上界地址和下界地址比较。若 20KB≤D<24KB,允许访问;否则发生越界中断。
② 基地址、限长保护
例:程序大小为4KB,主存首址为20KB。
基址寄存器存储了这个程序的起始地址,限长寄存器记录了这个程序的长度的限制。使用相对地址就可以对其进行判断。在地址映射之前就可以完成越界判断。
地址空间的概念
物理地址(绝对地址、实地址)
物理地址是计算机主存单元的真实地址,又称为绝对地址或实地址。
主存空间
物理地址的集合所对应的空间组成了主存空间。
逻辑地址(相对地址、虚地址)
用户程序地址(指令地址或操作数地址)均为逻辑地址。
程序地址空间
用户程序所有的逻辑地址集合对应的空间。
存储器管理方式
- 大小不等的区域(适合不同大小的程序运行)
- 分区存储管理
- 段式存储管理
- 大小相等的区域
- 页式存储管理
- 二者结合
- 段页式存储管理
- 虚拟存储器
连续分配管理方式(静态分配)
(1)单一连续分配,适用于单用户单任务的操作系统
(2)固定分区分配,固定分区是指在作业装入之前,内存就被划分成若干个分区,一旦划分完成,在系统运行期间不再重新划分,即分区的个数和大小不再变化,所以固定分区又称为静态分区。
(3)可变分区分配可变分区存储管理不是预先把内存中的用户区域划分成若干固定 分区,而是在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题。
可变分区分配算法
- 首次适应算法
- 最佳适应算法
- 最差适应算法
- 下次适应算法
动态分区管理更多细节
非连续分配管理方式
(1)分页管理方式
分页管理的细节
(2)段式管理方式
段式管理细节
(3)段页式管理方式
- 页是存储管理方式适合高效率的利用存储空间。
段式存储管理方式是从程序的角度来管理内存,便于程序的共享和保护。为了结合这两部分的优点,于是产生:
了段页式的存储管理方式。
虚拟内存管理
概念点
主存扩充
- 必要性——主存容量不满足应用需求
- 可行性——局部性特征
- 时间局部性(不久的将来再次访问该指令/数据)
- 空间局部性(马上将访问其附近的指令/数据)
- 实现方法
- 程序的全部代码和数据存放在辅存中;
- 程序当前执行所涉及的那部分程序代码放入主存中;
- 程序执行时,当所需信息不在主存,由操作系统和硬件配合来从辅存中调入信息,程序继续执行。
这样的实现方式就是虚拟存储器的方式。
虚拟存储器的核心
- 逻辑地址与物理地址分开
- 存储空间与虚地址空间分开
- 提供地址变换机构
实现虚拟存储器的物质基础
- 辅存容量足以存放应用程序的虚地址空间
- 主存容量存放进入主存的多进程的信息
- 地址变换机构
请求分页管理方式
页面置换算法
- 最佳置换算法(OPT)
- 先进先出(FIFO)页面置换算法
- 最近最久未使用(LRU)置换算法
- 时钟(CLOCK)置换算法
抖动
请求分段管理方式
请求段页式管理方式