Linux操作系统基础之中止1

Linux操作系统基础之中断1

Linux操作系统基础之中断1

       当你正在打单机游戏时,突然快递员让你去取快件,你就暂停当前游戏先去把快递取回,再继续玩游戏,这个描述大体叙述出了一个中断的执行过程,但不够细,也不能很好的理解。对于计算机来说,当CPU执行程序指令时,需要处理外部硬件请求时,挂起当前程序,继而去执行中断处理程序,处理完后继续运行挂起的任务。在这个过程中最重要两个问题:当CPU去执行中断处理程序之前如何保存当前程序信息,需要保存的信息有哪些,以便在处理完中断处理程序后恢复执行之前的程序?再者CPU怎么去找中断处理程序的?当然还需了解其基本知识,比如中断分类等。今天先讲下基础部分。

       何为中断?何为异常?把中断和异常搞在一起真让人头疼。其实异常也是中断,其原理都是一样的,只不过把一种事物分成两大类,比如人,分男人和女人;那么中断,分同步中断和异步中断。为了起个好名字,叫起来响亮,听起来高深,就把同步中断叫异常,异步中断就直接叫中断,他们最主要的区别就是中断的产生源不一样,同步中断由CPU本身产生;异步中断由外部硬件产生(所以异步中断也叫外部中断)。同步中断进一步细分,又可分为:故障、陷阱和中止。

       对于外部中断分可屏蔽中断和不可屏蔽中断,不可屏蔽中断好理解,不管如何,此时硬件是老大,让你CPU好好把这事干了,你就立马给我干好,不可推脱;可屏蔽中断就不一样了,这要看CPU的心情了,当CPU的标志寄存器(EFLAGS)中的IF(中断允许标记)为1时,表示允许中断,你来中断我就给你处理(CPU很忙很忙时也处理不了那么多,那就只能排队了);IF为0时就不一样了,无论你怎么发送中断请求,我就不响应你,也就不会执行中断过程。中断分类如下图。

Linux操作系统基础之中止1

       一开始就去看这一堆东西时,肯定看的迷糊,也记不住那么多,其实一开始并不需要把这些东西记住,等看到后来,慢慢的就会理解,那时等你想把看过的东西整理一下时,就会有上面那种框图出现。

       理论的东西写起来就是累,字斟句酌也不一定写的完美。