Memory management 通常使用哪种虚拟内存转换技术(考虑x86)?
众所周知,在MMU的帮助下,有不同种类的虚拟地址转换(x86),如分段、分页、组合分段分页(分页分段、分段分页)等。每种都有各自的优缺点 我的问题是: 1) 像Linux/Windows这样的通用操作系统是否只使用一种特定的技术(如分页)? 2) 如果一个给定的操作系统有两种或两种以上的技术可用,那么每种技术将在何时何地使用? 我们可以根据需要定制吗?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上的现代操作系统使用分页而不是分段。这意味着段寄存器的基址设置为
3) 如果只使用“分页”,那么x86的段寄存器的使用方式是什么?一般来说,x86上的现代操作系统使用分页而不是分段。这意味着段寄存器的基址设置为零,段限制设置为最大值。分页用于将虚拟地址映射到物理地址,这使操作系统能够细粒度地控制进程的地址空间、进程之间的保护以及特权(内核)和用户地址空间之间的保护。段在x86中仍用于特殊目的:
- 在虚拟环境中运行旧式操作系统和应用程序
- 为了有效地访问多线程应用程序中的每个线程(感谢@PaulA.Clayton指出这一点)
您的编程问题是什么?您是否试图决定要为正在编写的操作系统使用哪种模型?而不是决定模型。我的问题是在给定的操作系统中如何使用每个模型?这不是一个编程问题。尝试cs.stackexchange.com.FS和GS可用于提供基本指针(例如,用于线程本地存储或[OS级别]处理器特定存储)。在x86-64中允许这些段具有非零碱基,而其他段必须具有零碱基。@PaulA.Clayton-非常好的一点。。。我将冒昧地用您的信息更新我的答案,谢谢。