OS(二十):设备管理之 中断、驱动程序
1、中断处理程序
中断处理程序的主要工作:进程上下文的切换、对处理中断信号源进行测试,读取设备状态和修改进程状态。
当一个进程请求I/O操作时,该进程将被挂起直到I/O设备完成I/O操作,设备控制器便向CPU发送一中断请求,CPU响应后便转向中断处理程序,中断处理程序执行相应处理,处理完后1结束相应进程的阻塞状态。
中断处理流程如下:
1.1、唤醒被阻塞的驱动进程
中断处理程序开始执行时,首先唤醒处于阻塞状态的驱动进程。若采用信号量机制,可执行signal操作;若采用信号机制,将发送一信号给阻塞进程。
1.2、保护被中断进程的CPU环境
由硬件自动将处理机状态字PSW和程序技术器PC中的内存,保存在中断保留区(栈)中,然后把被中断进程的CPU现场信息都压入中断栈中。
中断现场保护示意图:
1.3、转入相应的设备处理程序
处理机对各个中断源进行测试,以确定引起本次中断的I/O设备,并发送一应答信号给发出中断请求的进程,使之消除该中断请求信号,然后将相应的设备中断处理程序的入口地址装入到程序计数器中,使处理机转向中断处理程序。
1.4、中断处理
首先从设备控制器中读出设备状态,判别本次中断是正常完成的中断,还是异常结束的中断。
正常完成的中断,中断程序进行结束处理,若还有命令,可再向控制器发送新的命令,进行新一轮的数据传送。
异常结束的中断,根据发生异常的原因做相应的处理。
1.5、恢复被中断进程的现场
当中断处理完成后,可将保存在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中。
2、设备驱动程序
设备驱动程序,也叫设备处理程序,是I/O进程与设备控制器之间的通信程序,由于它常以进程的形式存在,故以后简称为设备驱动程序。
主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,在把它转换为具体要求后,发送给设备控制器,启动设备区执行,它也将由设备控制器发来的信号传送给上层软件。
2.1、设备驱动程序功能
接收命令和参数,并将命令中的出现要求转换为具体要求;
检查I/O合法性;
发出I/O命令;
及时响应由控制器或通道发来的中断请求。
2.2、设备驱动程序特点
驱动程序主要是指在请求I/O的进程和设备控制器之间的一个通信和转换程序;
驱动程序与设备控制器和I/O设备的硬件特性紧密相关,不同类型的设备应配置不同的驱动程序;
驱动程序与I/O设备所采用的I/O控制方式紧密相关;
启动程序可重入。