LPI 101 考试准备: 硬件和体系结构(5)

那么,CPU 如何知道最后一次输出何时完成?或者何时有数据在等待读取?通常,在一个状态寄存器中可以获得此信息,通过读取与某设备想关联的一个(或多个)IO 端口可以访问它。在这种情况下会出现两个问题。首先,CPU 不得不花费时间来检查状态。其次,如果设备持有来自某处的数据,比如连接的调制解调器,那些数据必须要及时被读取,否则就可能被下一个可用的数据字节所覆盖。

不浪费多余 CPU 周期,并确保数据能被及时读写,这两个问题是由 中断(interrupt) 的概念所解决的。中断也称为 中断请求(Interrupt Requests) 或 IRQs。当设备中发生 CPU 需要知道的某事件时,设备就会发出一个中断,CPU 则临时停止正在做的其他工作,来处理那件事情。

根据上一节的经验,毫无疑问关于中断的信息也保存在 /proc 文件系统中,在 /proc/interrupts 中。运行 cat /proc/interrupts 命令,可以看到类似于清单 4 的输出。


清单 4. /proc/interrupts
CPU0 0: 226300426 XT-PIC timer 1: 92913 XT-PIC keyboard 2: 0 XT-PIC cascade 5: 0 XT-PIC usb-uhci 8: 1 XT-PIC rtc 9: 2641134 XT-PIC ehci-hcd, eth0, Intel ICH4 10: 0 XT-PIC usb-uhci 11: 213632 XT-PIC usb-uhci 14: 1944208 XT-PIC ide0 15: 3562845 XT-PIC ide1 NMI: 0 ERR: 0  

这一次,中断数字是从 0 到 15 的十进制数。同样,将这些中断与清单 5 所示的 PC 标准 IRQ 分配进行比较。


清单 5. 标准 IRQ 设置
IRQ 0 - System Timer IRQ 1 - Keyboard IRQ 2(9) - Video Card IRQ 3 - COM2, COM4 IRQ 4 - COM1, COM3 IRQ 5 - Available (LPT2 or Sound Card) IRQ 6 - Floppy Disk Controller IRQ 7 - LPT1 IRQ 8 - Real-Time Clock IRQ 9 - Redirected IRQ 2 IRQ 10 - Available IRQ 11 - Available IRQ 12 - PS/2 Mouse IRQ 13 - Math Co-Processor IRQ 14 - Hard Disk Controller IRQ 15 - Available  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27805.html