我们都知道通常CPU与I/O之间传输数据有三种方式-----程序方式,中断方式和DMA方式.最近听说了一个很恰当的来理解这三个方式的例子,和大家一起分享一下:
首先,程序方式(也称程序查询方式)它又可以分为无条件查询和条件查询.用举例来说明这两者之间的不同就是:幼儿园的老师给孩子发糖果吃(老师相当于CPU,孩子们相当于外设),当他们在无条件方式下工作时候,老师不停的给孩子们发糖果,不顾及孩子有没有吃完,会不会噎着.而当他们在条件查询方式下时,老师不停的问孩子们有没有吃完?谁吃完了,就给谁发糖果.这样看来条件查询比其无条件查询来说更节省CPU一些.
其次,中断方式.老师在讲台上修改作业,当其中有哪个孩子的糖果吃完了,他就举手向老师要糖果.而老师在正在修改的作业旁边做个记号,然后去给吃完糖果的同学发糖果,发完糖果后老师又接着改作业.这样就更加的节省CPU了.
再次,DMA方式.这时候班里来了一个助教(相当于DMA控制器)管理孩子们的日常生活,当孩子(外设)向吃糖果的时候,就向助教要,这时候助教就去向老师申请,老师(CPU)同意了,就把整包糖果发给助教,将由她来给孩子们分配.而老师就可以在那里安心的改作业了.
备注:CPU与外设之间传输的信息包括:控制信息,数据信息,状态信息.