讨论MINIX3中使用的内存管理技术。
MINIX3不支持页式存储管理、提供了交换所需的相关代码。
进程管理器
负责处理与进程管理相关的系统调用(fork,exec和brk),分为两个功能(在一个进程中):
- 进程管理
- 存储管理(存储管理器)
存储管理器保存着一张按照内存地址排列的空洞列表,当由于执行系统调用fork或exec需要内存时,系统将用最先匹配算法对空洞列表进行搜索找出一个足够大的空洞,在运行期间,这块内存都不发生变化。
策略与机制分离
哪个进程应该被放在内存中哪个位置的决定(策略)是由存储管理器作出的
而具体的为进程设置内存映像(机制)的操作是由在内核中的系统任务完成的(具体执行的)
这个划分使得修改存储管理策略(算法等)比较容易实现,不需要修改操作系统底层
内存布局
组合的I和D空间
即进程所有的部分(代码、数据、和栈)共用一个内存块,它是作为一个整体来申请和释放。
在MINIX中有两种情况需要分配内存:
- 在一个进程执行fork时,为子进程分配所需要的空间;
- 在一个进程通过EXEC系统调用修改它的内存映象时,老的映象被作为空洞送到空闲表,需要为新的映象分配内存。