课后题 操作系统 虚拟内存管理 选择题
第 55 题

2.7 内存映射文件 Linux 系统采用3.1.2节介绍的“伙伴算法”对内存中不同长度的连续空闲页框进行统计和管 理。该算法将连续的空闲页框组织为“空闲块”,并按其大小(所含连续页框的数量)分组。分 配页框是一个“化整为零”的过程,会产生外部碎片;因此,系统必须具备将零碎页框重新合并 为较大连续块的能力。Linux 通过伙伴算法的逆操作实现页框回收:当一个页框被释放时,系统 首先检查其是否存在大小相等的伙伴空闲块;若存在,则将二者合并为一个大小翻倍的新空闲块; 随后继续向上检查该新块是否能与其更高一级的伙伴再次合并,直至无法再合并为止。 在 Linux内核中,设置了一个负责页面换出的守护进程kswapd, 它定期检查内存使用情况。 当空闲页框数量低于特定阈值时,便主动发起页框回收操作。之所以不能等到空闲页框完全耗尽 才启动回收,是因为释放某些页框(如脏页)通常需要先将其写回磁盘,而该I/O 操作本身往往 需要临时页框作为缓冲区。若此时系统已无空闲页框,则既无法分配I/O 缓冲区,也无法完成页 面释放,从而可能导致内核陷入内存分配死锁,甚至引发系统崩溃。 当系统可分配的内存不足时,就必须回收部分页框,但并非所有页框都可回收。属于内核的 大部分页框(如内核栈、内核代码段、内核数据段、大部分内核使用的页框)均不可回收;而由 进程使用的页框(如进程代码段、进程数据段、进程堆栈、进程访问文件时映射的文件页、进程 间共享内存所占用的页框)则大多可以回收。

[tag_link]

正确答案:【解答】