每个进程都有自己独特的系统模式专用存储空间吗?

时间:2019-02-01 12:17:38

标签: memory memory-management process kernel

我们知道,操作系统中的每个进程都在其自己的专用内存空间中运行,并且虚拟地址通过页表映射到物理内存。

Sample Private memory Space of a process

此私有内存空间分为两部分:(系统/内核空间)和(用户空间)。

  • 用户空间内存包含所有与进程(及其线程)相关的内存分配(例如PEB,TEB,映射的可执行文件,已加载的DLL,堆栈,堆等)
  • 内核空间内存包含_EPROCESS对象和一些其他内核对象(例如SID,VAD等),这些对象是进程运行所必需的。

据我所知,我将认为整个私有存储器空间(包含用户和进程的内核空间)是对于每个过程是唯一的;我的进一步研究证实,这对于用户空间是正确的,但是,阅读Windows-Internal本书后,我发现本书的以下两段对这一假设提出了挑战:

“虽然每个Windows进程具有其自己的专用存储器空间,内核模式的操作系统和设备驱动程序代码共享单个虚拟地址空间”

“ Windows与大多数UNIX系统相似,因为它是一个整体操作系统,因此大部分操作系统和设备驱动程序代码共享相同的内核模式受保护的内存空间。”

哪个假设是正确的?这是否意味着所有进程的专用内存空间的内核空间都相同?这意味着所有进程中都存在相同的内核空间私有内存吗?

谢谢

0 个答案:

没有答案