计算机基础理论知识梳理篇(二):目态(用户态)、管态(内核态)

目态与管态操作系统

多数计算机系统将CPU执行状态分为目态(用户态)与管态(内核态),CPU的状态属于程序状态字PSW的一位,CPU交替执行操做系统程序和用户程序。设计

1. CPU设计中的目态、管态指针

目态指非特权状态,代码的执行被硬件限定,如不能读写其余进程的私有存储空间(程序的用户空间)以及操做系统的内核空间。blog

管态又叫特权态、系统态或内核态。CPU在管态下能够执行指令系统的全集,操做系统在管态下运行。进程

x86结构拥有四种级别,级别最高的是ring 0,也就是核心态。级别最低的是ring 3,也就是用户态。ring 1和ring 2设计成供驱动程式使用,但通常不多使用。内存

2. 操做系统设计中的目态、管态it

内核禁止在目态下的应用程序写入系统配置文件、杀掉其余用户的进程、重启系统等。 操做系统中的用户态与用户权限等级不是一个概念,普通用户、管理员(root)或者超级用户(superuser)开启的程序均可能运行在用户态和内核态。操做系统中的用户态代码运行在CPU的用户态,实现了从硬件上对非法程序的隔离禁止控制。与CPU设计中的用户态相比,操做系统对用户态有更加复杂的权限设定,好比在Unix系统中,运行在用户态的代码,不能侦听1024如下的端口号,以假装成常见的服务,而超级用户运行的代码则有权这样作。程序在目态下执行特权指令,硬件将发生中断,由操做系统得到控制,特权指令被禁止执行,这样能够防止用户程序有意或无心的破坏系统。 内存管理

3. 任何一个应用程序都有可能运行在目态或管态
  • 当一个应用程序执行系统调用而陷入内核代码执行时,则处于内核态,此时CPU执行处于特权0级的内核代码,内核代码使用当前进程的内核栈(每一个进程都有本身的内核栈)。
  • 当一个应用程序执行本身的代码时,则处于用户态,此时CPU执行处于特权3级用户代码。
  • 从目态转换为管态的惟一途径是中断, 从管态到目态能够经过修改程序状态字来实现。
  • 当程序陷入内核态后,先把目态堆栈的地址保存在内核栈之中,而后设置堆栈指针寄存器的内容为内核栈的地址,这样就完成了目态栈向内核栈切换;当程序从内核态恢复到用户态时,先将保存在内核栈里的用户栈地址恢复到堆栈指针寄存器便可完成内核栈向用户栈切换。另外,程序使用的内核栈在切换进入内核运行以前是空的,在切换出内核运行以后也是空的,看上去像一个临时栈。
 

用户空间与内核空间class

 

操做系统采用虚拟内存管理方式,将内部存储器映射为高地址段内核空间和低地址段用户空间两个部分。程序,在内核空间中运行称为内核态,在用户空间中运行称为用户态。配置

相关文章
相关标签/搜索