目录

【操作系统】用户态和内核态

机器指令是什么

机器指令,是CPU能识别和执行的最基本命令。

一条高级语言写的代码,经过编译,可能会生成多条机器指令。而程序运行的本质,就是CPU执行一条一条的机器指令。

特权指令和非特权指令

CPU将机器指令分为了“特权指令”和“非特权指令”。

应用程序只能执行非特权指令,操作系统内核可以执行特权指令。

用户态和核心态

1. 什么是用户态

用户态又称目态。当运行的是应用程序时,称CPU处于用户态,只能执行非特权指令。

2. 什么是内核态

内核态又称核心态、管态。当运行的是内核程序时,称CPU处于内核态,可以执行特权指令。

3. 用户态和内核态的相互转换

用户态到内核态的转变,由中断信号引发,硬件自动完成转变过程。只要触发中断信号,操作系统就会抢占CPU的使用权。

CPU中存在一个寄存器,叫程序状态寄存器(PSW),它有一个二进制位,1表示处于内核态,0表示处于用户态。

核心态到用户态的转变,由一条修改PSW标志位的特权指令完成,将标志位置为0即表示回到了用户态。

系统调用

1. 什么是系统调用

“系统调用”是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。使用系统调用,可以保证系统的稳定性和安全性。

2. 库函数

编程语言提供的库函数,有时会将系统调用封装起来,以隐藏一些调用细节,从而使编程更加方便。

3. 系统调用的功能

系统调用具备的主要功能为:

  • 设备管理。

  • 文件管理。

  • 进程控制。

  • 进程通信。

  • 内存管理。

系统调用的存在,使得用户可以使用操作系统内核提供的功能,有效区分了用户态和内核态。