一.内存管理概述
1.1 基础知识
1.2 内存管理的功能
重定位寄存器又称基址寄存器
界地址寄存器又称限长寄存器
1.3 覆盖与交换–用来扩充内存
覆盖是在同一个程序或进程中的
交换是在不同进程或者作业之间的
1.3.1 覆盖
将用户内存空间分为固定区和覆盖区
经常活跃的部分放在固定区,其余部分按照调用关系分段,即将访问的段放入覆盖区,其余段放在外存,需要时,调入覆盖区,替换覆盖区中原有的段
缺点:必须由程序员声明覆盖结构,操作系统完成自动覆盖,对用户不透明,增加了用户编程负担。
1.3.2 交换
内存空间紧张时,系统将内存中某些进程暂时换出外存,将外存中某些具备运行条件的进程换入内存
暂时换出外存等待的进程状态为挂起状态。
PCB常驻内存,不会换出
1.4 连续分配管理方式
1.5 动态分区分配算法
1.5.1 首次适应算法
空闲分区以地址递增的次序链接,分配内存时顺序查找,找到大小能满足要求的第一个空闲分区
1.5.2 最佳适应算法
1.5.3 最坏适应算法
1.5.4 邻近适应算法
二.非连续分配管理方式
2.1 基本分页存储管理方式
如果每个页面大小为2^k B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号
基本地址变换机构:
2.2 基本分段存储管理方式
2.3 基本段页式存储管理方式
三.虚拟内存
3.1 基本概念
3.2 请求分页管理方式
3.2.1 页表机制
3.2.2 缺页中断结构
每当访问的页面不在内存时,产生一个缺页中断,然后由操作系统的缺页中断处理程序处理中断,此时缺页的进程阻塞,加入阻塞队列,调页完成后再将其唤醒
如果内存中有空闲块,则分配一个进程块
如果没有,则由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则要将其写会外存,未修改过的页面不用写会外存。
缺页中断属于内中断
一条指令在执行过程中可能产生多次缺页中断
3.2.3 地址变换机构
3.3 页面置换算法
3.3.1 最佳置换算法(OPT)
理想化、实际中无法实现
缺页率最小,性能最好,无法实现
3.3.2 先进先出置换算法(FIFO)
实现简单、性能差、可能出现Bleady异常
3.3.3 最近最久未使用置换算法(LRU)
性能好、需要硬件支持、算法开销大
3.3.4 时钟置换算法(CLOCK)
改进型的时钟置换算法:
3.4 页面分配策略
3.5 抖动现象
概念: 刚刚换出的页面马上又换入内存,刚刚换入的页面马上又要换出外存,即频繁的页面调度行为
产生抖动的原因: 进程频繁访问的页面数目高于可用的物理块数(分配给进程的物理块不够)