当前位置: 首页 > news >正文

操作系统的运行机制

1.程序的运行原理:

1.CPU执行指令的过程

  1. C语言代码在编译器上“翻译”,得到二进制的机器指令。
  2. 一条高级语言的代码翻译过来可能会对应多条机器指令。
  3. 对于CPU来说,机器指令才是"能看得懂"的语言。
  4. 程序运行的过程其实就是CPU执行一条一条的机器指令的过程。

2.注意点

  • “指令”就是处理器(CPU)能识别、执行的最基本命令
  • 注:很多人习惯把Linux、Windows、MacOS的“小黑框”中使用的命令也称为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。

本节中的“指令”指二进制机器指令。

2.两种指令

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

1.特权指令

操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,

如:内存清零指令。这些指令影响重大,
只允许“管理者”―—即操作系统内核来使用。

2.非特权指令

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

3.两种处理器状态

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

1.核心态

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

2.用户态

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

3.CPU的状态控制

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

4.内核态,用户态的切换

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

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

3.非法事件的处理

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

补充:

  • 除了非法使用特权指令之外,还有很多事件会触发中断信号。
  • 一个共性是,但凡需要操作系统介入的地方,都会触发中断信号。
  • 操作系统内核在让出CPU之前,会用一条特权指令把 PSW的标志位,设置为“用户态”

4.两种程序

1.内核程序

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

2.注意事项
甚至可以说,一个操作系统只要有内核就够了
(eg:Docker一>仅需Linux内核)。

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

2.应用程序

我们普通程序员写的程序就是“应用程序”。

相关文章:

操作系统的运行机制

1.程序的运行原理: 1.CPU执行指令的过程 C语言代码在编译器上“翻译”,得到二进制的机器指令。一条高级语言的代码翻译过来可能会对应多条机器指令。对于CPU来说,机器指令才是"能看得懂"的语言。程序运行的过程其实就是CPU执行一…...

分布式事务解决方案之2PC

分布式事务解决方案之2PC 前面已经学习了分布式事务的基础理论,以理论为基础,针对不同的分布式场景业界常见的解决方案有2PC、 TCC、可靠消息最终一致性、最大努力通知这几种。 什么是2PC 2PC即两阶段提交协议,是将整个事务流程分为两个阶段…...

发现某设备 adb shell ps 没有输出完整信息

某错误示例 并不是都使用 -ef 参数查找都能够返回完整信息,某些版本设备不适用 -ef 也不会返回完整信息。 简单兼容 简单兼容不同版本 Android 设备查找进程列表,没有通过脚本判断 Android 版本,如有兴趣可以自己修改。 :loop adb shell…...

qt模拟鼠标事件

模拟鼠标事件 1、模拟鼠标按下事件2、模拟鼠标松开事件3、模拟鼠标点击事件4、模拟鼠标移动事件 1、模拟鼠标按下事件 QPoint p this->rect().center();QMouseEvent *pressEvent new QMouseEvent(QEvent::MouseButtonPress,p,Qt::LeftButton,Qt::LeftButton,Qt::NoModifie…...

Linux运维基础知识大全

一. Linux组成 1. 内核 内核:系统空间的代码和数据的集合称为内核(Kernel);kernel是操作系统内部最核心的软件,和硬件打交道的 1.对cpu进行管理,进程调度到cpu里进行管理 2.对内存进行空间的分配&#xff0…...

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 第一部分:组态配置 具体步骤可参考以下内容: 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项…...

负载均衡-ribbon源码解析

负载均衡-ribbon源码解析 1 LoadBalanced注解 /*** 基于ribbon调用服务及负载均衡* return*/ LoadBalanced Bean public RestTemplate restTemplate(){return new RestTemplate(); }Bean ConditionalOnMissingBean public RestTemplateCustomizer restTemplateCustomizer(fin…...

SideBar 侧边导航与内容区域交互重写【Ant Design Mobile】

需求&#xff1a;SideBar 侧边导航与内容区域交互 点击侧边栏某一项时&#xff0c;相对应内容区域滚动到视口顶部滚动视口区域&#xff0c;到某一项内容区域&#xff0c;侧边栏选中状态也会跟着变化 const SideBarAgain: React.FC<PopupProps> (props) > {// 父组件…...

JavaEE初阶(5)多线程案例(定时器、标准库中的定时器、实现定时器、线程池、标准库中的线程池、实现线程池)

接上次博客&#xff1a;JavaEE初阶&#xff08;4&#xff09;&#xff08;线程的状态、线程安全、synchronized、volatile、wait 和 notify、多线程的代码案例&#xff1a;单例模式——饿汉懒汉、阻塞队列&#xff09;_di-Dora的博客-CSDN博客 目录 多线程案例 定时器 标准…...

SpringCLoud——Nacos配置中心

Nacos实现配置管理 统一配置管理 配置更新热更新 统一配置的创建是在UI界面中完成的&#xff1a; 首先我们点击【配置管理】然后点击【配置列表】&#xff1a; 然后我们就看到了配置管理界面&#xff0c;但是此时这里是空的&#xff0c;我们可以创建一些配置文件&#xff1a…...

05目标检测-区域推荐(Anchor机制详解)

目录 一、问题的引入 二、解决方案-设定的anchor boxes 1.高宽比&#xff08;aspect ratio&#xff09;的确定 2.尺度(scale)的确定 3.anchor boxes数量的确定 三、Anchor 的在目标检测中是怎么用的 1、anchor boxes对真值bounding box编码的步骤 2、为什么要回归偏移量…...

SpringBoot如何保证接口安全?

对于互联网来说&#xff0c;只要你系统的接口暴露在外网&#xff0c;就避免不了接口安全问题。如果你的接口在外网裸奔&#xff0c;只要让黑客知道接口的地址和参数就可以调用&#xff0c;那简直就是灾难。 举个例子&#xff1a;你的网站用户注册的时候&#xff0c;需要填写手…...

构建可扩展的应用:六边形架构详解与实践

面试题分享 云数据解决事务回滚问题 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮…...

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 解决方案

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 解决方案 使用Git提交时报错&#xff0c;代码如下: $ git push -u origin "master" Counting objects: 100% (95/95), done. Delta compression using up to 12 threads Compressing ob…...

基于ssm智能停车场031

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

【Git】万字git与gitHub

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理在git和GitHub时的笔记与感言 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0;&…...

C++版本的OpenCV实现二维图像的卷积定理(通过傅里叶变换实现二维图像的卷积过程,附代码!!)

C版本的OpenCV库实现二维图像的卷积定理过程详解 前言一、卷积定理简单介绍二、不同卷积过程对应的傅里叶变换过程1、“Same”卷积2、“Full”卷积3、“Valid”卷积 三、基于OpenCV库实现的二维图像卷积定理四、基于FFTW库实现的二维图像卷积定理五、总结与讨论 前言 工作中用…...

打开深度学习的锁:(1)入门神经网络

打开深度学习的锁 导言PS&#xff1a;神经网络的训练过程一、导入的包和说明二、数据的预处理2.1 数据集说明2.2 数据集降维度并且转置2.3 数据预处理完整代码 三、逻辑回归3.1 线性回归函数公式3.2 sigmoid函数公式 四、初始化函数五、构建逻辑回归的前向传播和后向传播5.1 损…...

02- pytorch 实现 RNN

一 导包 import torch from torch import nn from torch.nn import functional as F import dltools 1.1 导入训练数据 batch_size, num_steps 32, 35 # 更改了默认的文件下载方式&#xff0c;需要将 article 文件放入该文件夹 train_iter, vocab dltools.load_data_time_…...

算法课作业1

https://vjudge.net/contest/581138 A - Humidex 模拟题 题目大意 给三个类型数字通过公式来回转化 思路 求e的对数有log函数&#xff0c;不懂为什么不会出精度错误&#xff0c;很迷&#xff0c;给的三个数字也没有顺序&#xff0c;需要多判断。 #include<cstdio>…...

新手也能看懂的TCAD入门:用Sentaurus和Silvaco分别跑一个NPN三极管(附完整代码)

TCAD新手实战指南&#xff1a;从零开始仿真NPN三极管 1. 初识TCAD&#xff1a;半导体仿真的利器 在微电子领域&#xff0c;TCAD&#xff08;Technology Computer-Aided Design&#xff09;工具如同设计师的"数字实验室"&#xff0c;让我们能在计算机上模拟半导体器件…...

Free-NTFS-for-Mac深度剖析:打破macOS与Windows文件系统壁垒的完整解决方案

Free-NTFS-for-Mac深度剖析&#xff1a;打破macOS与Windows文件系统壁垒的完整解决方案 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mountin…...

镜像空间全域透视,赋能多维场景一体化透明数智治理技术白皮书

镜像空间全域透视&#xff0c;赋能多维场景一体化透明数智治理技术白皮书副标题&#xff1a;聚合动态三维实时重构、无感厘米级定位、全域跨镜连续追踪、身体指纹生物核验四大自研核心&#xff0c;一站式覆盖楼宇、仓储、硐室全场景透明智能管控前言当下城市建筑楼宇、物资仓储…...

DS3502 I2C数字电位器:从原理到Arduino/Python实战应用

1. 项目概述&#xff1a;告别手动旋钮&#xff0c;拥抱数字控制如果你和我一样&#xff0c;厌倦了在面包板上反复拧动电位器旋钮来调试电路&#xff0c;或者正在寻找一种能够通过程序精确控制电阻值的方法&#xff0c;那么DS3502这类I2C数字电位器绝对是你的“梦中情芯”。它本…...

轻量级配置中心zcf:中小团队微服务配置管理实战指南

1. 项目概述&#xff1a;一个轻量级、高可用的配置中心最近在梳理团队内部的技术栈&#xff0c;发现一个挺有意思的现象&#xff1a;很多中小型项目&#xff0c;甚至是一些快速迭代的业务线&#xff0c;在配置管理上依然处于一种“原始”状态。要么是各种application.yml、appl…...

开源提示词管理工具:本地化部署与AI工作流效率提升实践

1. 项目概述&#xff1a;一个为AI工作流设计的提示词管理利器如果你和我一样&#xff0c;每天都在和ChatGPT、Claude、Midjourney这些AI模型打交道&#xff0c;那你一定有过这样的烦恼&#xff1a;昨天精心调试好的、能稳定输出高质量代码的提示词&#xff0c;今天想用的时候&a…...

Linux磁盘空间告警与清理实战

Linux磁盘空间告警与清理实战磁盘空间不足是 Linux 运维中最常见也最容易引发连锁故障的问题之一。很多服务平时运行正常&#xff0c;但一旦分区写满&#xff0c;轻则日志无法落盘&#xff0c;重则数据库异常、服务启动失败甚至系统不可用。中级技术人员不能只会“删文件腾空间…...

AI异步任务编排引擎:从原理到实战,构建可靠工作流系统

1. 项目概述&#xff1a;AI驱动的异步任务编排引擎在当今的软件开发领域&#xff0c;尤其是涉及数据处理、机器学习模型训练、自动化工作流等场景时&#xff0c;我们常常会面临一个核心挑战&#xff1a;如何高效、可靠地编排和管理一系列耗时且可能相互依赖的异步任务。传统的解…...

别再一个点一个点更新了!用Python手把手实现分块LMS(BLMS)滤波器,收敛稳如老狗

用Python实现分块LMS滤波器&#xff1a;告别收敛震荡的工程实践指南 在实时信号处理领域&#xff0c;自适应滤波器的稳定性往往比理论性能更重要。想象一下这样的场景&#xff1a;你正在开发一套会议系统降噪算法&#xff0c;每次麦克风捕捉到新的声音样本&#xff0c;滤波器系…...

基于Blazor与LLamaSharp构建本地大模型ChatGPT式Web应用

1. 项目概述与核心价值最近在折腾一个内部工具&#xff0c;想把本地大模型的能力和类似ChatGPT的对话体验结合起来&#xff0c;部署成一个Web应用。找了一圈&#xff0c;发现一个挺有意思的项目叫“BLlamaSharp.ChatGpt.Blazor”。光看这个名字&#xff0c;信息量就很大了&…...