操作系统的运行机制

发布时间:2024年01月11日

1.程序是如何运行的?

c语言代码>编译器(翻译)>机器指令(二进制)

一条高级语言的代码翻译过来可能会对应多条机器指令。

程序运行就是CPU执行一条一条的机器指令的过程。

?

内核程序vs应用程序

应用程序:在操作系统之上跑的这些程序,程序员编写的。微信,QQ

内核程序:开发操作系统,许多的内核程序组成“操作系统的内核”,简称为“内核(kernel)”。

内核是操作系统最重要最核心的部分,也是最接近硬件的部分。

操作系统的功能不一定都在内核里面,比如图形化界面(GUI)

操作系统内核作为“管理者”,CPU会执行“特权指令”,比如内存清零等等,只能操作系统内核来执行。

应用程序只能执行非特权指令,内核程序可以执行特权指令

注意:CPU能判断指令的类型,如何判断是内核程序是内核程序还是内核程序。因为内核程序也可以执行非特权指令,不执行特权指令,此时和应用程序是一样的。

为了区分内核程序或者应用程序,CPU可以分为“内核态”和“用户态”。

处于内核态,说明此时正在运行的是内核程序,可以执行特权指令。

处于用户态,说明此时正在运行的是应用程序,只能执行非特权指令

(Linux的普通用户和root用户)

(Windows的普通用户和管理员)

如何判断什么状态,CPU中有个寄存器:程序状态寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。

内核态=核心态=管态,用户态=目态

如何实现CPU状态切换:

1.刚开机,是内核态,要完成开机这个指令。

2.开完机后,运行某些应用程序。

3.操作系统的内核程序在合适的时候主动让出CPU,让该应用程序在CPU上运行。(让出CPU之前,会内核程序执行一条特权指令,讲PSW的标志位设置为0,也就是用户态,然后让出CPU使用权,使之运行)。

4.此时应用程序运行在“用户态”

5.有个黑客在应用程序中植入一条特权指令,企图破坏系统。

6.CPU发现是一条特权指令,但是现在运行在“用户态”。

7.这个非法事件会引发一个中断信号,CPU检测到中断信号后,会立即变成“内核态”,并停止运行当前应用程序,转而运行处理中断信号的内核程序。

8.“中断”使操作系统再次夺回CPU控制权。

9.操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的程序。

内核态>用户态,执行修改PSW标志位为用户态,这个动作表示操作系统将主动让出CPU的使用权。

用户态>内核态,由中断引发,是硬件自发的完成变态的过程,触发中断信号意味着操作系统强行夺回CPU的使用权。

还有别的事件也会触发中断信号,但凡需要操作系统介入的地方,不是操作系统该干的,但是现在在干,就会触发中断信号。

?

?

文章来源:https://blog.csdn.net/2301_76769985/article/details/135513142
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。