2016-09-18 109 views
0

我想了解操作系统的内存管理。 我到目前为止所理解的是,在32位系统中,每个进程在虚拟地址空间中被分配4GB [2GB用户+ 2GB内核]的空间。 让我感到困惑的是,这个4GB空间在每个进程中都是独一无二的。如果我说3个进程p1,p2,p3运行,我需要12 GB的硬盘空间?内存管理由操作系统

另外,如果说我有一个32位系统上的2GB内存,它将如何处理需要4GB的进程?[通过分页文件]?

回答

0

[2GB用户+ 2GB内核]

即由OS的约束。在未启用PAE的x86 32位系统上,虚拟地址空间为4 GiB(请注意,GB usually denotes 1000 MB,而GiB代表1024 MiB)。

让我感到困惑的是,这个4GB空间在每个进程中都是唯一的。

是的,每个进程都有自己的4个GiB虚拟地址空间。

如果我说3个进程p1,p2,p3运行我需要12 gb的 硬盘空间吗?

不需要。有三个进程,它们可以占用最多12 GiB的存储空间。无论是主存储还是次存储都留给内核(当然,首选是首选)。所以,如果所有这些进程真正占用4 GiB的全部范围,那么您需要主内存大小+一些辅助存储空间至少12 GiB以包含所有三个进程,这很可能不会发生。

此外,如果说我有一个32位系统上2GB内存,它将如何管理 处理这需要4GB?[通过分页文件]一个过程?

是的,在某种程度上。你的意思是正确的,但“分页文件”只是一个实现细节。它被Windows使用,但是Linux例如使用一个单独的交换分区。因此,为了保持技术上的正确性,“需要辅助存储器(例如HDD)来存储剩余的2 GiB过程”是正确的。

+0

非常感谢,清理了很多东西。关于第三个答案,如果一个过程不需要4 gb的空间,那么额外的空间是否可以被其他过程自由使用? –

+0

假设在一个假设的情况下,我们有一个12 GB的硬盘和4 GB的RAM,我们有12个进程正在运行,每个进程需要1 GB的空间[用户数据+内核,剩下的3 GB是免费的]。足够的内存供他们运行? –

+0

@TanmayBhattacharya是的。每个进程总是有4个GiB虚拟内存。但是这4个GiB是否真的映射到像HDD或RAM这样的物理内存是由内核决定的。所以,没错,没有页面映射到的物理内存可供其他进程使用。 – Downvoter