Linux中的虚拟内存可以分为两部分:用户地址空间和内核地址空间。
根据特权级别,任务可以在内核模式或用户模式下工作。
但是考虑 i386 架构,内核模式与内核地址空间,用户模式与用户地址空间之间的关系是什么?
答案 0 :(得分:1)
根据评论和个人研究,通常在内核模式与内核地址空间,用户模式与用户地址空间之间没有强制关系。对于现代OS(Linux),这种关系是100%由OS软件控制的,该软件可以映射用户地址空间以供内核模式可以访问,通常使用highmem。
基本上,虚拟内存空间的划分是一种惯例,可减少碎片并在编程时易于识别。对于86x86拱门,基于以下事实确实存在“关系”。
CPL
寄存器中的cs
被设置为0
,这意味着最高特权。从技术上讲,它可以访问所有虚拟内存空间。一种映射,通常是高级映射,用于使内核安全地访问用户地址空间。CPL
寄存器中的cs
被设置为3
,这意味着最低的特权。它只能访问DPL
字段为3
的段。但是,内核地址空间中的段全部用0
DPL填充,这意味着用户模式任务没有访问权限。
这两点不考虑RPL
,仅应存在一个条件,即DPL >= max(RPL,CPL)
可以访问该段。