计算机操作系统-第四天

简介: 计算机操作系统-第四天



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~

相关文章
|
19天前
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
23 1
|
19天前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
|
19天前
|
存储 缓存 安全
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
|
19天前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
19天前
|
安全 Linux Shell
操作系统究竟是什么?在计算机体系中扮演什么角色?
操作系统究竟是什么?在计算机体系中扮演什么角色?
50 0
|
19天前
|
存储 安全 Unix
计算机的操作系统
计算机的操作系统
13 2
|
19天前
|
存储 Ubuntu Unix
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
46 0
|
19天前
|
存储 安全 自动驾驶
计算机软考之操作系统
计算机软考之操作系统
56 0
|
19天前
|
Linux 数据安全/隐私保护 虚拟化
操作系统:计算机的大脑
操作系统:计算机的大脑
68 0
|
19天前
|
存储 算法 调度
《计算机操作系统》重点知识笔记整理(二)
《计算机操作系统》重点知识笔记整理(二)
48 0