目录
内存的基础知识
什么是内存
逻辑地址(相对地址)和物理地址(绝对地址)
程序的执行过程(编译,链接,装入)
装入的三种方式
绝对装入
一般用于单道程序
静态重定位
早期多道批处理
动态重定位
现代操作系统
链接的三种方式
静态链接
装入时动态链接
运行时动态链接
总结
内存管理的概念
需要提供的功能
-内存空间的分配与回收
-对内存空间进行扩充(实现虚拟性)
-地址转换功能(三种装入方式)
-内存保护
内存保护
方法一
方法二
总结
内存空间的扩充
-覆盖技术
-交换技术
-虚拟存储技术
覆盖技术
让不可能同时执行的程序块共享一个覆盖区(已退出舞台)
交换技术
暂时换出外存等待的进程状态为挂起状态(就绪挂起,阻塞挂起)
问题
1.应该在外存(磁盘)什么位置保存被换出的进程
2.什么时候应该交换
3.应该换出哪些进程
总结
内存空间的分配
-连续分配管理方式(连续分配指为用户进程分配的必须是一个连续的内存空间)
-单一连续分配
-固定分区分配
-动态分区分配
-非连续分配管理方式
单一连续分配
固定分区分配
固定分区分配需要实现分区说明表,来实现各个分区的分配和回收
动态分区分配
问题:
-1.用什么样的数据结构
-2.多个空闲分区都可以满足要求,应选择哪一个空闲分区
-3.如何进行分区的分配与回收操作
采用的数据结构:空闲分区表或者空闲分区链(1)
选择需按照一定的动态分区算法(2)
分配与回收按照一定的动态分区算法(3)
分配的情况:
1.
2.
回收的情况
回收时若相邻有空闲分区,则进行合并
1.
2.
3.
内部碎片和外部碎片
通过对进程的挪位,使进程1能够满足(紧凑,采用动态重定位的方式)
总结
动态分区分配算法(重点)
-首次适应算法(First Fit)
-最佳适应算法(Best Fit)
-最坏适应算法(Worst Fit)
-邻近适应算法(Next Fit)
首次适应算法
最佳适应算法
缺点:每次都选取最小的分区进行分配,会留下越来越多的,很小的,难以利用的内存块。因此这种算法所产生的外部碎片会很多
最坏适应算法
缺点:每次都选取最大的分区进行分配,虽然可以让分配后留下的空闲区更大,更可用;但是这种算法会导致较大的连续空闲区被迅速用完。如果有“大进程”进入,就没有内存空间可供分配了
邻近适应算法
总结