内核模式与内核空间,用户模式与用户空间之间的关系?

时间:2019-05-23 16:20:04

标签: linux linux-kernel kernel

Linux中的虚拟内存可以分为两部分:用户地址空间和内核地址空间。

根据特权级别,任务可以在内核模式或用户模式下工作。

但是考虑 i386 架构,内核模式与内核地址空间,用户模式与用户地址空间之间的关系是什么?

1 个答案:

答案 0 :(得分:1)

根据评论和个人研究,通常在内核模式与内核地址空间,用户模式与用户地址空间之间没有强制关系。对于现代OS(Linux),这种关系是100%由OS软件控制的,该软件可以映射用户地址空间以供内核模式可以访问,通常使用highmem。
基本上,虚拟内存空间的划分是一种惯例,可减少碎片并在编程时易于识别。对于86x86拱门,基于以下事实确实存在“关系”。

  1. 当任务陷入内核模式时,CPL寄存器中的cs被设置为0,这意味着最高特权。从技术上讲,它可以访问所有虚拟内存空间。一种映射,通常是高级映射,用于使内核安全地访问用户地址空间。
  2. 当任务处于用户模式时,CPL寄存器中的cs被设置为3,这意味着最低的特权。它只能访问DPL字段为3的段。但是,内核地址空间中的段全部用0 DPL填充,这意味着用户模式任务没有访问权限。 这两点不考虑RPL,仅应存在一个条件,即DPL >= max(RPL,CPL)可以访问该段。