3.1内存管理概念
3.1.1 内存的基础知识
1、内存及作用
2、常用的数量单位
3、指令的工作原理
指令的工作基于”地址“,每个地址对应一个数据的存储单元
4、装入的三种方式
绝对装入
可重定位装入(静态重定位)
动态运行时装入(动态重定位)
5、从写程序到程序运行
6、链接的三种方式
静态链接
装入时动态链接
运行时动态链接
小结:
3.1.2 内存管理的概念
1、内存空间的分配与回收
操作系统负责内存空间的分配与回收。
2、内存空间的扩展
操作系统需要提供某种技术从逻辑上对内存空间进行扩充。
3、地址转换
操作系统需要提供 地址转换功能,负责程序的逻辑地址与物理地址的转换。
实现转换的三种方式:
4、内存保护
操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰。
两种方法:
方法一:
方法二:
小结:
3.1.3 覆盖与交换
1、覆盖技术
例子:
但是:覆盖技术必须有程序员声明覆盖结构,操作系统完成自动覆盖。
缺点:对用户不透明,增加了用户编程负担
覆盖技术只用于早期的操作系统中,现在已成为历史。
2、交换技术
设计思想:
暂时换出外存等待的进程状态为 挂起状态(挂起态)
挂起态又可以进一步细分外就绪挂起、阻塞挂起两种状态。
小结:
3.1.4 连续分配管理方式
分区分配内存方式也称为连续分配管理方式
1、单一连续分配
2、固定分区分配
分区大小相等
分区大小不等
3、动态分区分配(可变分区策略)
问题1:
系统要用什么样的数据结构记录内存的使用情况?
问题2:
当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
利用动态分区算法—>下一小节
问题3:
如何进行分区的分配与回收操作?
小结:
3.1.5 动态分区分配算法
1、首次适应算法
2、最佳适应算法
缺点:
每次都选最小的分区进行分配,会留下越来越多的、很小的、难以利用的内存块。因此这种方法会产生很多的外部碎片。
3、最坏适应算法
4、邻近适应算法
又称 循环首次适应算法
小结:
非连续分配管理方式:
3.1.6 基本分页存储管理的概念
1、什么是分页存储
2、重要的数据结构-页表
问题1:
每个页表项占多少字节?
计算机中内存块的数量---->页表项中块号至少占多少字节
问题2:
如何实现地址的转换?
例子:
如何确定一个逻辑地址对应的页号、页内偏移量?
页面大小刚好是2的整数幂的好处:
3、逻辑地址结构
小结:
3.1.7 基本地址变换机构
属于基本分页存储管理
例子:
对页表项大小进一步讨论
小结:
3.1.8 具有快表的地址变换机构
--------->是基本地址变换机构的改进版本
1、快表(TLB)
但是不能把整个页表都放在TLB,因为速度更快的价格越贵
例子:
2、引入快表后,地址的变换过程
例子:
3、局部性原理
小结:
3.1.9 两级页表
----->用于解决单机页表存在的问题
1、单级页表存在的问题
2、如何解决
问题1
3、两级页表的原理、地址结构
例子:
问题2
4、注意的细节
小结:
3.1.10 基本分段存储管理方式
1、分段
2、地址变换
3、分段、分页管理的对比
小结:
3.1.11 段页式管理方式
是分段和分页的结合
1、分页、分段的优缺点分析
2、段页式管理的逻辑地址结构
小结:
3.2 虚拟内存管理
3.2.1 虚拟存储的基本概念
1、传统存储管理方式的特征、缺点
2、局部性原理
可以解决传统存储管理方式的缺点
时间局部性
---->循环
空间局部性
---->数组
3、虚拟内存的定义和特征
虚拟内存是操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充。
4、如何实现虚拟内存技术
小结:
3.2.2 请求分页管理方式
1、页表机制
2、缺页中断机构
页面不在内存时---->>状态位为0
例子:
3、地址变换机构
小结:
3.2.3 页面置换算法
页面置换算法
1、最佳置换算法(OPT)
就是看前一列的内存块分别存放在哪,图中指的前面一列就是7 0 1
2、先进先出置换算法(FIFO)
一共缺页9次
当要分配四个内存时
3、最近最久未使用置换算法(LRU)
该算法需要专门的硬件支持,虽然算法性能好,但是实现困难,开销大。
4、时钟置换算法(CLOCK)
------->是一种性能和开销较均衡的算法,又称为CLOCK算法,或最近未用算法(NRU)
简单的CLOCK算法
例子:
开始,因为分配5个内存块,所以访问到1,3,4,2,5这5个内存块的时候不考虑淘汰页面
当访问6号时,所有页面访问位是1,然后第一轮扫描后将所有访问位变为0,开始第二轮扫描
然后,指针扫描到1号页面,访问位为0,然后将6号页面置换到1号,将6号访问位置换为1,然后指针指向下一个页面3号
页面被替换时,该指针设置指向被替换页面的下一页
然后接下来,访问3号和4号页面,都在内存中,只是将访问位置换为1,但是指针不转动!!!!
访问到7号页面时,依次开始3号、4号,把访问位置位0,然后访问到2号页面时发现为0,将2号页面置换为7号,然后将7号页面访问位置为1,指针指向下一页面
改进型的时钟置换算法
(访问位,修改位)
访问位=1–>近期被访问过 修改位=1–>页面被修改过
访问位=0–>近期未被访问 修改位=0–>页面未被修改
例子:
分配5个内存块
只需一轮扫描,找到(0,0),然后淘汰
扫描一轮,没有发现(0,0),
第二轮为,先将扫描到的(1,1)置换为(0,1),然后淘汰第二个淘汰(0,1)
第一轮扫描没有发现
第二轮扫描,修改访问位为0,没有发现(0,1)
第三轮扫描发现(0,0)
第一轮不满足
第二轮后,修改访问位之后变成
第三轮没有发现(0,0)
第四轮找到(0,1)
小结:
3.2.4 页面分配策略、抖动、工作集
1、页面分配、置换策略
固定分配局部置换
可变分配全局置换
未锁定----->系统会锁定一些页面,这些页面中的内容不能置换出外存(如:重要的内核数据可以设定为“锁定”)
可变分配局部置换
区别:
2、何时调入页面
预调页策略
请求调页策略
3、从何处调入页面
系统拥有足够的对换区空间
系统缺少足够的对换区空间
UNIX方式
4、抖动(颠簸)现象
5、工作集
小结:
3.2.5 内存映射文件(大纲新增)
----->大概率考概念型选择题,不会考很深
1、内存映射文件概念
2、传统的文件访问方式
3、内存映射文件
第一个作用:方便访问
第二个作用:共享
小结: