操作系统的运行机制-第四天

目录

1、操作系统的运行机制

程序在硬件上时如何运行的?

内核程序vs应用程序 

特权指令vs非特权指令

内核态vs用户态 

本节思维导图:


1、操作系统的运行机制

程序在硬件上时如何运行的?

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

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

        注意:Linux、Windows、MasOS中的小黑框中使用的命令也称为指令,其实这是交互式命令接口,而本节中的”指令“是指二进制机器指令

内核程序vs应用程序 

        普通程序员写的程序就是“应用程序”,微软、苹果有专人负责实现操作系统,他们写的是“内核程序”,很多的内核程序就组成了“操作系统内核“简称”内核“。

内核是操作系统最终套最核心的部分,也是最接近硬件的部分

甚至可以说一个操作系统只要有内核就足够了

但是操作系统的功能未必都在内核中,比如图形化用户界面GUI

特权指令vs非特权指令

非特权指令---普通程序员写的应用程序

        应用程序只能使用"非特权指令"如:加法指令、减法指令等

特权指令---微软、苹果有一帮人负责实现操作系统,他们写的就是”内核程序“

        操作系统的内核作为”管理者“,有时会让CPU执行一些”特权指令“,如:内存清零指令。这些指令影响重大,只允许”管理者“----即操作系统的内核使用

CPU设计和生产的时便划分了特权与非特权指令,因此CPU执行一条指令前就能判断出其类型

内核态vs用户态 

CPU能判断出指令类型,但是它怎么区分此时正在运行的是内核程序还是应用程序?

CPU会被分为两种状态:内核态用户态

处于内核态时,说明此时运行的是内核程序,只能执行特权指令

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

拓展:

        CPU中有一个寄存器叫”程序状态字寄存器“(PSW),其中有个二进制位,1表示”内核态“,0表示”用户态“

别名:内核态==核心态==管态、用户态==目态

那么如何进行内核态与用户态之间的切换呢?

①刚开机时,CPU为”内核态“,操作系统内核程序先上CPU运行

②开机完成后,用户可以启动某个应用程序

③操作系统内核程序在合适的时候主动让出CPU,让该应用程序上CPU运行

操作系统内核在让出CPU之前,会用一条特权指令把PSW的标志位设置为”用户态“

④应用程序运行在”用户态“下

⑤此时一位黑客在应用程序中植入了一条特权指令,企图破坏系统......

⑥其实当CPU读入该指令的时候就已经能判断出它是特权指令,但是自己又处于”用户态“

⑦这个非法事件会引发一个中断信号

当CPU检测到中断信号后,会立即变为”核心态“,并停止运行当前的应用程序,转而会运行处中断信号的内核程序

⑧”中断“使操作系统再次夺回CPU的控制权

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

总结:

内核态——>用户态:执行一条特权指令--修改PSW的标志位为:用户态,这个动作意味着操作系统将主动让出CPU使用权

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

除了非法使用特权指令之外,还有很多事件都会触发中断信号,它们的共性是,单反需要操作系统介入的地方,都会触发中断信号

tips:关于PSW的解释

PSW(Program Status Word)是一个缩写,用于表示程序状态字,也称为程序状态寄存器(Program Status Register)。它是一种特殊的寄存器,用于存储和管理与处理器状态相关的信息和标志位。

PSW中的标志位是用来表示特定条件或状态的二进制位。这些标志位可以提供关于指令执行过程中发生的事件或结果的信息。不同的处理器架构和体系结构可能具有不同的标志位,但以下是一些常见的标志位:

1. 零标志位(Zero Flag):当指令执行的结果为零时被设置为1,否则为0。
2. 进位标志位(Carry Flag):在无符号算术操作中,当指令执行产生进位时被设置为1,否则为0。
3. 溢出标志位(Overflow Flag):在有符号算术操作中,当指令执行产生溢出时被设置为1,否则为0。
4. 符号标志位(Sign Flag):用于表示结果的符号,当结果为负数时被设置为1,否则为0。
5. 奇偶标志位(Parity Flag):用于表示结果中二进制位1的个数,当结果中二进制位1的个数为偶数时被设置为1,否则为0。

这些标志位可以在程序中进行检查和操作,以便根据指令执行的结果进行条件分支或其他处理。它们对于控制程序流程和处理器状态非常重要。

请注意,不同的体系结构和处理器可能具有不同的标志位定义和用法,因此具体的标志位可能会有所不同。

本节思维导图:

~over~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值