《操作系统教程》第5版-Chapter4-存储管理

ⅰ亾dé卋堺 提交于 2020-02-12 02:24:45
存储管理
存储分配
地址映射
存储保护
存储共享
存储扩充
 
存储器层次:寄存器,缓存,内存,磁盘,磁带
寄存器:速度最快最贵
 
**源程序运行的三个阶段:
编译:生成目标代码
链接
静态链接:装载前将目标模块与库函数链接装配成一个完整的可执行程序
动态链接:程序装载时一边装载一边链接
运行时链接:目标模块与库函数的链接推迟到执行时才进行
装载:装入物理空间
绝对装载:始终与内存地址相同
可重定位装载:根据内存当前状况决定放入的物理位置。使用的地址为相对地址
动态运行时装载:允许内存的程序换出到磁盘,适当时再换入内存。前后物理位置可不同。即允许进程的内存映像不同时候在不同位置
 
 
**重定位逻辑地址变物理地址
静态地址重定位
动态地址重定位
使用两个控制寄存器:基址寄存器和限长寄存器
运行时链接地址重定位
 
连续存储管理:
固定分区
缺点:
必须使用覆盖技术
内存利用率不高
无法动态扩充
限制多道程序的道数
 
动态分区
可变分区分配算法:
最先适应:未分配区表或链表中的空闲区按地址从小到大排列
下次适应:上次扫描结束处顺序查找
最优适应:满足要求的最小分区
最坏适应:总是挑一个最大的空闲区给作业使用
快速适应:经常用到的长度的空闲区设立单独的空闲区链表
管理的数据结构:已分配区表,未分配区表
空闲区管理办法:链表
 
内存不足处理技术
移动:已在内存的进程分区连接到一起
对换:移出内存,把磁盘中某个进程换入内存
覆盖:执行过程中不同模块在内存中相互替代
基本实现技术是把用户控件分成固定区和一个或多个覆盖区。由程序员实现
 
分页存储管理
一维结构用户不可见,信息的物理单位,与逻辑单位无关
页面:逻辑地址分成大小相同的区
页框(页帧)内存物理地址分成大小相等的区,与页面大小相等
页表:用于页面与页框建立联系,逻辑地址转换成物理地址。程序页面和内存页框的对照表
采用动态地址重定位技术
实际上是重定位寄存器的集合
物理地址=页框号*块长+页内位移
 
分段存储管理
二维结构用户可见
信息的逻辑单位,由源程序的逻辑结构及含义决定
以段位单位来划分和连续存放,各段之间不一定连续
 
分段与分页存储的比较:
二维结构VS一维结构
用户可见VS用户不可见
逻辑结构VS物理结构
任意内存地址开始VS页面大小整数倍地址开始
满足用户模块化程序设计的需要VS实现离散分配并提高内存利用率
 
段页式存储管理系统中其虚拟地址空间是
 
MMU(Memory Management Unit)存储管理部件:地址转换与存储保护功能
支持虚存管理和多任务管理
功能:
管理页表基址寄存器
分解逻辑地址
管理快表
访问页表
发出异常
管理特征位
 
多级页表:
页表项:把整个页表分割成许多小页表
二级页表地址转换需要访问三次内存:一次页目录,一次页表项,一次指令或数据
 
虚拟存储管理:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换。从逻辑上为用户提供一个比物理内存容量大的多的“内存储器”
核心思想:局部性原理——部分装入,部分替换
局部性:时间局部性,空间局部性
在逻辑上扩充内存
请求分页虚拟存储管理
全局页面替换策略:P224
OPT:首先选择以后不再访问的页面,然后选择距离现在最长时间再访问的页面
先进先出
LRU
SCR:再给你一次机会。引用位是1便放到队尾
时钟页面替换算法(Clock)
页面首次装入内存,“引用位”置1
内存的任何一个页面被访问,“引用位”置1
淘汰页面时,开始扫描,所有“引用位”为1的置0。找第一个为0的引用页面
 
改进Clock:
1选择最佳淘汰页面,找r=0,m=0;
2找r=0,m=1,扫描过程中把经过的r置0
实现:
请求分页虚存管理:进程信息副本放在外存,只装入当前使用页面
请求分页
实现的硬件:页表基址寄存器,TLB快表
交换区
页面装入和清除策略:
请页式和预调式
请页式和预约式(写回外存)
页面分配策略
页面替换:局部替换(作用范围局限于进程自身)和全局替换
当工作集在进程运行期间发生较大变化时,全局算法比局部算法好
固定分配局部替换配合使用
可变分配全局替换配合使用
请求段页
例子:
Windows的虚拟内存
Linux的交换空间
 
局部页面替换算法
局部最佳页面替换算法MIN
工作集和工作集置换算法
模拟工作集替换算法
缺页频率替换算法
 
工作集:最近n次内存访问的页面的集合
 
抖动(颠簸):页面被调入不久即被淘汰,淘汰不久再被调入
 
虚拟存储器和对换的比较:
虚存以段或页为单位VS对换以进程为单位
 
 
反置页表(IPT):
每一个页框设置一个表项,表项中存放进程号和页号,系统只维护一张反置页表
由于物理存储空间小于逻辑存储空间,所以使用反置页表减少了页表占用的内存空间
在分页系统中,每个进程都有一个页表,进程逻辑地址空空关键的每个页在页表中都有一个相应的页表项用来存放页所在的叶框号。现代系统中可能存在大量进程,每个进程都允许很大的逻辑地址空间,因而进程可能拥有一个很大的页表,这些页表会占用大量的内存空间
反置页表的地址映射过程
1. 根据进程号和页号找到页框号
2. 物理地址=页框号*页框大小+页内偏移地址
 
 
转移后援缓冲(TLB)翻译快表
 
分页存储空间分配和去配:位示图
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!