1. 中断/通道技术和多道程序概念
多道程序依赖于中断技术/通道技术,多道程序并发执行是指有的程序正在CPU上执行,而另一些则在I/O设备上进行传输,即通过CPU操作与外设传输在时间上的重叠必须有中断和通道技术的支持,其原因有如下:
- 通道是一种控制一台或多台外部设备的硬件机构,一旦被启动,就会独立于CPU运行,因而做到了输入/输出操作与CPU并行工作。但早期CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU和I/O设备并行工作的。
- 硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
因此,通道技术和中断技术结合起来就可以实现CPU和I/O设备并行工作,即CPU启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真的做到了CPU和I/O设备并行工作。此时,多道程序的概念才会变为现实。
2. 访管指令和访管中断
访管指令是一条可以再用户状态下执行的指令。再用户程序中,因要求操作系统提供服务而使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断 。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
为何要在程序中引入访管指令? 这是因为用户程序只能再用户态下进行。若用户程序想要完成用户态下无法完成的工作,则就需要依靠访管指令。访管指令本身并非特权指令,其基本功能就是让程序拥有“自愿进管”的手段,从而引起访管中断。
处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按照系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,推出中断,返回到用户程序断点继续执行。