操作系统的运行机制
程序是如何运行的
指令:就是处理器(CPU)能识别、执行的最基本命令
注:
很多人习惯把 Linux、Windows、MacOS 的“小黑框”中使用的命令也称为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。本节中的“指令”指二进制机器指令
内核程序vs应用程序
我们普通程序员写的程序就是”
应用程序
”
而对于那些操作系统的开发者,他们写的是”
内核程序
“,由很多
内核程序
又能组成
操作系统内核
简称
内核
。
内核
是操作系统的核心部分,也是
最接近硬件的部分
。
特权指令vs非特权指令
程序运行的过程就是CPU执行一条一条机械指令的过程,在
CPU设计和生成的时候就划分了特权指令和非特权指令
,因此CPU执行一条指令前就能判断出其类型。
应用程序
只能使用
非特权指令
如:加法指令、减法指令
内核程序
有时会让CPU执行一些
特权指令
,如:内存清零指令。这些指令影响重大只能运行
操作系统内核
来使用
内核态 vs 用户态
CPU 能判断出指令类型,但是他怎么区分正在运行的是内核程序,还是应用程序呢?
由此引出
内核态和用户态
。
CPU有两种状态,
内核态
和
用户态
处于
内核态时
,说明此时正在运行的是
内核程序
,此时
特权指令和非特权指令
都可执行
处于
用户态时
,说明此时正在运行的是
应用程序
,此时
只能执行非特权指令
内核态、用户态 的切换
一个故事:
① 刚开机时,CPU 为“
内核态
”,操作系统内核程序先上CPU运行
② 开机完成后,用户可以启动某个应用程序
③ 操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上CPU运行(操作系统内核让出CPU之前,会
用一条特权指令将PSW的标志设置为“用户态”
)
④ 应用程序运行在“用户态”
⑤ 此时,一位猥琐黑客在应用程序中植入了一条特权指令,企图破坏系统…
⑥ CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”
⑦ 这个非法事件会引发一个
中断信号
(
CPU检测到中断信号后
,会立即
变为“核心态”
,并停止运行当前的应用程序,转而运行处理中断信号的内核程序)
⑧ “中断”使操作系统再次夺回CPU的控制权
⑨ 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
内核态->用户态:
执行一条
特权指令——修改PSW
的标志位用户态,这个动作意味着操作系统将主动让出CPU的使用权
用户态-》内核态:
由
中断
引起,
硬件自动完成变态过程
,触发中断信号意味着操作系统将强行夺回CPU的使用权
注:
除了非法使用特权指令以外,还有很多事件会触发中断指令。记住
只要需要操作系统接入,就会触发中断指令
。
介绍完
两种指令(特权指令和非特权指令),两种处理器状态(用户态和核心态)和两种程序(应用程序和核心程序)
,接下来我们介绍一下
操作系统的内核
操作系统的内核
内核
是计算机上配置的底层
软件
,是操作系统最基础、最核心的部分。
实现操作系统内核功能的那些程序就是
内核程序
。
操作系统的内核还有
大内核、微内核
之分