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、内存映射文件
第一个作用:方便访问

第二个作用:共享

小结:
