在阅读OS书籍时,我们经常遇到用户模式,内核模式,用户空间,内核空间,进程上下文和中断/系统上下文等术语。它们如何精确定义?我想它们不能互换使用?
答案 0 :(得分:1)
用户模式:进程执行操作的自由度有限。进程无法执行可能影响整个系统或其他进程的操作。 这种动作/操作被称为特权操作,例如分配内存进行处理。
内核模式:进程无法执行的权限操作,内核代表该进程执行此操作。当请求内核执行权限操作时,该进程被称为处于内核模式。
用户空间:可以与用户模式一起使用。它代表结构/资产仅属于过程。
内核空间:interchang用于内核模式。
context:处理执行的模式称为上下文,即内核上下文或进程上下文。
中断:一个事件告诉内核发生了一些重要的事情需要你的(内核)注意
系统上下文:表示内核上下文。
答案 1 :(得分:0)
这些不能精确定义,因为这些术语的使用方式可能不同,具体取决于所涉及的系统。
您的一个概念是逻辑地址空间的划分。大多数使用虚拟/逻辑存储器的系统以某种方式划分地址空间。在某些情况下,划分是硬件。在其他情况下,它是用软件完成的。
通常将完整的逻辑地址空间划分为两个区域。其中一个区域是内核[地址]空间。这是内存中由系统中的所有进程共享的区域。如果进程更改了内核空间中的内存值,则每个进程都会看到该更改。另一个常见区域是用户[地址]空间。对于系统上的每个进程,都会复制此范围的地址。如果进程更改了用户空间中的内存值,则没有其他进程看到该更改(注意:这是一般规则。大多数系统都有内存共享机制)。
分配给系统和用户空间的地址范围因系统而异。此外,某些系统还有其他用于其他用途的地址空间。
由于进程可以更改系统空间中的值并让其他所有进程都看到该更改,因此存在安全问题。使用的解决方案是具有不同的处理器模式和对模式限制的内存的访问。最常见的处理器模式是用户(进程的正常操作模式)和内核(用于系统处理)。
当进程处于用户模式时,它不会弄乱内核模式数据(通常甚至无法读取它)。当它是内核模式时,它通常可以读写所有内容。
某些处理器具有其他模式。 VAX有四种模式。
处理器可以通过三种方式从用户从用户模式转移到内核模式。
1)错误。故障是可重新启动的异常。页面错误就是一个例子。用户访问不在内存中的页面。这会触发页面错误。系统映射所需的页面。然后它重新启动导致故障的指令。调试器使用故障来触发断点。
2)陷阱。陷阱就像一个故障,但它不能重启。例如,除以零可以实现为陷阱(系统也可以将其实现为故障)。有一些特殊的陷阱指令,用于显式进入内核模式以使用系统服务(例如,进程执行I / O)。
3)中断。中断是导致处理器进入内核模式的外部事件。示例包括计时器关闭和需要注意的设备(例如,有人按下键盘上的键)。
通常,处理器以相同的方式处理所有这三种情况(除非您在Intel-land中)。此外,英特尔文档还会调用所有这三个"中断"。
流程上下文是流程的机器状态。通常,处理器具有加载进程上下文和保存进程上下文指令,可以一步完成。要切换进程,系统会执行保存,然后加载新进程。
我试图在这里给出一般意义以及一些变体,以说明为什么没有关于术语的精确定义。
答案 2 :(得分:0)
对使用它们的模块下的术语进行分类将有助于更好地理解它们。
操作系统中的线程具有关联的线程访问模式。想法是关于线程有什么特权?有两种类型的线程访问模式 -
操作系统具有存储在虚拟地址中的物理地址的映射。因此,使用虚拟地址,操作系统可以访问内存上的实际位置。我们需要专用空间来进行内核模式线程执行。不言而喻,只允许内核模式线程使用这段内存,而这部分内存恰当地命名为内核空间。无论内存中的内核空间是什么,都归类为用户空间。
这种用法是内存非常重要,当你希望来自不同进程的线程进行交互时,你必须使用它们都可以访问的单独公共内存块,而不是让一个线程窥视另一个线程的地址空间。 / p>
为了运行进程的指令甚至是进程中的线程,CPU必须知道一些关于它的事情。这些事物统称为上下文。
当您计划在CPU上执行进程/线程时,CPU必须在上次执行此进程/线程时知道寄存器中的值。在CPU中加载进程/线程信息的整个步骤称为 Context Switch。
中断及其不同类型从Wikipedia page本身很容易理解:
中断是硬件或发出的处理器发出的信号 指示需要立即关注的事件的软件。一个 中断警告处理器达到要求的高优先级条件 处理器正在执行的当前代码的中断。该 处理器通过暂停其当前活动来响应,从而保存它 状态,并执行一个称为中断处理程序的函数(或 中断服务程序,ISR)来处理事件。这个 中断是暂时的,并且在中断处理程序完成后, 处理器恢复正常活动。