中断是指 CPU 对系统发生某事件时的一种响应,即CPU 暂停正在执行的程序,在保留现场后,自动地转去执行该事件的中断处理程序,执行完后,再返回到原程序的断点处继续执行。
中断分为外中断和内中断。
中断会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权,中断是让操作系统内核夺回 CPU 使用权的唯一途径。如果没有中断机制,那么一旦应用程序上 CPU 运行,CPU 就会一直运行这个应用程序。
不同的中断信号,需要不同的中断处理程序来处理。当 CPU 检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
调用read()
申请的buffer
就是用户缓冲区
每次调用read()
的过程如下:
read()
方法向操作系统发起调用,此时上下文从用户态转向内核态read()
返回在没有 DMA 技术前,I/O 的过程是这样的: