Operating system 没有分页概念,虚拟内存能否存在?

Operating system 没有分页概念,虚拟内存能否存在?,operating-system,paging,virtual-memory,Operating System,Paging,Virtual Memory,我们通常在操作系统中同时学习虚拟内存和分页,它们似乎是相互依赖的。然而,我想知道它们是否独立存在?你的问题的答案取决于你如何定义“虚拟内存”。如果您将其定义为“应用程序看到的地址”,那么是的,虚拟内存可以在没有分页的情况下存在 在分页之前,系统使用分段来隔离用户进程。简单地说,每个过程都有自己的部分。它“看到”的所有地址都只是段内的偏移量。硬件隐式地将段基添加到应用程序请求的地址,以获取物理地址。就像页表一样,段基只能由内核修改,它可以有效地隔离进程的内存,同时允许在进程之间共享内存的某些部分

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

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

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

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


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

如有任何疑问,请随时查询。谢谢。这个答案很有帮助。