【发布时间】:2011-01-27 13:32:22
【问题描述】:
当 3 个程序(可执行文件)加载到内存中时,布局可能如下所示:
alt text http://img97.imageshack.us/img97/3460/processesm.jpg
我有以下问题:
虚拟内存的概念是否仅限于用户进程?因为,我想知道操作系统内核、驱动程序在哪里?它的内存布局如何?我想了解更多关于内核端内存的信息。我知道它的操作系统特定于你的选择(windows/linux)。
虚拟内存的概念是基于每个进程的吗?我的意思是说 4GB 的 process1 + 4GB 的 process2 + 4GB 的 process3 = 12GB 的虚拟内存(对于所有进程)是否正确。这听起来不对。或者从总共 4GB 的空间中,1GB 被内核占用,其余 3GB 被所有进程共享。
他们说,在 4GB 地址空间中的 32 位机器上。其中一半(或最近的 1GB)被内核占用。我可以在此图中看到“内核虚拟内存”占用 0xc0000000 - 0xffffffff (= 1 GB)。他们在谈论这个吗?或者是别的什么?只是想确认一下。
每个进程的
Kernel Virtual Memory包含什么确切?它的布局是怎样的?当我们做 IPC 时,我们谈论的是共享内存。我没有看到这些进程之间共享任何内存。它住在哪里?
资源(文件、Windows 中的注册表)对所有进程都是全局的。因此,资源/文件句柄表必须在某个全局空间中。那会在哪个区域?
我在哪里可以了解更多关于内核方面的信息。
【问题讨论】:
-
图片链接失效
标签: assembly operating-system linker loader