Sre*_*Das 5 paging operating-system memory-management virtual-memory
分页通过将页面移入和移出磁盘来创建每个进程具有无限RAM的错觉.因此,如果我们有无限的记忆(在某些假设的情况下),我们还需要寻呼吗?如果是,那为什么呢?我在接受采访时遇到了这个问题.
假设"无限内存"意味着无限可随机访问的内存或RAM,我们仍然需要分页.虽然分页通常与将页面进出RAM以交换到硬盘以节省内存的能力相关联,但这仅仅是分页的一个方面.以下是进行分页的其他一些原因:
无可否认,如果一个人拥有无限的RAM,后者就不是完全必要的; 即使我们没有资源限制,也总是很好的做法.它还演示了有时不考虑的分页用法.
这是一个哲学问题,所以这是一个哲学答案:)
这个问题的技巧是你对无限内存做出假设。可以说“不,不需要使用分页,但是”。并遵循:
必须在可接受的内存访问时间限制内访问无限内存。如果不是(因为无穷大占用大量空间,并且内存距离处理单元更远),那么它和磁盘之间没有区别,两者都不能满足随时可用的内存要求,这就是通过页面进行缓存的尝试来解决。
以亚马逊的 S3 为例,它对于所有实际用途都是无限的。如果您可以依靠 S3 来满足您的所有内存需求,即当您需要在时间 x 内获取某些内容时,您可以从 S3 获取它,则无需对任何内容进行分页,甚至无需将其保存在“本地”内存中。只要您需要,无论需要多少次,都可以从 S3 获取它。(显然这会产生其他影响,例如成本和网络,但我们现在忽略它)。
当然,您总是可以说,最佳情况是您希望内存访问尽可能快,并且“足够快”可能比“最快”慢,因此本地内存访问将为您提供更好的性能等。
最后,如果我必须设想一个无限的内存,并且无论内存单元距离获取单元有多“远”,都具有相同的访问时间,我就必须设想一个处理单元位于中间的球体,这样你就不能因为距离而争论一个内存单元比另一个慢。否则,您可以说分页将在内存内部完成,以便更快地访问最常用的内存单元(或您选择使用的任何算法)。