操作系统中断

中断的引入是为了支持cpu和设备之间的并行操作

异常的引入是为了表示cpu执行指令时本身出现的问题

下面我们介绍中断与异常机制 那么这个机制是操作系统的一个 驱动力,非常重要。
操作系统当中 中断和异常机制就好比是汽车中的发动机,或者是飞机引擎 靠它来驱动操作系统的运行。
我们 有的时候是可以这么说的,操作系统是由中断驱动的 当然了也可以说是由事件驱动的。 那么有了这个机制 操作系统就可以做很多的事情,
比如说 操作系统就可以及时地来处理各种各样的外部设备 发来的一些请求。 也可以使得操作系统 可以及时地捕获到了用户程序提出的各种服务 同时,
有了这个机制还可以防止用户 在执行过程中有意识或者是无意识的一些破坏性的活动 等等,所以有了这样一个机制,操作系统就可以做更多的事情
我们来介绍一下中断与异常的概念 所谓中断与异常,实际上是 CPU 对系统发生的某个事件的一种反应 当这个事件发生的时候 通过对这个事件的处理 实际上是改变了一个控制流
我们通常说事件的发生改变了 CPU 的一个控制流 那么怎么改变呢?我们来看一下。 发生了事件之后 CPU 会暂停正在执行的程序 保留现场。 然后呢 自动去处理,
去执行对这个事件的处理程序 完成了这个处理过程之后,返回到断点 继续执行刚才被打断的程序。 这是一个对 中断和异常这样一个事件发生之后 如何改变控制流的一个描述
从这个描述当中呢,其实我们会看到了 有几个重要的特点。 一个特点呢 是中断或异常这个事件呢是随机发生的 我们在何处发生?什么时候发生? 事先呢是不能判断的。
第二呢 中断和异常的这个处理呢是一个自动处理的过程 所谓自动处理的过程呢我们是想强调这个过程是由硬件来完成的 硬件自动地完成整个控制流的转移工作 第三个特点呢是
中断和异常事件发生之后呢是可恢复的 所谓可恢复呢就指的是被打断的 这个事件完了之后被打断的这个程序可以在以后某个时刻呢再接着执行
所以这是对中断和异常的一个初步的介绍 那么我们通过历史的背景 来讲一下为什么引入中断与异常 首先,中断的引入
实际上是为了支持 CPU 与外部设备的一个并行操作这样一个能力 早期的计算机系统,如果没有中断机制的话 那么 CPU 要负责对设备的所有工作的管理
但是有了这样一个中断机制之后呢 我们就可以这样来工作了。 CPU 呢会去启动 输入输出设备的工作。 启动做完了之后呢 设备本身就可以独立自己进行工作了
而 CPU 这个时候呢可以转去处理一些和这次输入输出没有关系的事情 那么当然,当设备完成了它的任务之后 它通过什么样的方式告诉 CPU 呢?
实际上是通过了中断。 那么外部设备 去通过中断向 CPU 报告我这次输入输出的结果 让 CPU 来决策下面该做什么事情。
所以它是一种 向 CPU 发中断呢是一种向 CPU 汇报的手段 这是最早为什么引入中断机制,是为了让 CPU 和设备能够并行工作 但是设备完成工作之后呢要向 CPU 汇报,
所以引入了中断 那么异常呢?异常呢主要是 表示 CPU 在执行过程中自身出现的一些问题 比如说在执行过程中出现了算术溢出 除零,或者是取数的时候呢奇偶交元错
也可能访问内存的时候呢地址越界 或者是刻意安排了一个特殊的陷入指令 那么这个时候硬件呢会改变 CPU 的当前的一个控制流程 然后去转去执行对错误的处理
对异常的处理或者是执行相应的系统服务 那么早期呢,是不区分 中断和异常的,都叫中断,我们其实都统称为中断 但是随着它们发生的原因不同,处理的一些 过程不同,
那么就有了中断和异常的这么一个区分 但是我们在讲课的过程中 在讨论的过程中,有的时候 在不影响它的,这个对它的理解的情况下
我们可能就用中断来代表了中断和异常的各种事件 有的时候我们会这样,这是为了简化一些说法 那么这是关于中断和异常为什么引入 下面让我们放松一下,
我们举一个日常 生活中的例子来体会一下中断和异常的一个区别 小明选了这门课 那么他呢要好好学习操作系统 那么他作为一个 CPU 呢正在看书,
那么去 今天的内容呢是学习中断,今天要学习的内容是中断 这个时候呢在学习的过程中,大家看到 来电话了,电话铃响了,那么小明呢要先接个电话 然后呢再来看书。
那么这个时候他要 为了继续能够看书呢要在刚才被打断的地方呢要放个书签 然后呢他就去接电话去了 那么接电话呢就相当于我们说的中断的处理过程
当完成了这样接电话的任务处理之后呢 小明呢接着从刚才那个书签的地方接着来学习中断的知识 那么这就是中断。 我们再来看看异常
小明今天要学呢是异常的这个概念 那么他非常刻苦地学习,花了很长时间 结果呢学习这个异常 在学习过程中呢突然觉得口渴了 那么他决定先喝口水然后再来学
像刚才一样,他也要在 打断的地方放一个书签以便待会儿接着学习 那么喝水的过程,实际上就我们把它看成是一个异常处理的一个 执行过程。 当他喝完水之后,
接着回去 继续来学习异常的知识 通过这么一个日常生活中的例子呢我们可能会体会到中断和异常的不同点 下面我们来看看对中断和异常的具体的 事件的划分。
中断和异常实际上呢我们都把它可以叫做事件 那么中断呢,也可以称为外中断 异常呢我们一般叫内中断,这也是可以这么说的 我们来看看有哪些中断的事件呢?
有 I/O 中断,输入输出中断,有时钟中断 还有硬件故障中断。 希望大家对 不同的中断类型呢能举出一两个例子 我们来看一下 I/O 中断 比如说
,我们在键盘上按了 Ctrl + C 比如说网络上来了一个包,网卡接收到一个新的包,数据包 比如说打印机结束了 或者是读盘结束了 那么这样一些事件的发生,
其实呢都是带来的是 I/O 中断 那么时钟中断呢,比如说我们设定了一个定时器 到点了,上,CPU 上运行的程序它的时间片到了,那么这些呢我们都 称之为时钟中断。
硬件故障中断呢我们可以举一个例子,比如说笔记本电脑 快没电了,这个电池快没了,快用完了 消耗完了,那这时候它要报警,提示你赶紧存盘或者是 充电。
那么这呢就属于硬件故障中断 读内存的时候呢,奇偶校验错呢也是一个比较典型的硬件故障中断 下面我们来看看有哪些具体的异常的事件 异常呢有很多
我们刚才说的一个典型的异常,系统调用其实是属于异常的 还有页故障或者叫页错误异常 那么我们在第一讲当中介绍 HelloWorld 程序执行过程中
第一条指令执行的时候产生了一个缺页异常,因为 要执行的代码在磁盘上还没有读入内存,那么这个时候 执行到这里的时候会,硬件会产生一个 叫做页故障,
那我们具体的页故障就是缺页异常 保护性异常。 比如说一块内存空间 它呢标记成只读。 当要做一个写的操作 这个就冲突了,操作和它的权限冲突了,
所以这时候呢会引发一个保护性异常 如果要访问一个这个内存空间 那么访问的这个区域的地址越界了,那么也算保护性异常 还有就是断点指令,
包括了我们说我们要调试程序,我们要设置 单步的调试,那么这样的话呢就要设置这样一个断点指令 你这样的话呢这就是一个异常。
当然还有很多的异常我们称之为程序性 异常。 程序性异常我们都比较常见,比如我们前面说的 算术溢出啊,除零啊,栈溢出等等都属于程序性异常 好,
那么根据刚才那个日常中的例子和我们现在 举的例子我们可以归纳总结出来,所谓中断呢是外部事件 在 CPU 之外产生的事件打断了 CPU
那么这些事件呢是正在运行的程序所不期望的 异常呢是由正在执行的指令而引发的 这样我们可以区别一下中断和异常 那么我们最后呢 对中断和异常呢再做一个小结。
中断 实际上是来自各种各样的外部设备和一些硬件部件 那么它是个异步的事件。 在处理完中断之后 通常我们是返回到下一条指令 第一条指令执行完了,
那么前一条指令执行完了 那么处理中断,返回到下一条指令执行 那么异常呢又分为三类 一类呢我们叫做陷入 一类叫做故障,
一类叫做终止 那么陷入呢实际上是程序中刻意 安排的,有意识安排的,比如说我们安排的那条陷入指令 这是一条特殊的向操作系统提出请求的指令,
那么这是刻意安排的 那么在处理完相关的事件之后呢是返回到下一条指令 如果在执行这条指令的时候呢发生了故障 那么这个时候这个故障又是可恢复的,那么 去做处理
,最后返回到刚才发生故障的这条指令,返回到当前指令 那么如果发生了 一个事件,一个故障,这个故障呢是 不可恢复的,那我们把它称之为终止,也就是说 当发生这样的事件,
那么就不会返回了 就退出了,因为出错了,而且是不可恢复的错 那么这张表呢把中断和异常做了一个很好的 小结

时间: 2024-10-01 04:16:53

操作系统中断的相关文章

inux IO 内核参数调优 之 参数调节和场景分析

http://backend.blog.163.com/blog/static/2022941262013112081215609/ http://blog.csdn.net/icycode/article/category/5966733 http://blog.sina.cn/dpool/blog/s/blog_b374c0f30102wboi.html 1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总

iOS崩溃前日志记录实现

如何使用Signal 因为错误抛出Signal,必须要专门做Signal处理. 在计算机科学中,信号(英语:Signals)是Unix.类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式.它是一种异步的通知机制,用来提醒进程一个事件已经发生.当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断.如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数. 在项目工程中,要使用 #include <sys/signal.h>

Linux驱动开发常用头文件

头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下: 1.主目录 <a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏.<const.h>:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位.<ctype.h>:字符类型头文件,定义了一些有关字符类型判断和转换的宏.<errno.h>:错误号头文件,包含系统中各种出错号.(

操作系统2015(四川大学软件学院)

1.操作系统是计算机系统的一种系统软件,它统一管理计算机系统的资源和控制程序的执行. 2.OS几大特征(1)并发(Concurrence),共享(Sharing),虚拟(Virtual),异步性(Asynchronism). (2) 其中最基本特征是并发和共享. 3.设计现代OS的目标是方便性,有效性,可扩充性和开放性. 4.批处理操作系统?用户准备好要执行的程序.数据和控制作业执行的说明书,由操作员输入到计算机系统中等待处理.操作系统选择作业并按作业说明书的要求自动控制作业的执行.采用这种批量

UNIX环境编程学习笔记(23)——信号处理初步学习

lienhua342014-10-29 1 信号的概念 维基百科中关于信号的描述是这样的: 在计算机科学中,信号(英语:Signals)是 Unix.类 Unix 以及其他 POSIX 兼容的操作系统中进程间通讯的一种有限制的方式.它是一种异步的通知机制,用来提醒进程一个事件已经发生.当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断.如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数. 关于这段描述,我们可以从中学习到下面几点关于信号

分析python性能

python性能分析 阅读目录 调优简介 Python基于事件的性能分析器的简单示例代码 Linux统计式性能分析器OProfile(http://oprofile.sourceforge.net/news/)的分析结果: 性能分析的重要性 性能分析的内容 内存消耗和内存泄漏 过早优化的风险 运行时间复杂度 性能分析最佳实践 回到顶部 调优简介 什么是性能分析 没有优化过的程序通常会在某些子程序(subroutine)上消耗大部分的CPU指令周期(CPU cycle).性能分析就是分析代码和它正

操作系统原理3——多道程序

本章考核知识点: 1.多道程序设计 2.进程 3.进程状态 4.进程控制块 5.进程队列 6.可再入程序 7.中断及中断响应 8.中断优先级 9.进程调度 自学要求:通过本章学习应该掌握多道程序设计是如何提高计算机系统效率的:进程与程序有什么区别:进程的基本状态以及状态变化:进程队列及进程调度策略:中断的作用. 重点是:多道程序设计:进程的定义和属性:进程调度策略. 一. 多道程序设计( 领会 ) 1.什么是多道程序设计. 让多个计算问题  同时装入  一个计算机系统的主存储器并行执行,这种设计

从输入URL到页面加载完成的过程中都发生了什么事情?

为了便于理解,我将整个过程分为了六个问题来展开. 第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接覆盖在显示屏上的,不过最近出现了 3 种嵌入到显示屏中的技术,第一种是 iPhone 5 的 In-cell,它能减小了 0.5 毫米的厚度,第二种是三星使用的 On-cell 技术,

[转]从输入url到页面加载完成的过程中都发生了什么事情

第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接覆盖在显示屏上的,不过最近出现了 3 种嵌入到显示屏中的技术,第一种是 iPhone 5 的 In-cell,它能减小了 0.5 毫米的厚度,第二种是三星使用的 On-cell 技术,第三种是国内厂商喜欢用的 OGS 全贴合技术,具体