0

AFAIK有一个存储内核相关数据的进程内存分区,它被标记为只读。

我找不到关于为什么会发生这种情况的事实解释,该区域的目的是什么以及为什么要将它包含在每个进程内存空间中?

在此处输入图像描述

4

1 回答 1

2

就像用户模式内存空间一样,内核需要自己的代码段 (RX)、数据段 (R/RW) 和线程堆栈帧 (RW)。

我不会说它需要包含在进程内存空间中,而是说它是内核始终驻留的地方。与在进程之间发生上下文切换时被替换的进程内存空间不同,内核空间(在 32 位中 >=0xC0000000 和在 64 位中 >=0xFFFFFFFF80000000)从整体上不会被替换。

这是必要的要求,因为系统上只有一个内核,并且它必须始终保持在内存(虚拟)中的同一位置,以处理系统调用、中断和运行各种内核任务。

于 2013-03-29T11:06:02.713 回答