首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

计算机中断机制

计算机中断机制

现代计算机无一不实现中断机制,让各种执行速度不一的任务相互中断,抢占CPU。下表列出五种常见中断类型:
  •   程序性中断:在程序执行的过程中,发现了程序性质的错误或出现了某些特定状态而产生的中断。如浮点溢出、用户态下使用了特权指令、内存越界、跟踪等。
  •   外中断:对某个中央处理机而言,它的外部非通道式装置所引起的中断称为外部中断。例如,时钟中断、操作员控制台中断,多处理机系统中CPU到CPU之间的通信中断等。
  •   输入输出中断:它是当外部设备或通道操作正常结束或发生误时所发生的中断。例如:打印机打印完成、缺纸,读磁盘时相应驱动器中没有磁盘等。
  • 硬件故障中断:当机器发生故障时的中断叫硬件故障中断。例如,电源故障、内存单元奇偶校验错。
  •   访管中断:对操作系统提出某种请求时所发生的中断。例创建进程,I/O传输、打开文件、关闭文件、文件的读、写等系统调用。
中断的引入是为了提高CPU的利用率,因为很多外部设备远远慢于CPU的速度。假如CPU以如下的指令周期模式发送数据给打印机进行打印,每发出一个写操作CPU必须暂停并等待打印机把刚发送的数据打印才能进行下一个写操作。CPU的等待的时间可达到四五个甚至六个数量级(百万)个指令周期。


举一个具体的例子,假如CPU的速度是1G,指令执行速度约十亿条每秒(10^9)。一个一般的硬盘理想的情况下转速是7200转每分钟,每转半轨为4毫秒,也就是说比CPU慢4百万倍。
下图的A部分展示了这种没有中断处理的I/O操作。用户程序有两处的I/O操作。垂直实线代表程序(包括I/O程序)的代码段。

代码段1、2和3都没有I/O操作,不过它们之间有两处写操作,写操作会调用属于操作系统一部分的I/O程序。I/O程序由三部分组成:
第一部分是准备阶段。图中标号为4的部分,负责为实际的I/O操作作准备,包括拷贝数据到设备缓冲和为设备命令准备好参数。
第二部分是I/O命令执行阶段。也可以说是等待I/O阶段,因为没有中断机制时,操作命令一下达,I/O程序(也代表CPU)必须等待IO设备完成指定任务,I/O程序能作是只不断地测试设备的状态寄存器,看看设备完成工作没有。
第三部分是完成处理阶段。图中标为5的代码段。完成处理包括设置状态位标识IO操作的成功与失败。
  图中虚线代表处理器的执行路线,也就是指令的执行序列(KEMIN:程序代码与处理器执行是一体两面,经常分开讲,其实经常指是是一个东西)。
  由于I/O操作一般需要一个相对较长的时间完成,所以I/O程序(也包括用户程序)在IO操作期间被挂起,甚至整个系统都在等待。
  P.S.没有中断机制的I/O操作,I/O处理例程更像是用户程序的一部分,像是一个子程序的调用,完全同步,没有上下文切换。
继承事业,薪火相传
返回列表