操作系统总结 存储器管理
存储器的层次结构
- CPU寄存器
寄存器 - 主存
高速缓存
主存
磁盘缓存 - 辅存
磁盘
可移动介质
CPU寄存器和主存属于操作系统存储管理,掉电后其信息不再存在
辅存属于设备管理,存储的信息被长期保存
主存储器和寄存器
- 主存储器
用于保存进程运行时的程序和数据,也称为可执行存储器 - 寄存器
寄存器的访问速度最快,完全能与CPU协调工作,但价格却十分昂贵。
高速缓存和磁盘缓存
- 高速缓存
其用量远大于寄存器,而比内存小两到三个数量级,访问速度快于主存储器。存储一些经常访问的信息,减少访问主存储器的次数,可大幅度提高程序的执行速度。 - 磁盘缓存
磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,提供对主存储器的存储空间扩充。\
程序的装入与链接
编译->链接->装入
程序的装入
- 绝对装入
绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后啊,由于程序中的逻辑地址和实际的内存地址完全相同,故不须对程序和数据的地址进行修改。
只使用于单道环境下 可重定位装入方式
由于在多道程序下,逻辑地址和实际装入的内存地址不符,所以要在装入时对目标程序中的指令和数据进行修改。而且以后不进行改变,所以称为静态重定位。动态运行装入方式
其把地址转换推迟到程序真正要执行时才进行。
程序的链接
- 静态链接
- 对相对地址进行修改
- 变换外部调用符号
- 装入时动态链接
在装入内存时边装入边链接,
优点:
1、便于更新和修改
2、便于实现对目标模块的共享 - 运行时动态链接
在运行时需要该模块时寻找并装入模块。
连续分配方式
固定分区分配
划分分区方法
- 分区大小相等
- 分区大小不等
内存分配‘
动态分区分配
- 数据结构
- 空闲分区表
- 空闲分区链
- 分配算法
- 首次适应算法
- 循环首次适应算法
- 最佳适应算法
- 最坏适应算法
- 快速适应算法
- 分区分配操作
- 分配内存
- 回收内存
伙伴系统
哈希算法
可重定位分区分配
把细小的内存空间集合成一个大的内存空间
1. 动态重定位引入
2. 动态重定位实现
3. 动态重定位分区分配算法
对换
- 对换的引入
把内存中的暂时不能运行的进程或者暂时不用的程序和数据调到外存上,以便腾出足够的空间,把具备运行条件的进程的程序或数据调入。 - 对换空间的管理
外存分为文件区和对换区(也就是我们平常说的swap),其采用连续分配的方式。 - 进程的换出和换入
- 进程的换出
- 进程的换入:将换出时间最久的进程作为换入进程,将之换入。
基本分页存储管理方式
分页存储管理方式,把内存分为多个页,可以有效避免内存产生过多碎片,最后一页装不满所形成的碎片为“页内碎片”。
页面和页表
- 页面
- 将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面。
- 内存空间分配出的片称之为页框或物理块
- 页面大小:页面大小需要在碎片多少和内存利用率之间保存平衡。
- 地址结构
页号和位移量 - 页表
为了在内存中找到每个页面所对应的物理块,系统为每个进程建立了一张页面映像表,简称页表。可以实现从页号到物理块号的地址映射。
地址变换机构
- 基本的地址变换机构
- 具有块表的地址变换机构
两级页表和多级页表
- 两级页表
- 多级页表
基本分段存储管理系统
其为了满足程序猿以下需求♪(^∇^*)
- 方便编程
- 信息共享
- 信息保护
- 动态增长
- 动态链接
分段系统的基本原理
- 分段
在分段存储管理方式中,作业的地址空间被划分为若干,每段定义了一组逻辑信息。 - 段表
类似于内存表,实现从逻辑地址到物理地址的映射 - 地址变换机构
- 分页和分段的主要区别
- 页是信息的物理单位,其目的是为了减少其内存的零散化
- 页的大小固定是有系统决定的,而段的长度不固定,取决于用户所编写的程序
- 分页的作业地址空间是一维的,而分段的作业地址空间是二维的。
信息共享
- 可重入代码
是一种允许多个进程同时访问的代码,为使各个进程所执行的代码完全相同,绝对不允许可重入代码在执行的过程中有任何改变
段页式存储管理系统
其实由分段和分页系统结合,即先将用户程序分为若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。
- 基本原理
- 地址变换过程
虚拟存储器的基本概念
虚拟存储器的引入
常规存储器管理方式的特征
- 一次性
- 驻留性
局部性原理
- 程序执行时大部分是顺序执行
- 过程调用深度大多数不超过5
- 循环结构执行多次
- 数据结构局限在很小的范围内
- 时间局限性 以前执行过的很可能再次执行
- 空间局限性 程序访问了某个存储单元,下次很可能被访问
定义
指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
虚拟存储器实现方法
虚拟存储器运行将一个作业分多次调入内存
- 分页请求系统
在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
1. 硬件支持:请求分页的页表机制、缺页中断机构、地址变换机构
2. 实现请求分页的软件
- 请求分段系统
1. 请求分段的段表机制
2. 缺段中断机构
3. 地址变换机构
虚拟存储器特征
1. 多次性:一个作业多次调入内存
2. 对换性:允许作业在运行过程中进行换进换出
3. 虚拟性:可以从逻辑上扩充容量
请求分页存储管理方式
请求分页中的硬件支持
页表机制
- 状态位p:是否已经调入内存
- 访问字段A:访问时间与次数
- 修改位M:调入内存是否被修改
- 外存地址:记录页对应的物理地址
缺页中断机构
- CPU在执行指令时发生中断
- 一条指令在执行期间可能产生多次缺页中断
- 地址变换机构
内存分配策略和分配算法
- 最小物理块数的确定
保证进程正常运行所需的最小物理块数 - 物理块的分配策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
- 物理块分配算法
- 平均分配法
- 按比例分配算法
- 考虑优先权的分配算法
调页机制
1、调入页面的时机
- 预测页策略
- 请求调页策略
2、确定从何处调入页面
3、页面调入过程
页面置换算法
在内存置换中,把选出换出页面的算法称为页面置换算法。
最佳置换算法和先进先出置换算法
- 最佳置换算法
假设已知要进入内存中的页,选取以后永久不使用的或者在最长时间不再被访问的页面替换出 - 先进先出置换算法 FIFO
该算法总是淘汰最先进入内存中的页面
最近最久未使用置换算法 LRU
LRU置换算法LRU算法选择最近最久未使用的页面进行淘汰。
- 硬件支持
1. 寄存器:访问即右移,小的数字为最近最久未使用
2. 栈:访问后即把该页号取出压如栈顶,栈底的就为最近最久未使用的页面。
Clock置换算法
- 简单的Clock置换算法
- 改进型Clock置换算法
其他置换算法
- 最少使用置换算算法
- 页面缓冲算法
请求分段存储管理方式
请求分段中的硬件支持
- 段表机制
- 缺段中断机构
- 地址变换机构
分段共享机制
- 共享段表
- 共享段的分配与回收
- 分段保护