我试图了解操作系统的内存管理。 到目前为止我所理解的是,在32位系统中,每个进程在虚拟地址空间中分配了4gb [2gb用户+ 2gb内核]的空间。 令我困惑的是,这个4gb空间对于每个进程都是唯一的。如果我说3个进程p1,p2,p3正在运行,我需要12GB的硬盘空间吗?
另外如果说我在32位系统上有2gb ram,它将如何设法处理需要4gb的进程?[通过分页文件]?
答案 0 :(得分:0)
[2gb用户+ 2gb内核]
这是操作系统的约束。在未启用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过程”是对的。