3.2 单连续分区存储管理
3.2.1 单连续分区存储管理
单连续分区存储管理
- 每个进程占用一个物理上完全连续的存储空间(区域)
- 单用户连续分区存储管理
- 固定分区存储管理
- 可变分区存储管理
单用户连续分区存储管理
- 主存区域划分为系统区与用户区
- 设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护
- 一般采用静态重定位进行地址转换 硬件实现代价低 适用于单用户单任务操作系统,如DOS
单用户连续分区存储管理示意
静态重定位:在装入一个作业时,把该作业中程序的指令地址和数据地址全部转换成绝对地址
固定分区存储管理的基本思想
- 支持多个分区
- 分区数量固定
- 分区大小固定
- 可用静态重定位
- 硬件实现代价低
- 早期OS采用
固定分区方式的主存分配
固定分区方式的地址转换
- 硬件实现机制与动态重定位
可变分区存储管理概述
- 固定分区存储管理不够灵活,既不适应大尺寸程序,又存在内存内零头,有浪费
- 能否按照进程实际内存需求动态划分分区,并允许分区个数可变
- 这就是可变分区存储管理
3.2.2 可变分区存储管理
可变分区存储管理
- 按进程的内存需求来动态划分分区
- 创建一个进程时,根据进程所需主存量查看主存中是否有足够的空闲空间
- 若有,则按需要量分割一个分区
- 若无,则令该进程等待主存资源
- 由于分区大小按照进程实际需要量来确定,因此分区个数是随机变化的
可变分区方式的内存分配示例
可变分区方式的主存分配表
可变分区方式的内存分配
最先适应分配算法
邻近适应分配算法
最优适应分配算法
最坏适应分配算法
可变分区方式的内存回收
地址转换与存储保护
可变分区方式的内存零头
固定分区方式会产生内存内零头 #固定--内存内零头
可变分区方式也会随着进程的内存分配产生一小的不可用的内存分区,称为内存外零头 #可变--小不可用内存分区
最优适配算法最容易产生外零头 #最优--外零头
任何适配算法都不能避免产生外零头
移动技术(程序浮动技术)
移动技术的工作流程
3.3 页式存储管理
3.3.1 页式存储管理的基本原理
页式存储管理的基本原理
- 分页存储器将主存划分成多个大小相等的页架
- 受页架尺寸限制,程序的逻辑地址也自然分成页
- 不同的页可以放在不同页架中,不需要连续
- 页表用于维系进程的主存完整性
页式存储管理中的地址
- 页式存储管理的逻辑地址由两部分组成,页号和单元号 #逻辑=页号+单元号
- 页式存储管理的物理地址也有两部分组成:页架号和单元号 #物理=页架号+单元号
- 地址转换可以通过查页表完成
页式存储管理的地址转换思路
页式存储管理的内存分配/去配
页的共享
页式存储管理能够实现多个进程共享程序和数据数据共享: #多进程共享程序数据
不同进程可以使用不同页号共享数据页程序共享: #不同页号共享数据页程序
不同进程必须使用相同页号 #不通进程必须同页号
共享代码页共享代码页中的(JMP )指令,使用不同页号是做不到
3.3.2 页式存储管理的地址转换
页式存储管理的地址转换代价
- 页表放在主存: 每次地址转换必须访问两次主存 #页表>>主存--访问两次主存
- 按页号读出页表中的相应页架号 #页号>>页表中页架号
- 按计算出来的绝对地址进行读写
- 存在问题:降低了存取速度
- 解决办法:利用Cache存放部分页表
页式存储管理的快表
- 为提高地址转换速度,设置一个专用的高速存储器,用来存放页表的一部分
- 快表:存放在高速存储器中的页表部分
- 快表表项:页号,页架号
- 这种高速存储器是联想存储器,即按照内容寻址,而非按照地址访问 #块表--联想存储器--内容寻址--存储页表部分
引入快表后的地址转换代价
- 采用快表后,可以加快地址转换速度
- 假定主存访问时间为200毫微秒,快表访问时间为40毫微秒,查快表的命中率是90%,平均地址转换代价为 (200+40) *90%+(200+200+40)*10%=260毫微秒
- 比两次访问主存的时间(400毫微秒)下降了35%
基于快表的地址转换流程
- 按逻辑地址中的页号查快表
- 若该页已在快表中,则由页架号和单元号形成绝对地址 #页在快表---页架号单元号=绝对地址
- 若该页不在快表中,则再查主存页表形成绝对地址,同时将该页登记到快表中 #不在块表--查主存页表=绝对地址---登记块表
- 当快表填满后,又要登记新页时,则需在快表中按一定策略淘汰一个旧登记项
多道程序环境下的进程表
多道程序环境下的地址转换
3.3.3 页式虚拟存储管理
页式虚拟存储管理的基本思想
- 把进程全部页面装入虚拟存储器,执行时先把部分页面装入实际内存,然后,根据执行行为,动态调入不在主存的页,同时进行必要的页面调出
- 现代OS的主流存储管理技术 首次只把进程第一页信息装入主存,称为请求页式存储管理
页式虚拟存储管理的页表
页式虚拟存储管理的实现
CPU处理地址
若页驻留,则获得块号形成绝对地址 #页驻留,块号形成绝对地址
若页不在内存,则CPU发出缺页中断 OS处理缺页中断 #页不在内存,缺页中断
若有空闲页架,则根据辅存地址调入页,更新页表与快表等
若无空闲页架,则决定淘汰页,调出已修改页,调入页,更新页表与快表
页式虚拟存储管理的地址转换
缺页中断的处理流程