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

时间:2013-01-08 11:48:30

标签: memory-management operating-system paging virtual-memory

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

2 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:3)

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

这个问题的诀窍是你对无限记忆做出假设。可以说“不,不需要使用分页,但是”。接下来是:

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

以亚马逊的S3为例,其实际用途无限。如果您可以依赖S3来满足您的所有内存需求,因为当您需要在时间x内获取的内容时,您可以从S3获取它,无需在“本地”内存中进行任何内容分页。只要你需要它,就可以从S3获得它。 (显然这会产生其他影响,比如成本和网络,但现在让我们忽略它)。

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

最后,如果我不得不设想一个无限的存储器并且具有相同的访问时间,无论存储器单元距离提取单元有多远,我将不得不设想处理单元所在的球体。中间,所以你不能争辩说一个记忆单位因为距离而比另一个慢。否则你可以说分页将在内存中完成,这样对于最常用的内存单元(或你选择使用的任何算法)的访问速度更快。