代码之家  ›  专栏  ›  技术社区  ›  Vineel Kumar Reddy

windows进程的用户内核模式划分

  •  0
  • Vineel Kumar Reddy  · 技术社区  · 14 年前

    当我检查的时候资源管理器.exe在process explorer中,较低的2GB由用户模式DLL占用 系统进程的3-4GB地址范围上限由驱动程序(*.sys文件)加载

    3 回复  |  直到 14 年前
        1
  •  0
  •   siride    14 年前

    上千兆字节是操作系统内核所在的位置,以及所有驱动程序和附加模块,以及I/O缓冲区和其他纯内核数据内存。这是所有进程共享的,而且确实必须是内核才能工作的。页表位于一个名为hyperspace的区域中,该区域位于3gb边界,是2gb以上内存中唯一一个进程之间不共享的部分。默认情况下,内核使用3g,但是如果您将程序构建为具有3GB的用户模式内存,那么这个区域将属于进程。

    这都是我的想法,所以请随意纠正我。

        2
  •  0
  •   dyp    14 年前

    简单回答:
    (虚拟)内存布局取决于您的操作系统。当然,32位和64位版本的windows有区别,但不同版本之间也有区别。

    看到了吗 here (MSDN) here (MS blogger) .

    希望这有帮助。

        3
  •  0
  •   RED SOFT ADAIR    14 年前

    默认情况下,内核最多使用xp2 GB,其他2 GB可用于所有程序。当使用 /3GB command line witch 虚拟地址空间 .

    这意味着每个应用程序最多可以管理3 GB。32位windows可以将内存交换到一个页面文件,这很可能会超过4gb。因此,两个应用程序一起分配的总容量可能远远超过3GB。

    我刚刚在4gbxp32位机器上测试了这个。我启动了3个应用程序,每个应用程序使用 VirtualAlloc 然后用 memset . 任务管理器显示虚拟分配的内存总量为7gb。这当然不太实际。如果其中两个应用程序试图同时使用它们的所有内存,机器将减速到系统挂起的感觉