操作系统设计与实现 读笔(4)
第四章,存储器管理,小结:
交换:系统可以处理比内存所能容纳的更多的进程,得不到空间的进程将被换出到磁盘上。内存和磁盘上的空闲空间可以用位图或空洞表跟踪。
虚拟存储器:每个进程的地址空间都被划分为同样大小的称为页的块,可以被放到内存中任何可用的页框中去。有许多页面替换算法,最著名的两个是第二次机会和老化算法。为了使分页系统很好的工作,仅仅选择一个好的算法是不够的,还需注意确定工作集、内存分配策略、页面大小等等。
分段:有助于处理在运行中要改变大小的数据结构、简化链接和共享,为不同的段提供不同的保护。有时分段和分页结合起来构成的两维的虚拟存储器,如MULTICS系统和Intel的Pentium。
MINIX的内存管理是很简单的。内存在进程执行FORK或EXEC系统调用时被分配。只要进程还存在,这样分配的内存就永远不会增长或减小。在Intel处理器上MINIX使用的内存模型有两种,小程序可以把指令和数据放在同一个内存段中,大程序使用独立的指令和数据空间(独立的I和D)。具有独立I和D空间的进程可以共享他们内存中的正文部分,所以在执行FORK时只有数据和堆栈的内存是必须分配的。这一点在执行EXEC时也可能成立,七条监事有另外一个进程已经在使用EXEC所需要的正文了。
内存管理器的大部分工作与使用一个空洞表和首次适配算法的跟踪空闲内存的工作没有关系,而是执行与内存管理有关的系统调用。一些系统调用支持POSIX风格的信号,因为大部分信号的缺省动作是结束接收信号的进程,所以在内存管理其中处理他们是比较合适的。所有进程的终止都由它发起。几个与内存没有直接关系的系统调用也由内存管理器处理,因为内存管理器比文件系统小,所以把它们放在这里是最方便的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------