C3.存储管理
存储管理的主要模式@
逻辑地址:又称相对地址,即用户编程所使用的编程地址
从0开始编号
段氏程序设计:把一个程序设计成多个段
用户可以应用段覆盖技术扩充内存空间使用量
物理地址:
主存储器的复用:
1.按照分区复用(分区固定/可变)
2.按照页架复用(页架固定)
存储管理的基本模式:
存储管理的功能@
地址转换:又称重定位,将逻辑地址转换为绝对地址。
主存储器空间的扩充:
1.对换技术;
2.虚拟技术;
虚拟存储器@
实现思路:
(辅存)虚拟地址空间:容纳进程装入
(主存)实际地址空间:承载进程执行
存储管理的硬件支撑@
单连续分区存储管理@
固定分区存储管理(会产生内存内零头)
可变分区存储管理(最常用)
可变分区存储管理@
按进程的内存需求 来动态划分分区
内存分配:
最先适应分配算法
邻近适应分配算法
最优适应分配算法(最容易产生内存外零头问题)
最坏适应分配算法
地址转换与存储保护
移动技术(程序浮动技术)
1.解决内存外零头问题
2.需要动态重定位支撑
页式存储管理@
逻辑地址:页号和单元号
物理地址:页架号和单元号
地址转换通过查阅页表
一张位示图来记录主存分配情况
数据共享:不同进程可以使用不同页号共享数据页
程序共享:不同进程可以使用相同页号共享数据页
地址转换
页表放在主存中:每次地址转换必须访问两次主存
1.按页号独处页表中的相应页架号
2.按计算出来的绝对地址进行读写
存在问题:降低了存取速度
解决办法:利用Cache存放部分页表
快表:页号,页架号。(联想存储器,按照内容寻址)
基于快表的地址转换流程:
页式虚拟存储管理:
页面调度:
缺页中断率=不成功访问次数/总访问次数
影响缺页中断率的因素:可用页架数越多,越低;页面越大,越低;用户编程方式。
OPT页面调度算法(最佳算法):
先进先出FIFO页面调度算法:总是淘汰最先调入主存的那一页。
最近最少用LRU页面调度算法:淘汰最近一段时间较久未被访问的那一页。既考虑了循环性又兼顾了顺序性。
模拟实现:每页件一个引用标志,供硬件使用;设置一个时间间隔中断;
最不常用LFU页面调度算法:
时钟CLOCK页面调度算法:
反置页表:
原来的页表是以页号为索引,记录页架号;但是反置页表是以页架号为索引,记录进程号和页号
针对内存中的每个页架建立一个页表
表项包含:正在访问该页架的进程标识,页号及特征位,和哈希链指针。
段式存储管理@
分段存储器的逻辑地址由两部分组成:
段号:单元号
存储管理需要增加设置一个段表,每个段占用一个段表项:段始址,段限长,以及存储保护,可移动,可扩充等标志位。
地址转换流程:
段的共享:
段式虚拟存储管理:
将进程的所有分段都存放在辅存中,需要时,动态调入主存。
段表扩充:特征位,存取权限,扩充位,标志位
段页式存储管理:
基本思想:
段式存储管理可以基于页式存储管理实现
每一段不必占据连续的存储空间,可存放在不连续的主存页架中
能够扩充位段页式虚拟存储管理
装入部分段,或者段内部分页面