当前位置:   article > 正文

操作系统-计算机系统概述(中断与异常、系统调用、操作系统体系结构)_6.当cpu检测到中断信号后,会根据中断信号的类型去查询

6.当cpu检测到中断信号后,会根据中断信号的类型去查询

1.中断与异常

在这里插入图片描述

①中断的作用

CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序。

在合适的情况下,操作系统内核会把cPu的使用权主动让给应用程序(进程管理相关内容)

“中断”是让操作系统内核夺回CPU使用权的唯一途径。中断会使CPU从用户态切换到内核态。

所以:如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。

②中断的类型

内中断(异常)

与当前执行的指令有关,中断信号来源于CPU内部
eg:

  1. 用户态执行特权指令。
  2. 如果当前执行的指令非法,则会产生内中断

特殊:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令――陷入指令,该指令会引发一个内部中断信号(系统调用)。陷入指令并不是特权指令

内中断(异常)又细分为:

Ⅰ陷入
  • 由陷入指令引发,是应用程序故意引发的内终端称为陷入。
Ⅱ故障
  • 由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
Ⅲ终止
  • 由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令

外中断(中断)

与当前执行的指令无关,中断信号来源于CPU外部
eg:

  1. 时钟中断,时钟部件发出中断信号。(时钟部件每隔一个时间片(如50ms)会给CPU发送一个时钟中断信号,进行进程切换)
  2. IO设备发送的中断设备。

③中断机制的原理(中断向量表)

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询中断向量表,以此来找到相应的中断处理程序在内存中的存放位置。
在这里插入图片描述
具体细节需要查看计算机组成-程序中断方式。

CPU先检查中断信号

  • 内中断:CPU在执行指令时会检查是否有异常发生
  • 外中断:每个指令周期末尾,CPU都会检查是否有外中断信号需要处理

然后通过中断信号查询中断向量表,通过向量表找到对应的中断程序。

2. 系统调用

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

在这里插入图片描述

库函数与系统调用的关系如下:
在这里插入图片描述
简单的理解:库函数一般封装了系统调用。

系统调用按照分类分为:设备、文件、进程控制、进程管理、内存管理五部分。

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

①系统调用过程

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

注意:

  1. CPU可以通过开始用户向系统传递的参数判断出用户想要的时那种系统调用。
  2. 程序执行系统调用一定需要经过陷入指令,发出内中断CPU进入内核态,处理内核程序。
  3. 陷入指令在用户态,执行系统调用是在内核态。
  4. 陷入指令=trap指令=访管指令

3. 操作系统体系结构

在这里插入图片描述

计算机系统层次结构
在这里插入图片描述
注意:

  1. 原语是一种特殊的程序,具有原子性。
  2. 时钟管理、中断处理、原语与硬件联系最紧密,一定存在内核态中
  3. 进程管理、存储器管理、设备管理等功能的管理类似与对数据结构的管理,不同的内核设计方法将这些管理功能放的位置不同
  4. 用户态与内核态切换的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

①大内核(宏内核、单内核)与微内核

在这里插入图片描述

大内核(宏内核、单内核)
进程管理、存储器管理、设备管理等功能放入内核态中

  • 优点:高性能
  • 缺点∶内核代码庞大,结构混乱,难以维护

微内核
进程管理、存储器管理、设备管理等功能放入用户态中

  • 优点:内核功能少,结构清晰,方便维护
  • 缺点:需要频繁地在核心态和用户态之间切换,性能低

②分层结构

内核分多层,每层可单向调用更低一层提供的接口
在这里插入图片描述

优点:

  1. 便于调试和验证,自底向上逐层调试验证
  2. 易扩充和易维护,各层之间调用接口清晰固定

缺点:

  1. 仅可调用相邻低层,难以合理定义各层的边界
  2. 效率低,不可跨层调用,系统调用执行时间长

③模块化

将内核划分为多个模块,各模块之间相互协作。

内核=主模块+可加载内核模块

主模块:只负责核心功能,如进程调度、内存管理
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核(驱动程序)

优点:

  1. 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
  2. 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
  3. 任何模块都以直接调用其他模块,无需采用消息传递进行通信,效率高

缺点:

  1. 模块间的接口定义未必合理、实用
  2. 模块间相互依赖,更难调试和验证。

分层结构也可以看作模块化,分层结构有跟清晰的模块调用方向。

④ 外核(比较少见)

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源(即外核直接给进程分配连续的磁盘块或物理内存,不是虚拟内存,性能提升),且由外核负责保证资源使用安全。

优点:

  1. 外核可直接给用户进程分配"不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源
  2. 减少了虚拟硬件资源的"映射层"(不需要查页表了,因为外核分配的就是真实的物理内存),提升效率。

缺点:

  1. 降低了系统的一致性。
  2. 使系统变得更复杂。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/112218
推荐阅读
  

闽ICP备14008679号