1.3_1 操作系统的运行机制

文章目录

  • 1.3_1 操作系统的运行机制
    • (一)预备知识:程序是如何运行的
    • (二)内核程序 vs 应用程序
    • (三)特权指令 vs 非特权指令
    • (四)内核态 vs 用户态
        • 内核态、用户态的切换
  • 总结

1.3_1 操作系统的运行机制

(一)预备知识:程序是如何运行的

image-20240218185809840

image-20240218185859572

  “指令”就是处理器(CPU)能识别、执行的最基本命令。

  注:很多人习惯把Linux、Windows、MacOS等的“小黑框”中使用的命令也称为“指令”,其实那是“交互式命令接口”。

  本节所指的“指令”指的就是CPU读得懂的、二进制机器指令。

(二)内核程序 vs 应用程序

  我们普通程序员写的、跑在操作系统之上的,就是“应用程序”。比如QQ、微信。

  还有一些人,比如微软、苹果有一帮人负责实现操作系统的,他们写的是“内核程序”。由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”。内核是操作系统最重要最核心的部分,也是最接近硬件的部分

  操作系统最主要的角色,就是系统资源的管理者。而操作系统对系统资源的管理,也就是通过内核来实现的。

  甚至可以说,一个操作系统只要有内核就够了。内核中都是操作系统最重要、最核心、最必不可少的功能。

  操作系统的功能未必都在内核中,如图形化用户界面GUI。不过这些功能也可以没有,例如没有GUI,还可以用命令行。

(三)特权指令 vs 非特权指令

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

  应用程序只能使用“非特权指令”,如:加法指令、减法指令等。

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

(四)内核态 vs 用户态

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

  CPU有两种状态,“内核态”和“用户态”。

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

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

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

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

内核态、用户态的切换

  问题:内核态、用户态是怎样来回切换的?

举例

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

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

此时就会有一个问题:刚开机时,CPU是内核态,现在想要运行应用程序,肯定得先从内核态切换到用户态才行。

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

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

4.应用程序在“用户态”下运行。

5.此时,如果该应用程序中被植入了一条特权指令、企图破坏系统……?

6.CPU会发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”。

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

具体过程:CPU检测到中断信号后,会立即变为“核心态”,并停止运行当前的应用程序(拒绝运行该应用程序中的这一特权指令),转而运行处理中断信号的内核程序。

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

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

总结

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

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

  注:除了“非法使用特权指令”之外,还有很多事件也会触发中断信号。总之,一个共性是,但凡需要操作系统介入的地方,都会触发中断信号

总结

image-20240218195607006

注:

1.都是高频考点,很重要。

2.到这里不太理解也没关系,先往后学习,随着后面的学习,对此处相关知识的理解会逐渐加深。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/475796.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCB差模辐射是如何产生的

在电路应用中,高频时钟信号往往会采用差分线传输模式,其优点是在提高速率的同时减小功耗和提高抗扰度,因此,差模辐射就成为电路正常工作的结果,是电流流过导体形成的环路所产生,差模辐射模型可以被模拟为一个小环形天线,对于一个面积为A的小环路,载有电流Idm,在远场中…

程序员可以做一辈子吗?大龄程序员出路在哪?

前言 随着2023年AI的出现,大家对待程序员工作有了一丝丝危机感,特别是今年整个IT行业进入了前所未有的寒冬期,让程序员不得不思考未来的职业发展。 甚至很多程序员一想到自己接近35岁,焦虑感油然而生,这也是大部分程…

WebService接口测试

WebService的理解 WebService就是Web服务的意思,对应的应用层协议为SOAP(相当于HTTP协议),可理解为远程调用技术。 特点: 客户端发送的请求主体内容(请求报文)的格式为XML格式 接口返回的响…

代码随想录第33天|● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

文章目录 1005.K次取反后最大化的数组和贪心思路:代码: 34. 加油站思路一:全局贪心代码: 思路二:代码: 135. 分发糖果思路:两边考虑代码: 1005.K次取反后最大化的数组和 贪心思路&am…

【图像分割 2024 ICLR】Conv-LoRA

【图像分割 2024 ICLR】Conv-LoRA 论文题目:CONVOLUTION MEETS LORA: PARAMETER EFFICIENT FINETUNING FOR SEGMENT ANYTHING MODEL 中文题目:卷积满足lora:分段任意模型的参数有效微调 论文链接:https://arxiv.org/abs/2401.17868 论文代码&…

FPFH特征描述符、对应关系可视化以及ICP配准

一、FPFH特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <boo…

Midjourney绘图欣赏系列(五)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

如何系统地学习Python

建议系统学习Python的途径遵循理论与实践相结合的教学方法。以下是一个分阶段的学习计划&#xff1a; 阶段一&#xff1a;基础知识 理解Python的特点&#xff1a; 认识Python的历史与设计哲学。学习Python的基本语法和运行环境。 安装Python&#xff1a; 学习如何在不同操作系…

芯片的分类

目录 通用处理器数字信号处理器专用处理器 通用处理器 我们常听说的中央处理器CPU就是一种典型的通用处理器&#xff08;GPP&#xff09;。这种处理器多使用片上系统&#xff08;SoC&#xff09;的设计理念&#xff0c;在处理器上集成各种功能模块&#xff0c;每一种功能都是用…

【JavaEE】_多线程Thread类及其常用方法

目录 1. Thread类常用构造方法 2. Thread类的几个常见属性 3. 启动一个线程 4. 中断一个线程 4.1 方法1&#xff1a;手动设置标志位 4.2 方法2&#xff1a;使用Thread内置的标志位 5. 等待一个线程 6. 获取当前线程引用 7. 休眠当前线程 1. Thread类常用构造方法 方法…

【开源】SpringBoot框架开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

Java面向对象案例之设计用户去ATM机存款取款(三)

需求及思路分析 业务代码需求&#xff1a; 某公司要开发“银行管理系统”&#xff0c;请使用面向对象的思想&#xff0c;设计银行的储户信息&#xff0c;描述存款、取款业务。 储户类的思路分析&#xff1a; 属性&#xff1a;用户姓名、密码、身份证号、账号、帐户余额 方法&a…