![一个进程可以有 4GB 逻辑地址空间吗?](https://linux22.com/image/1566850/%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%E5%8F%AF%E4%BB%A5%E6%9C%89%204GB%20%E9%80%BB%E8%BE%91%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%E5%90%97%EF%BC%9F.png)
答案1
在 32 位时代结束时,4GB RAM 上限开始真正显现出来。例如,2000 年代初期,许多计算机都配备了 512MB 或 1GB 的系统 RAM,这已经接近 32 位空间所规定的限制。不仅 32 位应用程序被限制在 4GB 内存,整个系统也是如此,再加上单核处理器,多任务处理将无法进行。现在的计算机以 64 位系统运行,理论上允许 18.4 EB 的 RAM。如今,许多(如果不是全部)常见程序(工作站应用程序除外)使用的 RAM 接近或少于 4GB(许多是 32 位应用程序,但编译后可在 64 位空间中工作)。因此,虽然 4GB RAM 对于程序来说似乎很多(对于您的 VAX 机器而言,这是设计施加的理论限制,而实际上每个程序可用的内存要少得多),在某些情况下仍然如此,但多任务处理和计算机图形学与设计的出现加速了对 64 位计算机的需求。(希望这能回答您的问题,我认为您的问题是 32 位地址大小非常大且不必要,而不是不可能的)一个进程最多可以分配 4GB RAM,但不一定总是如此
答案2
主内存和后备存储器之间的换入/换出会不会花费太多时间?
不会,因为进程的内存是以“页面”的形式推送到磁盘的,这些页面通常为 4KB。我们不会一次性推送进程的整个地址空间。您认为这样做很麻烦,而且很快就会导致大量数据写入磁盘,您说得对。
最多进程不会分配所有分配的 4GB 地址空间,它们只会根据需要请求少量内存。再次写出整个地址空间会造成浪费,因为其中大部分都是空的。
如果单个进程分配了 4GB 地址空间,那么其他进程可以拥有多少空间?
每个进程都有自己的地址空间,与其他进程分开。操作系统将进程划分到自己的地址空间,并在 CPU 的帮助下将虚拟地址转换为物理内存地址。实际上,每个进程都是一个新的“虚拟”地址空间,分配的内存由物理 RAM 支持。
物理内存从未真正被程序寻址,数据确实被写入内存,但进程写入的实际地址是转换成物理地址的虚拟地址。