虚拟内存是否可以不存在Paging概念?

时间:2017-08-03 06:17:03

标签: operating-system paging virtual-memory

我们通常在操作系统中同时学习虚拟内存和分页,它们似乎依赖。但是,我想知道它们是否彼此独立存在?

2 个答案:

答案 0 :(得分:3)

TL; DR :是的,虚拟内存可以在没有分页的情况下存在。

非常简单的搜索会产生this

  

虚拟内存是一种内存管理技术,它将程序使用的内存地址(称为虚拟地址)映射到计算机内存中的物理地址。

这些地址不一定是固定大小的。

Paging:

  

是一种内存管理方案,计算机通过该方案存储和检索来自辅助存储器的数据,以便在主存储器中使用。在此方案中,操作系统从称为页面的相同大小的块中的辅助存储中检索数据。

答案 1 :(得分:2)

您的问题的答案取决于您如何定义"虚拟内存"。如果您将其定义为"应用程序看到的地址",那么是虚拟内存可以在没有分页的情况下存在。

在分页之前,系统使用分段来隔离用户进程。用简单的话来说,每个过程都有它自己的段。它所看到的所有地址"只是在细分市场内的抵消。硬件隐式地将段基添加到应用程序请求的地址以获取物理地址。就像页表一样,段基只能由内核修改,它可以有效地隔离进程的内存,同时允许在进程之间共享内存的某些部分。

细分也有限制,在每次访问之前都会检查这些限制,以确保用户不会使用非常大的偏移并溢出到其他进程中。

已从英特尔X86_64架构中删除了分段支持,其中段寄存器确实存在,但始终设置为0.只有两个段寄存器%fs%gs继续存在。但是它们的限制检查不是由硬件执行的。这些段现在由OS用于线程本地存储。