操作系统的运行机制、中断和异常、系统调用

news2024/11/17 11:23:23

在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


操作系统

  • 一、操作系统的运行机制
    • 1.1内核程序
    • 1.2应用程序
    • 1.3内核态和用户态
    • 1.4内核态、用户态的切换
  • 二、中断和异常
    • 2.1中断的作用
    • 2.2中断的类型
      • 2.2.1内中断(也称“异常”)
      • 2.2.2外中断
    • 2.3中断机制的基本原理
  • 三、系统调用
    • 3.1什么是系统调用
    • 3.2系统调用与库函数的区别
    • 3.3什么功能要用到系统调用
    • 3.4系统调用的过程

一、操作系统的运行机制

  • 程序是如何运行的?
  • 一条高级语言的代码翻译过来可能会对应多条机器指令
  • 程序运行的过程就是CPU一条一条的机器指令的执行过程
  • “指令”就是处理器(CPU)能识别、执行的最基本命令

1.1内核程序

  • 由很多内核程序组成了 “操作系统内核”,或简称“内核(Kernel)”
  • “内核(Kernel)”是操作系统最重要最核心的部分,也是最接近硬件的部分,甚至可以说,一个操作系统只要由内核就够了
  • 操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令
  • 这些指令影响重大,只允许“管理者” - - 即操作系统内核来使用

1.2应用程序

  • 在操作系统之上的程序就是应用程序,即普通的应用软件。
  • 应用程序只能使用:“非特权指令”,如:加法指令、减法指令等。

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

1.3内核态和用户态

  • 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
  • 处于用户态时,说明此时正在运行的是内核程序,此时可以执行非特权指令
  • CPU中有一个寄存器叫程序状态寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
  • 别名:内核态=核心态=管态
  • 用户态=目态

1.4内核态、用户态的切换

  • 内核态–>用户态:执行一条特权指令 – – 修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
  • 用户态–>内核态:中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权
    • 除了非法使用特权指令之外,还有很多事件会触发中断信号
    • 一个共性是:但凡需要操作系统介入的地方,都会触发中断信号

二、中断和异常

2.1中断的作用

  • 在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序
  • “中断”是让操作系统内核夺回CPU使用权的唯一途径
  • 如果没有“中断”机制,那么一旦应用程序上CPU执行,CPU就会一直运行这个应用程序

2.2中断的类型

2.2.1内中断(也称“异常”)

  • 与当前执行的指令有关,中断信号来源于CPU内部
    • 有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令 – – 陷入指令,该指令会引发一个内部中断信号
      在这里插入图片描述
  • 执行“陷入程序”,意味着应用程序主动地将CPU控制权还给操作系统内核。
  • “系统调用”’就是通过陷入指令完成的
      • 1.陷阱、陷入(trap):由陷入指令引发,是应用程序故意引发的
      • 2.故障(fault):由错误条件引起的,可能被内核程序修复。
    • 内核程序修复故障后会把CPU使用权还给应用程序,让他继续执行下去,如:缺页故障
      • 3.终止(abort):由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的程序,而是直接终止该应用程序,如整数除0、非法使用特权指令

2.2.2外中断

  • 与当前执行的指令无关,中断信号来源于CPU外部
    • 1.时钟中断 – – 由时钟部件发来的中断信号
      • 时钟部件每隔一个时间片(如50ms)会给CPU发送一个时钟中断信号
    • 2.I/O中断 – – 由输入/输出设备发来的中断信号
      • 当输出任务完成时,向CPU发送中断信号

2.3中断机制的基本原理

  • 不同的中断信号,需要用不同的中断处理程序来处理。
  • 当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
    在这里插入图片描述

三、系统调用

3.1什么是系统调用

  • “系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
    在这里插入图片描述

3.2系统调用与库函数的区别

在这里插入图片描述

普通应用程序可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及
编程语言向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的细节,使程序员编程更方便
操作系统向上提供系统调用,使得上层程序能请求内核的服务
裸机
  • 不涉及系统调用的库函数:如“取绝对值”的函数
  • 涉及系统调用的库函数:如“创建一个新文件”的函数

3.3什么功能要用到系统调用

  • 应用程序通过系统调用请求操作系统的服务。
  • 系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成
  • 这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

3.4系统调用的过程

在这里插入图片描述

  • 传递系统调用参数 --> 执行陷入指令(用户态) --> 执行相应的内请求核程序处理系统调用(核心态) --> 返回应用程序

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3项目基于vue-router跳转到登录页面

创建项目 #创建项目 #选择vue3 选择npm vue create devops-front#安装vue-router 路由 npm install -g cnpm --registryhttps://registry.npmmirror.com cnpm install vue-router4 #启动项目 vue run serve app.vue 定义<router-view/> 路由入口 <template>&l…

微信小程序(van-tabs) 去除横向滚动条样式(附加源码解决方案+报错图)

问题描述 今天第一次接触vant组件库。 ant官网地址适用于Vue3 支持Vue2、Vue3、微信小程序等 我在使用van-tabs组件时遇到了一个问题&#xff0c;如下图所示&#xff1a; 从图片上可以看到有个灰色的横向滚动条&#xff0c;一开始领导给我说这个问题&#xff0c;我反反复复都…

LED显示屏维修检测方法

电阻检测 对于显示屏的电阻检法&#xff0c;我们需将万用表调到电阻档&#xff0c;先检测一块正常电路板的某点到地电阻值&#xff0c;然后再检测另一块相同电路板的同一个点测试与正常的电阻值是否有不同&#xff0c;如有不同则就知道了该显示屏问题的范围&#xff0c;反之则不…

掌握终端基础技巧:Linux下的文件和目录复制操作

在Linux系统中&#xff0c;命令行终端是一个大而高效的工具&#xff0c;让使用者可以通过简单的命令完成各种任务。其中&#xff0c;文件和目录的复制操作是日常使用频率较高的一项操作。本文将介绍Linux下的文件和目录复制基础技巧&#xff0c;帮助您更好地掌握命令行终端的使…

直播读弹幕机器人:直播弹幕采集+文字转语音(附完整代码)

目录 前言代码实现请求数据解析数据文字转语音完整代码 高级点的tk界面版 前言 直播读弹幕机器人是指能够实时读取直播平台上观众发送的弹幕&#xff0c;并将其转化为语音进行播放的机器人。这种机器人通常会使用文字转语音技术&#xff0c;将接收到的弹幕文本转为语音&#x…

牛客小白月赛74 F题解

文章目录 最便宜的构建问题建模问题分析1.分析所求2.方法1用并查集判断k个点集是否连通&#xff0c;不连通则由小到大添加边代码 3. 方法2使用带权并查集维护当前集合所连通的点集个数代码 4.方法3通过二分确定值代码 最便宜的构建 问题建模 给定n个点m条边的带权无向图&#…

初阶结构体(超详解)

初阶结构体 1. 结构体的声明1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的初始化和定义 2. 结构体的访问3. 结构体传参 1. 结构体的声明 1.1 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量 结…

电商高并发设计之SpringBoot整合Redis实现布隆过滤器

文章目录 问题背景前言布隆过滤器原理使用场景基础中间件搭建如何实现布隆过滤器引入依赖注入RedisTemplate布隆过滤器核心代码Redis操作布隆过滤器验证 总结 问题背景 研究布隆过滤器的实现方式以及使用场景 前言 本篇的代码都是参考SpringBootRedis布隆过滤器防恶意流量击穿缓…

让数据管理由繁至简的低代码开发平台

随着社会数字化能力的快速升级&#xff0c;各行各业正逐渐迈向数字化转型的新时代。尤其是AI的爆发&#xff0c;数据智能技术正在彻底改变着这个行业的面貌&#xff0c;随着越来越多的企业开始将人工智能、机器学习和大数据分析技术应用到其业务中&#xff0c;数据的价值正在得…

深度解剖动态内存管理

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1…

【项目 进程8】 2.17 内存映射(1) 2.18内存映射(2)

文章目录 2.17 内存映射&#xff08;1&#xff09;内存映射内存映射相关系统调用使用内存映射实现父子进程间通信使用内存映射实现没有关系的进程间的通信 2.18内存映射&#xff08;2&#xff09;内存映射的注意事项使用内存映射实现内存拷贝的功能匿名映射 2.17 内存映射&…

【Spring】学习Spring需要掌握的核心设计思想

目录 一、Spring是什么 二、什么是IoC容器 1、什么是容器 2、什么是IoC 3、Spring IoC 4、DI&#xff08;依赖注入&#xff09; 4.1、IoC和DI的区别 5、 DL&#xff08;依赖查找&#xff09; 一、Spring是什么 我们通常所说的Spring指的是Spring Framework&#xff08;…

DAY55:单调栈(一)每日温度+下一个更大元素Ⅰ

文章目录 739.每日温度栈数据结构单调栈思路单调栈原理单调栈注意点判断条件工作过程分析 完整版 496.下一个更大元素Ⅰ思路映射思路 完整版总结 739.每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 an…

2023年第四届“华数杯”数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常检测 异常…

【Java】UWB高精度工业人员安全定位系统源码

基于VueSpring boot前后端分离架构开发的一套UWB技术高精度定位系统源码。 UWB高精度人员定位系统提供实时定位、电子围栏、轨迹回放等基础功能以及各种拓展功能,用户可根据实际需要任意选择搭配拓展功能。该系统简易部署&#xff0c;方便使用&#xff0c;实时响应。UWB高精度定…

Java on Azure Tooling 6月更新|标准消费和专用计划及本地存储账户(Azurite)支持

作者&#xff1a;Jialuo Gan - Program Manager, Developer Division at Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎阅读 Java on Azure 工具的六月更新。在本次更新中&#xff0c;我们将介绍 Azure Spring Apps 标准消费和专用计划支持以及本地存储账户&…

二叉树迭代遍历

PS:以下代码均为C实现 1.二叉树前序遍历 力扣 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 class Solution { public:vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> str;TreeNode* curroot;whil…

【波浪动态特效】基于jquery实现页面底部波浪动画效果(附完整源码下载)

文章目录 写在前面涉及知识点实现效果1、搭建页面1.1、创建两个片区1.2、创建波浪区域1.3、静态页面源码 2、JS实现波浪效果2.1 动画原理2.2 动画源码 3、源码分享3.1 百度网盘3.2 123云盘3.3 邮箱留言 总结 写在前面 想必搭建过企业官网的大多数对这个效果不陌生吧&#xff0…

备战秋招 | 笔试强训21

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、设一个有序的单链表中有n个结点&#xff0c;现要求插入一个新结点后使得单链表仍然保持有序&#xff0c;则该操作的时间复杂度&#xff08;&#xff09; A. O(log2n) B. O(1) C. O(n2) D. O(n) 2…

网络中通过IP地址查找位置

display ip routing-table 查看路由表 display vlan 查看vlan 信息 display stp brief 查看生成树信息 display mac-address 查看mac 地址表 display arp 查看arp表 SW1 SW2