【操作系统】用户态和内核态
目录
机器指令是什么
机器指令,是CPU能识别和执行的最基本命令。
一条高级语言写的代码,经过编译,可能会生成多条机器指令。而程序运行的本质,就是CPU执行一条一条的机器指令。
特权指令和非特权指令
CPU将机器指令分为了“特权指令”和“非特权指令”。
应用程序只能执行非特权指令,操作系统内核可以执行特权指令。
用户态和核心态
1. 什么是用户态
用户态又称目态。当运行的是应用程序时,称CPU处于用户态,只能执行非特权指令。
2. 什么是内核态
内核态又称核心态、管态。当运行的是内核程序时,称CPU处于内核态,可以执行特权指令。
3. 用户态和内核态的相互转换
用户态到内核态的转变,由中断信号引发,硬件自动完成转变过程。只要触发中断信号,操作系统就会抢占CPU的使用权。
CPU中存在一个寄存器,叫程序状态寄存器(PSW),它有一个二进制位,1表示处于内核态,0表示处于用户态。
核心态到用户态的转变,由一条修改PSW标志位的特权指令完成,将标志位置为0即表示回到了用户态。
系统调用
1. 什么是系统调用
“系统调用”是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。使用系统调用,可以保证系统的稳定性和安全性。
2. 库函数
编程语言提供的库函数,有时会将系统调用封装起来,以隐藏一些调用细节,从而使编程更加方便。
3. 系统调用的功能
系统调用具备的主要功能为:
-
设备管理。
-
文件管理。
-
进程控制。
-
进程通信。
-
内存管理。
系统调用的存在,使得用户可以使用操作系统内核提供的功能,有效区分了用户态和内核态。