文章目录
- 教程
- 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 中断的作用
- 当中断发生时,CPU立即进入核心态
- 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作
(比如进程切换、分配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操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求
,由操作系统内核
代为完成。这样可以保证系统的稳定性和安全性
,防止用户进行非法操作。
系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令
才能完成,因此系统调用的相关处理
需要在核心态
下进行。