如果我们有无限的内存,那么我们还需要分页吗?

Sre*_*Das 5 paging operating-system memory-management virtual-memory

分页通过将页面移入和移出磁盘来创建每个进程具有无限RAM的错觉.因此,如果我们有无限的记忆(在某些假设的情况下),我们还需要寻呼吗?如果是,那为什么呢?我在接受采访时遇到了这个问题.

Dou*_*gvj 9

假设"无限内存"意味着无限可随机访问的内存或RAM,我们仍然需要分页.虽然分页通常与将页面进出RAM以交换到硬盘以节省内存的能力相关联,但这仅仅是分页的一个方面.以下是进行分页的其他一些原因:

  • 安全.分页是一种通过确保进程无法访问另一个进程的内存并且无法修改驻留内核来强制执行操作系统安全性和内存保护的方法.
  • 多任务处理.通过虚拟化内存空间来辅助多任务处理,即进程A中的地址0xFOO可能与进程B中的0xFOO完全不同
  • 内存分配.通过减少碎片并确保仅在访问时分配RAM来辅助内存分配.这意味着虽然一个进程需要100MB的连续RAM空间,但这不需要在物理上连续进行.此外,当程序请求100MB的空间时,操作系统会告诉程序使用100MB的空间是安全的,但是在程序充分利用该空间之前,它不会被实际分配.

无可否认,如果一个人拥有无限的RAM,后者就不是完全必要的; 即使我们没有资源限制,也总是很好的做法.它还演示了有时不考虑的分页用法.


The*_*uck 4

这是一个哲学问题,所以这是一个哲学答案:)

这个问题的技巧是你对无限内存做出假设。可以说“不,不需要使用分页,但是”。并遵循:

必须在可接受的内存访问时间限制内访问无限内存。如果不是(因为无穷大占用大量空间,并且内存距离处理单元更远),那么它和磁盘之间没有区别,两者都不能满足随时可用的内存要求,这就是通过页面进行缓存的尝试来解决。

以亚马逊的 S3 为例,它对于所有实际用途都是无限的。如果您可以依靠 S3 来满足您的所有内存需求,即当您需要在时间 x 内获取某些内容时,您可以从 S3 获取它,则无需对任何内容进行分页,甚至无需将其保存在“本地”内存中。只要您需要,无论需要多少次,都可以从 S3 获取它。(显然这会产生其他影响,例如成本和网络,但我们现在忽略它)。

当然,您总是可以说,最佳情况是您希望内存访问尽可能快,并且“足够快”可能比“最快”慢,因此本地内存访问将为您提供更好的性能等。

最后,如果我必须设想一个无限的内存,并且无论内存单元距离获取单元有多“远”,都具有相同的访问时间,我就必须设想一个处理单元位于中间的球体,这样你就不能因为距离而争论一个内存单元比另一个慢。否则,您可以说分页将在内存内部完成,以便更快地访问最常用的内存单元(或您选择使用的任何算法)。