前言
中断是为了多任务操作系统实现多任务的切换,需要考虑的问题是,每个进程对应的任务描述符是什么
IO概述
为了管理不同的外设,在CPU与外设之间引入IO接口。对于某一个IO接口,通过IO接口中的寄存器和CPU进行通信,这个寄存器称之为“端口”。所以当CPU想要从端口中获取数据,或者往端口中写入数据的时候,可以通过in和out指令来执行相应的端口号,如in al, dx; in ax, dx
地址总线与数据总线逻辑隔离,但实际上可能是同一个总线。

IO硬件概述
外设与CPU、内存的连接关系
外设通过PIC的INTR 通知中断。如,键盘有一个
硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)

|  |
驱动概述

中断
各种硬件的中断会先和PIC交互,PIC再和CPU连接

interrupt和exception:
在向量表中,前32位留给exception,之后才会给interrupt

陷阱、 异常 、中断 区别
- trap:陷阱可以使程序从用户态进入内核态。如果一个用户程序需要使用的资源是被限制的,或者使用内核函数,那么就会进入trap。同步,常被称为软中断
- 中断:中断通常是由外部的设备引起的,比如键盘、时钟等。异步
- 异常:异常指程序运行过程中的异常行为,比如除0,缓冲区溢出等。是同步的
这三者的处理函数相同,被称为中断服务程序ISR。
前半与后半
前半: 完成尽可能少又紧急的功能
后半:中断处理的大部分工作都在底半部,它几乎做中断处理程序的所有事情
如果一个中断对应的工作很快就能完成,那么一般都会以同步的方式处理,而如果一个中断的处理过程可能花费很长时间的话,可能就会分成两段,前一段已同步的方式处理关键性的任务,后一段以异步的形式处理次要任务

不同的后半实现
在linux系统中,存在三种后半实现方式:softirq、tasklet、workqueue