Memory management 通常使用哪种虚拟内存转换技术(考虑x86)?

Memory management 通常使用哪种虚拟内存转换技术(考虑x86)?,memory-management,operating-system,x86,paging,memory-segmentation,Memory Management,Operating System,X86,Paging,Memory Segmentation,众所周知,在MMU的帮助下,有不同种类的虚拟地址转换(x86),如分段、分页、组合分段分页(分页分段、分段分页)等。每种都有各自的优缺点 我的问题是: 1) 像Linux/Windows这样的通用操作系统是否只使用一种特定的技术(如分页)? 2) 如果一个给定的操作系统有两种或两种以上的技术可用,那么每种技术将在何时何地使用? 我们可以根据需要定制吗? 3) 如果只使用“分页”,那么x86的段寄存器的使用方式是什么?一般来说,x86上的现代操作系统使用分页而不是分段。这意味着段寄存器的基址设置为

众所周知,在MMU的帮助下,有不同种类的虚拟地址转换(x86),如分段、分页、组合分段分页(分页分段、分段分页)等。每种都有各自的优缺点

我的问题是: 1) 像Linux/Windows这样的通用操作系统是否只使用一种特定的技术(如分页)? 2) 如果一个给定的操作系统有两种或两种以上的技术可用,那么每种技术将在何时何地使用? 我们可以根据需要定制吗?
3) 如果只使用“分页”,那么x86的段寄存器的使用方式是什么?

一般来说,x86上的现代操作系统使用分页而不是分段。这意味着段寄存器的基址设置为零,段限制设置为最大值。分页用于将虚拟地址映射到物理地址,这使操作系统能够细粒度地控制进程的地址空间、进程之间的保护以及特权(内核)和用户地址空间之间的保护。段在x86中仍用于特殊目的:

  • 在虚拟环境中运行旧式操作系统和应用程序
  • 为了有效地访问多线程应用程序中的每个线程(感谢@PaulA.Clayton指出这一点)
Microsoft Windows在Windows 95上从分段切换到了一个平面、线性的内存模型

Windows 95通过使用80386(及以上)处理器体系结构的32位功能来解决此问题,以支持用于32位操作系统功能和基于Win32的应用程序的平面、线性内存模型。线性寻址模型简化了应用程序供应商的开发过程,并消除了分段内存体系结构带来的性能损失

为了运行旧的Win16应用程序(Windows 3.1),Windows 95运行一个16位虚拟机,所有Win16应用程序都在该虚拟机上运行。较新的32位应用程序使用MMU的分页功能在单独的地址空间中运行

下面是上面链接的相关描述


您的编程问题是什么?您是否试图决定要为正在编写的操作系统使用哪种模型?而不是决定模型。我的问题是在给定的操作系统中如何使用每个模型?这不是一个编程问题。尝试cs.stackexchange.com.FS和GS可用于提供基本指针(例如,用于线程本地存储或[OS级别]处理器特定存储)。在x86-64中允许这些段具有非零碱基,而其他段必须具有零碱基。@PaulA.Clayton-非常好的一点。。。我将冒昧地用您的信息更新我的答案,谢谢。