0

众所周知,在MMU的帮助下,有多种虚拟地址转换(x86),如分段、分页、组合分段-分页(Paged segmentation,Segmented Paging)等,各有优缺点。

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

4

1 回答 1

1

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

  • 在虚拟环境中运行遗留操作系统和应用程序
  • 有效地访问多线程应用程序中每个线程的线程本地存储(感谢@PaulA.Clayton 指出这一点)。

flat, linearMicrosoft Windows使用 Windows 95从分段切换到内存模型。

http://technet.microsoft.com/en-us/library/cc751120.aspx

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

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

这是上面链接中的相关描述

在此处输入图像描述

于 2014-02-19T09:23:46.577 回答