Windows - 此内存寻址如何工作?

时间:2013-11-29 05:17:30

标签: windows memory ipc

假设x86,我开始知道地址0x0到0x7FFFFFFF是用于进程的;而更高的东西是为内核保留的。

我有三个好奇心:

1)进程EVER是否调用高于0x7FFFFFFF的地址?我认为它总会导致某种访问被拒绝?如何拒绝执行该访问?

2)“共享内存”IPC是否通过将两个进程虚拟地址映射到相同的物理地址范围来工作?

3)您机器中的RAM数量可能会有所不同。你可能有2GB,或更像16GB。这对RAM的寻址有何影响?内核是否会留下一堆未使用的RAM,因为它是为自己保留的,但不需要它?我怎么能看到这个?

1 个答案:

答案 0 :(得分:1)

我不太确定,但您会在MSDN doc中找到有关其工作原理的最大值: -

  

进程可用的虚拟地址范围   称为进程的虚拟地址空间。每个用户模式   进程有自己的私有虚拟地址空间。对于32位   进程中,虚拟地址空间通常为2千兆字节   0x00000000到0x7FFFFFFF。对于64位进程,虚拟   地址空间是8TB的范围0x000'00000000到   0x7FF'FFFFFFFF。一系列虚拟地址有时称为a   虚拟内存范围。

enter image description here

  

该图显示了两个64位进程的虚拟地址空间:   Notepad.exe和MyApp.exe。每个进程都有自己的虚拟地址   空间从0x000'0000000到0x7FF'FFFFFFFF。每个阴影   block表示虚拟或物理的一页(大小为4千字节)   记忆。请注意,记事本进程使用三个连续页面   虚拟地址,从0x7F7'93950000开始。但那三个   连续的虚拟地址页面映射到非连续的   物理内存中的页面。另请注意,两个进程都使用页面   虚拟内存从0x7F7'93950000开始,但那些虚拟页面   被映射到物理内存的不同页面。

相关问题