如果外设想要工作,那么他就必须去找CPU请求服务,只有得到CPU的批准,这样才可以为其分配计算机资源,让其完成任务。
随着进步,CPU与外设之间产生了4种访问方式。
1.轮询方式。
每隔一段时间CPU就会在一定的周期时间内按照一定次序向外设轮流发送询问,问下他们要不要使用计算机资源,如果需要,则进行相应的输入/输出服务;反之或者已经完成外设的I/O任务,CPU就接着查询下一个外设。
很明显,这是一位多么体贴的老妈子啊!但这种传输方式不利于提高CPU的效率,在询问外设上浪费很多的时间。于是,人们提出了中断查询的方式。
2.中断查询。
CPU只有在外设准备充足时,才会为其分配计算机资源。在速度较慢的外设准备自己的数据时,CPU照常干自己的事 。这就意味着,CPU和外设的一些操作是并行地进行的,因而同轮询的方式相比,计算机系统的效率是大大提高了。
拿一个例子来讲。课堂上,老师每讲完了一节课,都会答疑,老师不会每个同学都问,只有那些提前准备好了问题的同学,老师才会解决他们的问题,这样老师从主动就变为了被动,大大节省了答疑的时间。由此,衍生出了中断查询方式。
简单来说,就是CPU从轮询的像老妈子似的每个都关照,一有问题就服务,变为了后妈,你只有将解决问题的所有条件都准备好了,才为你服务。
但是由于中断方式会根据外设的优先级为其分配计算机资源,同时允许多重中断。譬如,现在有A,B两外设,优先级A>B,假设CPU现在正在处理B的请求,这时,A突然请求服务,那么CPU就需要保存A 的资源配置,成为保护现场,然后去执行B的服务命令。
由此可见,CPU在保护现场需要占用内存,无法避免的多重中断甚至会造成外设永久等待的问题。
3.DMA( 直接数据通道传送)方式。
外设不经过CPU直接与内存进行数据传递。这一般适用于高速设备或者频繁需要与内存进行数据交流的外设,为他们专门开辟一条VIP通道,避免了等待。
4.通道传输。
通道与DMA很类似,也是为外设开了一条VIP道路。具有通道的机器一般是大型计算机和服务器,数据流量很大。