导图社区 计算机操作系统存储器管理
计算机操作系统存储器管理核心知识点总结梳理。存储器管理是计算机操作系统的职能之一,主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。
编辑于2019-02-10 06:18:53存储器管理
存储器的层次结构
多级存储器结构
CPU寄存器
寄存器
主存
高速缓存
主存
磁盘缓存
辅存
磁盘
可移动存储介质
可执行存储器
主存储器与寄存器
主存储器
用于保存进程运行时的程序和数据,也称可执行存储器
寄存器
用于加速存储器的访问速度
高速缓存和磁盘缓存
高速缓存
将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度
磁盘缓存
将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数
程序的装入和链接
编译——目标模块(Object Module)
链接——装入模块(Load Module)
静态链接
对相对地址进行修改
变换外部调用符号
装入时动态链接
运行时动态链接
这种链接方式是将对某些模块的链接推迟到程序执行时才进行链接
装入——内存
绝对装入方式
编译程序产生绝对地址的目标代码
可重定位装入方式
通常是把在装入时对目标程序中指令和数据的修改过程称为重定位
动态运行时装入方式
并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行
连续分配方式
单一连续分配
系统区——OS;低址
用户区——除系统区外
(只用于单用户,单任务OS)
固定分区分配
分区方法
分区大小相等——炉温群控系统等;相同内存需求
分区大小不等——小、中等、大分区
内存分配
内存分区按照大小排队
(将内存用户空 间划分为若干个固定大小的区域)
动态分区分配
分区分配中的数据结构
空闲分区表
空闲分区链
分区分配算法
首次适应算法FF
(分区链按照地址递增,任务需求从低址开始找,找到满足后分配,剩余空间放回链中)
缺点:留下许多难以利用的、很小的空闲分区
循环首次适应算法(next fit)
(从上次分配后一分区开始查找)
最佳适应算法(best fit)
(分区链按照内存大小递增)
最坏适应算法(worst fit)
(分区链按照容量从大到小排列,只选取第一个,分给任务)
快速适应算法(quick fit)
分区的分配与回收
分配内存
if( m.size-u.size≤size){将整块分配给任务}
else{划分一块给任务}
回收内存
当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插 入点
伙伴系统
哈希算法
建立哈希函数
动态重定位分配
紧凑
必须对移动了的程序或数据进行重定位
重定位实现
重定位寄存器(存放程序(数据)在内存中的起始地址)
真正访问的内存地址 是相对地址与重定位寄存器中的地址相加而形成!!!
对换(swapping)
对换的引入
把内存中暂时不能 运行的进程或者暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间,再把已 具备运行条件的进程或进程所需要的程序和数据调入内存
对换空间的管理
外存分为文件区、对换区
换入换出
选择处于阻塞状态且优 先级最低的进程作为换出进程
启动磁盘,将该进程的程序和数据传送到磁盘的对换区上
回收该进程所占用的内存空间,并对该进程的进程控 制块做相应的修改
找出“就绪”状态但已换出 的进程,将其中换出时间最久(换出到磁盘上)的进程作为换入进程,将之换入
基本分页存储管理方式
(基于离散分配思想)——分页;分段
页面与页表
页面与块
内存空间分成与页面 相同大小的若干个存储块——块或页框:0#块、 1#块;
进程的逻辑地址空间划分——页面:0,1,2.....;
地址结构
页表
地址变换机构
(实现从逻辑地址到物理地址的转换)
两级页表和多级页表
基本分段存储管理方式
满足需求
方便编程
逻辑地址是由段名(段号)和段内偏移量(段内 地址)决定的
信息共享
信息保护
动态增长
动态链接
先将主 程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目 标程序)调入内存并进行链接
分段系统的基本原理
分段
段表
地址变换机构
虚拟存储器
(从逻辑上扩充容量)
常规存储器特征
一次性——一次将作业全部装入内存
驻留性——作业装入内存后,便一直驻留在内存中,直至作业运行结束
局部性原理
顺序执行
过程调用一半不超过5
存在许多循环结构
许多数据结构
时间局限性
空间局限性
虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑 上对内存容量加以扩充的一种存储器系统
实现机制
分页请求系统
分页系统基础上
请求调页功能
页面置换功能
硬件支持
请求分页的页表机制
缺页中断机构主题
地址变换机构
请求分段系统
分段系统基础上
请求调段功能
分段置换功能
硬件支持
请求分段的段表机制
缺段中断机构
地址变换机构
请求分页存储管理方式
硬件支持
页表机制
状态位 P——用于指示该页是否已调入内存,供程序访问时参考
访问字段 A——用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长 时间未被访问,供选择换出页面时参考
修改位 M——表示该页在调入内存后是否被修改过
外存地址——用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考
缺页中断机构
(当所要访问的页面不在内存时,便产生一缺页中断,请求 OS 将 所缺之页调入内存)
在指令执行期间产生和处理中断信号
一条指令在执行期间,可能产生多次缺页中断
地址变换机构
内存分配策略和分配算法
最小物理块数的确定
能保证进程正常运行所需的最小物理块数
与计算机 的硬件结构有关,取决于指令的格式、功能和寻址方式
物理块的分配策略
固定分配局部置换
可变分配全局置换
可变分配局部置换
物理块分配算法
平均分配算法
按比例分配算法
考虑优先权的分配算法
页面置换算法
最佳置换算法
淘汰的页面为未来不再使用、长时间不访问的
无法实现的
先进先出(FIFO)置换算法
总是替换最先进入内存的页面
容易实现——指针访问最老页面
最近最久未使用(LRU)置换算法
访问字段记录两次访问之间的时长
硬件支持
移位寄存器
进程访问某物理块时,要将相应寄存器的 Rn-1 位置成 1。此时,定时信号将每隔一 定时间(例如 100 ms)将寄存器右移一位
栈
当进程访问某页面时, 便将该页面的页面号从栈中移出,将它压入栈顶;栈底最旧
Clock 置换算法(NRU)
改进型 Clock 置换算法
选择页面换出时,既要是未使用过的页面, 又要是未被修改过的页面
其他算法
请求分段存储管理方式
请求分段中的硬件支持
段表机制
缺段中断机构
地址变换机构
分段的共享与保护
共享段表
共享进程计数 count
存取控制字段
短号
分享段的分配与回收
分配
只需在调用进程的段表中增加一表项,填写该共享段的物理地址;在共享段的 段表中,填上调用进程的进程名、存取控制等,再执行 count :=count+1
回收
count :=count-1
分段保护
越界检查
存取控制检查
环保护机构
一个程序可以访问驻留在相同环或较低特权环中的数据
一个程序可以调用驻留在相同环或较高特权环中的服务