408 考研《操作系统》第一章第三节:中断和异常、系统调用
创始人
2024-03-15 11:00:27
0次

文章目录

  • 教程
  • 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 总结

在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...