一个进程可以有 4GB 逻辑地址空间吗?

一个进程可以有 4GB 逻辑地址空间吗?

那么单个进程将有 2^32 字节的地址空间,这不是太大了吗?

如果单个进程的地址空间这么大,在主内存和后备存储之间进行交换会不会花费太多时间?如果单个进程分配了 4GB 地址空间,其他进程可以有多少空间?

我正在阅读操作系统概念,第 9 版,Silberschatz,第 379 页。

4G?

答案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 支持。

物理内存从未真正被程序寻址,数据确实被写入内存,但进程写入的实际地址是转换成物理地址的虚拟地址。

相关内容