运行机制
指令的概念
“指令”就是处理器(CPU)能够识别,执行的最基本命令
一般而言,指令可以由高级语言(C,Java,C )翻译而来,一条高级语言的代码翻译过来可能对应多条指令
一些诸如基本运算的指令(加减乘除)不会影响到系统的安全性,但也有一些指令具有很高权限,例如内存清零指令,如果所有用户都可以执行任意指令,势必会影响到系统的安全性,因此就需要对指令进行分类
指令的分类
- 特权指令:不允许用户程序使用,如内存清零指令
- 非特权指令:如普通的运算指令(加减乘除)
经过分类后我们还需要考虑,CPU如何判断当前状态是否可以执行特权指令
处理器的两种状态
- 用户态(目态):此时CPU只能执行非特权指令
- 核心态(管态):此时CPU特权指令和非特权指令都可以执行
处理器的状态由程序状态字寄存器(PSW)中的某个标志位来标识,如0为用户态,1为核心态
两种程序
- 内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,又可以执行非特权指令,运行在核心态
- 应用程序:为了保证系统安全运行,只能执行非特权指令,运行在用户态
操作系统的内核
上图中所提到的原语具有原子性,即其运行只能一次全部执行完毕,不可以中断,所以原语要么不执行,要么一次性执行完毕
操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本,最核心的部分。实现操作系统内核功能的那些程序就是内核程序
内核程序的划分对于不同操作系统是不完全一致的
操作系统的体系结构
最经典的操作系统体系结构是大内核与微内核
大内核
将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:性能高
- 缺点:内核代码庞大,结构复杂,难以维护
微内核
只保留操作系统最基本的功能在内核
- 优点:内核功能少,结构清晰,易于维护
- 缺点:需要频繁的在核心态和用户态之间切换,性能较低