我们通常在操作系统中同时学习虚拟内存和分页,它们似乎依赖。但是,我想知道它们是否彼此独立存在?
答案 0 :(得分:3)
TL; DR :是的,虚拟内存可以在没有分页的情况下存在。
非常简单的搜索会产生this。
虚拟内存是一种内存管理技术,它将程序使用的内存地址(称为虚拟地址)映射到计算机内存中的物理地址。
这些地址不一定是固定大小的。
是一种内存管理方案,计算机通过该方案存储和检索来自辅助存储器的数据,以便在主存储器中使用。在此方案中,操作系统从称为页面的相同大小的块中的辅助存储中检索数据。
答案 1 :(得分:2)
您的问题的答案取决于您如何定义"虚拟内存"。如果您将其定义为"应用程序看到的地址",那么是虚拟内存可以在没有分页的情况下存在。
在分页之前,系统使用分段来隔离用户进程。用简单的话来说,每个过程都有它自己的段。它所看到的所有地址"只是在细分市场内的抵消。硬件隐式地将段基添加到应用程序请求的地址以获取物理地址。就像页表一样,段基只能由内核修改,它可以有效地隔离进程的内存,同时允许在进程之间共享内存的某些部分。
细分也有限制,在每次访问之前都会检查这些限制,以确保用户不会使用非常大的偏移并溢出到其他进程中。
已从英特尔X86_64架构中删除了分段支持,其中段寄存器确实存在,但始终设置为0.只有两个段寄存器%fs
和%gs
继续存在。但是它们的限制检查不是由硬件执行的。这些段现在由OS用于线程本地存储。