什么是操作系统的指令?
指令
就是处理器(CPU)能识别、执行的最基本命令。
比如我们平时写的 Java 代码、C 语言代码,CPU 它能直接识别并且运行吗? 当然是不行的。
Java、C 语言这些都属于高级语言,它们还需要经过一系列的编译最后才能成为 CPU 能够识别的指令。
操作系统指令如何保障系统安全?
既然指令能够被 CPU 识别,执行,那如何保障系统的安全呢?
在操作系统中,把指令
进行了区分,特权指令、非特权指
令这两个部分,特权指令是不允许被用户程序所使用。
CPU 如何判断当前是否可以执行特权指令呢?
既然指令区分了特权指令和非特权指令,那么在 CPU 执行的时候,它就要判断这个指令该不该执行,所以操作系统又定义了 CPU 的两种状态:用户态 和 核心态
,在 CPU 是用户态的时候,就只能执行非特权指令,如果是核心状态,那么既可以执行特权指令,又可以执行非特权指令。
在 CPU 是如何来判断当前是用户态、还是核心态呢? 主要是利用了标志位来表示处理器处于什么状态,比如 0 是用户态、1 是核心态。
操作系统程序分类
经过上面内容的讲解,既然指令被区分成特权指令、非特权指令,那么有些程序是需要使用特权指令,有些程序是不需要使用特权指令,所以在程序上又区分成:内核程序、应用程序。
内核程序:操作系统的内核程序是系统的管理者,它既可以执行特权指令、也可以执行非特权指令,由于它需要执行特权指令,所以它必须要运行在核心态
。
应用程序:为了保证系统的安全,普通的应用程序它只能执行非特权指令,所以它只需要运行在用户态即可。
操作系统中哪些功能应该由内核程序来实现呢?
这里应用程序就不多说了,应用程序就是我们普通的程序员所研发的日常使用软件,被用户来使用。 那么我们一起来看看内核程序有哪些功能。
通过上图我们可以得知,在内核程序中包括了这么些功能:
-
时钟管理:实现计时的功能。
-
中断处理:负责实现中断机制。
-
原语:原语是一种特殊的程序,处于操作系统最底层,是最接近硬件的部分,并且这种程序员具有原子性。
除了上面这三种以外,还有一些对资源管理的功能,比如:进程管理、存储器管理、设备管理等等。
操作系统的体系结构
对于操作系统中的内核程序,上文也有提到进程管理、存储器管理、设备管理也是属于内核程序,但是有些操作系统不会把这三个归为内核程序,也就是说,不同的操作系统,对内核功能的划分可能并不一样。
所以操作系统的体系结构又可以划分为:大内核和微内核
。
大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态,优点是性能比较高,但是缺点就是内核代码庞大、结构混乱、难以维护。
微内核:只把最基础的功能保留在内核,优点就是内核功能少,方便维护,缺点就是性能比较低,因为功能少所以需要频繁的在核心态与用户态之间进行切换。
本章总结
这里说几个重点:
1、特权指令只能在核心态下执行
2、内核程序只能在核心态下执行
3、用户态、核心态之间的切换,也比较重要,这个后续再讲解。