目录
- 一. 特权指令与非特权指令
- 二. 中断和异常
- 2.1. 内中断
- 2.2 外中断
- 三. 系统调用
注:很多人习惯把Linux、Windows、MacOS的“小黑框”中使用的命令也称为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。本节中的“指令”指二进制机器指令
我们普通程序员写的程序就是应用程序
微软、苹果有一帮人负责实现操作系统,他们写的是内核程序
由很多内核程序组成了“操作系统内核”.或简称“内核( varnl)” 内核是操作系统最重要最核心的部分,也是最接近硬件的部分
\quad
一. 特权指令与非特权指令
\quad
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判
断出其类型
\quad
那么CPU是怎么区分特权指令与非特权指令的呢?
CPU有两种状态,“内核态”和“用户态”
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
拓展:CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”
别名:内核态=核心态=管态;用户态=目态
\quad
“中断”使操作系统再次夺回CPU的控制权
操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
\quad
二. 中断和异常
\quad
\quad
\quad
\quad
\quad
\quad
2.1. 内中断
\quad
例子3:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令—―陷入指令,该指令会引发一个内部中断信号
就是应用程序的把CPU主动让给内核程序执行, 比如应用程序有个东西需要让内核程序完成
执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的, 注意陷入指令不是特权指令
\quad
2.2 外中断
\quad
有了时钟部件才可以实现并发
\quad
\quad
三. 系统调用
\quad
比如fork需要两个参数, 那么操作系统就会根据应用程序传递的参数来判断它想要的到底是那种类型的服务
执行了陷入指令, 意味着应用程序主动地将CPU控制权还给操作系统内核,