一、内存管理概念
1.内存管理:操作系统对内存的划分和动态分配,就是内存管理的概念。
2. 内存管理的功能
(1)内存空间的分配与回收
(2)地址转换
(3)内存空间的扩充
(4)存储保护
3.程序链接的三种方式
(1)静态链接
(2)装入时动态链接
(3)运行时动态链接
4.内存的装入方式
(1)绝对装入
(2)可重定位装入
(3)动态运行时装入,也称动态重定位
重定位:重定位就是把程序的逻辑地址空间变换为内存中的实际物理地址空间的过程。
5.克服外部碎片可以通过紧凑技术来解决。
6.动态分区分配策略
(1)首次适应算法:空闲分区以地址递增的次序链接,分配第一个符合条件的分区。
优点:保留高地址部分的大空闲区,有利于后来的大型作业分配。
缺点:每次分配时都要从低地址部分开始查找,增加了查找时的系统开销。
(2)最佳适应算法:空闲分区按容量递增的方式形成分区链,分配第一个符合条件的分区。
优点:每次分配的空闲区都是最合适的。
缺点:在内存中留下许多难以利用的小的空闲区。
(3)最坏适应算法,又称最大适应算法:空闲分区以容量递减的次数链接,分配第一个符合条件的分区。
优点:产生碎片的几率最小,对中小型作业有利。
缺点:缺乏大的空闲区,对大型作业不利。
(4)邻近适应算法,又称循环首次适应算法:从上次查找结束的位置开始继续查找,分配第一个符合条件的分区。
优点:使内存中的空闲区分布更均匀,减少了查找时的系统开销。
缺点:缺乏大的空闲区,可能导致不能装入大型作业。
在以上几种方法中,首次适应算法不仅是最简单的,而且通常也是最好和最快的。
7.基本分页存储管理方式
(1)分页管理不会产生外部碎片,会产生内部碎片。
(2)进程中的块称为页,内存中的块称为页框(或页帧)。外存中的块直接称为块。
(3)系统为每个进程建立一张页表,页表一般存放在内存中。
(4)分页管理中的地址越界保护只需要判断页号是否越界,页内偏移是不可能越界的。
8.基本分段存储管理方式
(1)需要分配一段连续的地址空间(段内要求连续,段间不要求连续)。
(2)不能修改的代码称为纯代码或可重入代码(不属于临界资源)。
(3)若段号大于段表长度,则会产生越界中断。若段内偏移大于段长,也会产生越界中断。
(4)系统为每个进程建立一张段表,每个分段有一张页表。
(5)在一个进程中,段表只有一个,而页表可能有多个。
二、虚拟内存管理
1.虚拟存储器有以下三个主要特征:
(1)多次性
(2)对换性
(3)虚拟性
2.缺页中断
(1)在指令执行期间而非一条指令执行完后产生和处理中断信号,属于内部中断。
(2)一条指令在执行期间,可能产生多次缺页中断。
3.Belady异常(FIFO算法特有):所分配的物理块数增大而页故障数不减反增的异常现象。
4.驻留集:给一个进程分配的物理页框的集合就是这个进程的驻留集。
5.页面分配策略
(1)固定分配局部置换:物理块在整个运行期间都不改变。
(2)可变分配全局置换:可以动态增加进程的物理块。
(3)可变分配局部置换:可以动态增加或减少进程物理块的数量。
6.抖动
(1)概念:刚换出的页面马上又要换入主存,刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动或颠簸。若一个进程在换页上的时间多于执行时间,则这个进程就在抖动。
(2)主要原因:某个进程频繁访问的页面数目高于可用的物理页帧数目。
(3)解决方法:为了防止抖动现象,一般来说分配给进程的物理块数(即驻留集大小)要大于工作集大小。
7.工作集:工作集是指在某段时间间隔内,进程要访问的页面集合。