Lniux中用户态和核心态的区别

用户态和核心态是操作系统两种运行状态


1、两者的区别及划分原因

  • 用户态:运行用户自己编写的程序,用户可使用的资源受到极大限制。
  • 核心态:运行操作系统的程序,可以调用一切资源为该操作服务。

现在操作系统的运行级别一般可分为R0-R3四种级别,其中cpu运行在R0级别时表示和心态,在R3时候级别最低,表示用户态。Linux中一般只使用R0和R3两种。

  • 特权指令:只能由操作系统使用的指令,如中断、清理内存、设置时钟。
  • 非特权指令:可以被用户使用的指令

划分特权和非特权的原因:操作系统中发一些指令属于极其危险的级别,如清理内存、设置时钟等。如果允许用户随意调用,将发生无法预估的灾难,导致系统奔溃。


2、何时进行两者的切换

  • 系统调用:当处于用户态的进程出于某种需求,需要操作系统提供一些服务时,申请进行系统调用,如父进程fork一个子进程。系统调用的内置机制是一种软中断。
  • 异常:在执行用户程序时发生无法控制的错误时候,系统会自动切换到核心态。如除0异常。
  • 外设中断:当外设发送请求时,如果cpu处于用户态,则会暂停执行下一条指令,转而去执行中断服务程序。此时发生的就是用户态到核心态的切换。

3、判断操作系统处于何种特权级别

CS寄存器中最低两位保存当前代码的执行级别。

猜你喜欢

转载自blog.csdn.net/coding_is_fun/article/details/81327364