软考在线  |  计算机技术与软件专业技术资格(水平)考试   |   [请选择科目]
[ 成为 VIP会员 ]        登录  |  注册      我的  购物车
0
 
科目切换  联系我们 
    
  |   [请选择科目]

VIP:有效提升20分!  真题  历年真题 (可免费开通)/  百科全书/ 机考模拟平台/  最难真题榜/  自测/  攻打黄金十二宫/  真题检索/  真题下载/  真题词库
知识   必会知识榜/  最难知识榜/  知识点查询/      文档   学习计划/  精华笔记/  试题文档     纸质图书   《百科全书》HOT!!/         /        首页/  专区/  手机版/ 
首页 > 知识点讲解
       I/O控制方式
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 设备管理 > 设备管理方式(设备文件、设备控制、设备无关性、中断处理、缓冲技术、假脱机技术等) > 
被考次数:1次     被考频率:低频率     总体答错率:61%     知识难度系数:     
考试要求:掌握      相关知识点:6个      
        I/O设备的控制方式主要有三种:程序循环检测、中断驱动和直接内存访问。
               程序循环检测方式
               程序循环检测方式的基本思路是:在程序当中,通过不断地检测输入/输出设备的当前状态,来控制一个输入/输出操作的完成。具体来说,在进行输入/输出操作之前,要循环地去检测该设备是否已经就绪。如果是,就向控制器发出一条命令,启动这一次的输入/输出操作。然后,在这个操作的进行过程中,也要循环地去检测设备的当前状态,看它是否已经完成。总之,在I/O操作的整个过程中,控制I/O设备的所有工作都是由CPU来完成的。这种方式也称为是繁忙等待方式或轮询方式。它的缺点主要是:在进行一个输入/输出操作的时候,要一直占用着CPU,这样就会浪费CPU的时间。
               下图是循环检测方式的一个例子。假设I/O地址采用的是内存映像编址方式,现在需要在打印机上打印一个字符串“ABCDEFGH”。对于操作系统来说,要完成这个任务,其实很简单,只要把这8个字符一个接一个地送到打印机设备的I/O端口地址就可以了。如下图(a)所示,这8个字符被保存在系统内核的一个缓冲区当中,并用指针p来指向它们。status_reg这个内存单元对应于打印机控制器里面的状态寄存器,data_register这个内存单元对应于它的数据寄存器,现在要做的事情,就是把这8个字符一个接一个地放到数据寄存器当中。
               
               程序循环检测方式的例子
               上图(b)是相应的程序。它的基本思路是:逐个地去打印字符。在打印一个字符之前,首先用一个while语句来检测打印机的当前状态,看它是否已经就绪。如果还没有就绪,就在这里循环等待;如果已经就绪,就把当前的字符送入到打印机的数据寄存器当中。在本例中,由于采用了内存映像的编址方式,因此,在程序员眼中,状态寄存器和数据寄存器都被看成是普通的内存单元,对它们的访问也是普通的赋值操作,不需要专门的I/O指令。但是这个赋值操作的功能和普通的赋值操作不同,它相当于是给打印机发出了一个命令,让它去打印一个字符。另外,每次打印完一个字符后,都要重新判断设备是否就绪。因为相对于CPU来说,打印机是一个慢速设备,它在执行打印命令时,不可能像CPU那么快,而是需要一定的时间来完成。因此,当CPU把一个字符交给它之后,必须循环等待一段时间,才能去处理下一个字符。
               中断驱动方式
               中断驱动方式的基本思路是:当一个用户任务需要进行输入/输出操作时,会去调用相应的系统调用函数,由这个函数来发起输入/输出操作,并将当前任务阻塞起来,然后调度其他的任务去使用CPU。当所需的输入/输出操作完成时,相应的设备就会向CPU发出一个中断,系统在中断处理程序当中,如果发现还有数据需要处理,就再次启动输入/输出操作。在中断驱动的控制方式下,数据的每一次读写还是通过CPU来完成,只不过当输入/输出设备在进行数据处理时,CPU不必在那里等待,而是可以去执行其他的任务。
               仍以打印字符为例,如下图所示,在中断驱动方式下,对于用户程序来说,它所做的事情可能是:把需要打印的字符串放到一个缓冲区buffer中,然后调用一个系统调用函数print。在print系统调用中,首先把用户缓冲区中的字符串复制到系统内核的字符数组p当中,然后打开中断。接下来是一个循环检测语句,判断打印机的当前状态是否就绪。当打印机就绪后,就把第一个字符放到数据寄存器里面去打印。接下来,未等该字符打印完,就去调用系统的调度器,选择另一个就绪任务去运行。而当前的这个任务,就会被阻塞起来。
               
               中断驱动示例
               当打印机完成一个字符后,将向CPU发出一个中断。在中断处理程序当中,首先判断一下,如果所有的字符都已打印完,那么就去阻塞队列中,把用户任务唤醒,使它处于就绪状态。如果还有字符需要打印,就直接把下一个字符复制到打印机的数据寄存器当中,启动打印操作,而不需要再去循环地判断打印机是否就绪。接下来是一些后继处理,先向中断控制器发出一个确认信号,然后结束中断处理程序,返回到被中断的那个任务。
               直接内存访问方式
               直接内存访问(Direct Memory Access,DMA)方式的基本思路是:让DMA控制器来代替CPU,完成输入/输出设备与内存之间的数据传送,从而释放CPU时间,去运行其他的任务。
               仍以打印字符为例,如下图所示。在DMA控制方式下,用户程序所做的事情是完全相同的,即把字符串复制一个缓冲区buffer当中,然后调用系统打印函数。在打印函数当中,首先也是把buffer当中的字符串复制到系统内核的缓冲区当中。然后对DMA控制器进行编程,设置它的各个寄存器的内容,包括内存起始地址、需要打印的字符个数、数据传输的方向等。之后,打印函数就完成了任务,因此就调用系统的调度程序,选择另一个就绪任务去运行,而当前的这个任务就会被阻塞起来。接下来,当CPU正在执行这个新任务的同时,DMA控制器会与设备控制器进行交互,把需要打印的字符,逐个地送到打印机控制器当中。在所有的字符都打印完之后,就向CPU发出一个中断,表明这一次的I/O操作已经全部完成了。因此,在中断处理程序里面,已经没有什么实质性的工作。先是向中断控制器发出一个确认信号,然后唤醒刚才被阻塞的任务。
               
               直接内存访问的例子
               采用DMA控制方式的最大优点是减少了中断的次数。原本每打印一个字符,都要产生一次中断,而现在当所有的字符都打印完后,才会产生一个中断,从而减少了中断处理的开销。
 
本知识点历年真题:
隶属试卷 题号/题型 题干 难度系数/错误率
   2014年下半年
   嵌入式系统设计..
   上午试卷 综合知识
第48题
选择题
以下关于设备管理及虚设备技术的叙述中,不正确的是(48)。

61%
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。



京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2025 All Rights Reserved 软考在线版权所有