码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 408 考研《操作系统》第一章第三节:中断和异常、系统调用


    文章目录

    • 教程
    • 1.中断和异常
      • 1.1 中断的作用
      • 1.2 中断的类型
        • 1.2.1 外中断的处理过程
        • 1.2.1 内中断的处理过程
      • 1.3 中断机制的基本原理
      • 1.4 总结
    • 2. 系统调用
      • 2.1 什么是系统调用?
      • 2.2 小例子:为什么系统调用是必须的?
      • 2.3 什么功能要用系统调用实现?
      • 2.4 系统调用与库函数的区别
      • 2.5 系统调用的过程
      • 2.6 总结

    教程

    1.中断和异常 https://www.bilibili.com/video/BV1YE411D7nH/?p=6&share_source=copy_web&vd_source=d228985826b563972268952905224139
    2. 系统调用 https://www.bilibili.com/video/BV1YE411D7nH/?p=7&share_source=copy_web&vd_source=d228985826b563972268952905224139

    1.中断和异常

    在这里插入图片描述
    在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,以便实现从用户态进入核心态。

    在实际操作系统中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常。
    发生中断或异常时,运行用户态的CPU 会立即进入核心态,这是通过硬件实现的(例如,用一个特殊寄存器的一位来表示CPU所处的工作状态,0表示核心态,1表示用户态。若要进入核心态,则只需将该位置О即可)。
    中断是操作系统中非常重要的一个概念,对一个运行在计算机上的使用操作系统而言,缺少了中断机制,将是不可想象的。原因是,操作系统的发展过程大体上就是一个想方设法不断提高资源利用率的过程,而提高资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占有权释放,而这一行为就需要通过中断实现。

    1.1 中断的作用

    1. 当中断发生时,CPU立即进入核心态
    2. 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
    3. 对于不同的中断信号,会进行不同的处理

    发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。

    在这里插入图片描述
    在这里插入图片描述

    1.2 中断的类型

    在这里插入图片描述
    在这里插入图片描述
    另一种分类方式:
    在这里插入图片描述

    1.2.1 外中断的处理过程

    在这里插入图片描述

    在这里插入图片描述

    1.2.1 内中断的处理过程

    在这里插入图片描述
    在这里插入图片描述

    1.3 中断机制的基本原理

    在这里插入图片描述

    1.4 总结

    在这里插入图片描述

    2. 系统调用

    在这里插入图片描述

    2.1 什么是系统调用?

    知识点回顾:

    操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

    在这里插入图片描述

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

    2.2 小例子:为什么系统调用是必须的?

    问题:操作系统为什么要提供“系统调用”功能?

    生活场景:你去学校打印店打印论文,当你按下“打印”之后,打印机开始工作。你的论文打印到一半时,另一位同学按下了“打印”按钮开始打印他自己的论文。最终,你的论文和该同学的论文页面并没有混杂在一起,都是按顺序依次打印的。

    思考:如果各个进程可以随意地使用打印机,会发生什么情况?

    你的论文打印到一半时,另一位同学按下了“打印”按钮开始打印他自己的论文。结果,你的后半部分论文与该同学的页面混杂在一起了。。。

    解决方法:操作系统提供“系统调用”功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求。操作系统会对各个请求进行协调管理。

    在这里插入图片描述

    2.3 什么功能要用系统调用实现?

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

    在这里插入图片描述
    系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行。

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

    在这里插入图片描述

    2.5 系统调用的过程

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

    2.6 总结

    在这里插入图片描述

  • 相关阅读:
    企业如何实时监管员工聊天&转账行为
    [Matlab有限元分析] 1.有限元分析的发展、基本概念和特点
    QDir实践
    运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar
    【已解决】UE5 plugin ‘xxx‘ failed to load because module ‘xxx‘ could not be found.
    训练跳跃(青蛙跳台阶),剑指offer,力扣
    如何使用 nvm-windows 这个工具来管理你电脑上的Node.js版本
    Linux应急响应学习
    [git] rebase 合并多个commit
    助力互联网企业决胜AI时代,加速数据中心的现代化之路
  • 原文地址:https://blog.csdn.net/qq_56897195/article/details/128158068
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号