Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
AFAIK有一个存储内核相关数据的进程内存分区,它被标记为只读。
我找不到关于为什么会发生这种情况的事实解释,该区域的目的是什么以及为什么要将它包含在每个进程内存空间中?
就像用户模式内存空间一样,内核需要自己的代码段 (RX)、数据段 (R/RW) 和线程堆栈帧 (RW)。
我不会说它需要包含在进程内存空间中,而是说它是内核始终驻留的地方。与在进程之间发生上下文切换时被替换的进程内存空间不同,内核空间(在 32 位中 >=0xC0000000 和在 64 位中 >=0xFFFFFFFF80000000)从整体上不会被替换。
这是必要的要求,因为系统上只有一个内核,并且它必须始终保持在内存(虚拟)中的同一位置,以处理系统调用、中断和运行各种内核任务。