目录
知识总览
什么是指令
“指令”和我们平时所说的“代码”有什么区别?
C语言代码→通过“翻译”→机器语言指令
一条高级语言的代码翻译过来可能或对应多条指令。
简单来说,“指令” 就是处理器(CPU)能识别、执行的最基本命令。
两种指令
有的指令“人畜无害”。比如:加、减、乘、除这些普通的运算指令。
有的指令需要很高的权限。比如:内存清零指令。如果用户程序可以使用这个指令,就意味着一个用户可以将其他用户的内存数据随意清零,这样做显然是危险的。
特权指令不允许用户程序使用。
两种处理器状态
CPU如何判断当前是否可以执行特权指令?
当CPU处于用户态时,此时CPU只能执行非特权指令;当CPU处于核心态时,此时特权指令、非特权指令都可执行。
而处理器的两种状态用程序装填字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态。如0为用户态,1为核心态。
【PSW:Program Status Word,即程序状态字(也叫程序状态寄存器),可用于OS在管态(系统态)和目态(用户态)之间的转换】
两种程序
操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态;而为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。
操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核程序功能的就是内核程序。
操作系统的内核分为大内核和微内核两种,大内核指的是一个操作系统包含了时钟管理、中断处理、原语(设备驱动、CPU切换等),以及进程管理、存储器管理、设备管理等功能;微内核指的是一个操作系统包含了时钟管理、中断处理、原语这些基本内容。
知识总结
- 特权指令只能在核心态下执行
- 内核程序只能在核心态下执行
- 核心态与用户态之间的切换