输入输出控制方式



通常,如果外部设备要与存储器进行数据交换,则必须通过CPU执行输入输出指令以及存储器读写指令来完成的。一般而言,CPU管理外围设备的输入输出控制方式有5种:程序查询方式、中断方式、DMA方式(直接内存存取)、通道方式、外围处理机方式,前两种方式由软件实现,后三种方式由硬件实现。

一,程序实现

1.
程序查询方式

程序查询方式是要CPU不断使用指令检测方法来获取外设工作状态。CPU与外围设备的数据交换完全依赖于计算机的程序控制,在进行信息交换之前,CPU要设置传输参数,长度等,然后启动外设工作;外设则进行数据传输的准备工作,在外设准备数据时间里,CPU除了循环检测外设是否已准备好之外,不能处理其他业务,只能一直等待;直到外设完成数据准备工作,CPU才能开始进行信息交换。造成CPU的运行效率极低。

特点:

(1)CPU的操作和外围设备的操作能够完全同步,硬件结构也比较简单。

(2)造成CPU的运行效率极低。

在当前的实际应用中,除了单片机之外,已经很少使用程序查询方式了。

2.
中断方式

中断是主机在执行程序过程中,遇到突发事件而中断正在执行的程序,转而对突发事件进行处理,待处理完后继续原程序的执行。

严格来说,当一个中断发生时,外设发出“中断请求”,CPU暂停其现行程序,保护程序断点地址,把中断处理程序入口地址送入寄存器中进行了中断响应,转而执行中断处理程序,完成数据I/O工作,也就是中断处理;当中断处理完毕后,CPU又返回到原来的任务,并从暂停处继续执行程序。也就是把中断响应保存起来的断点地址重新送回指令指针寄存器,进行了中断返回操作。

特点:

(1)节省了CPU时间,是管理I/O操作的一个比较有效的方法。

(2)与程序查询方式相比,程序中断方式的硬件结构相对复杂一些,服务成本较大。

中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即执行。

3. DMA方式

DMA方式就是直接存储器存取(Direct Memory Access)方式,是一种完全由硬件执行I/O交换的工作方式。

特点:

(1)DMA控制器从CPU完全接管对总线的控制权,数据交换不经过CPU而直接在主存和外围设备之间进行,以便高速传送数据。

(2)数据传送速度很高,传送速率仅受限于主存的访问时间。

(3)与程序中断方式相比,这种方式需要更多的硬件,适用于主存和高速外围设备之间大批量数据交换的场合。

二,硬件实现方式

1.
通道方式(IOP)

通道是一个具有特殊功能的处理器,又称为输入输出处理器(IOP),它分担了CPU的一部分功能,可以实现对外围设备的统一管理,完成外围设备与主存之间的数据传送。

特点:

(1)DMA方式的出现减轻了CPU对I/O操作的控制,使得CPU的效率显著提高,而通道的出现则进一步提高了CPU的效率。

(2)这种效率的提高是以增加更多的硬件为代价的。

2.
外围处理机方式(PPU)

外围处理机(PeripheralProcessor Unit,PPU)方式是通道方式的进一步发展。基本上独立于主机工作,它的结构更接近于一般的处理机,甚至就是微小型计算机。在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务,从某种意义上说,这种系统已经变成了分布式多机系统。

特点:

(1)外围处理机基本上独立于主机,使得计算机系统结构有了质的飞跃,由功能集中式发展为功能分散的分布式系统。

(2)能分析处理较复杂的工作。

综上所述,程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而DMA方式、通道方式和外围处理机方式则适用于数据传输率比较高的外围设备。

时间: 2024-08-29 07:16:02

输入输出控制方式的相关文章

IO相关的知识点:输入输出控制方式

前言: 博主最近在温习操作系统原理相关的知识点,分享给那些志同道合的朋友,某些地方如果存在争议的,欢迎加Q讨论.计算机的知识实在是太多太多了,像个无底洞,不专门做学术研究,博主觉得对它的了解还是适可而止. 简介: 我们都知道计算机分为五大基本部件:运算器.控制器.存储器.输入设备和输出设备.其中,IO设备主要是由设备控制器和设备本身共同组成,其中设备控制器是集成在电路板上的一块芯片或者一组芯片,主要用于接收,识别从cpu发来的命令,并控制IO设备工作.每个控制器都有少量的用于通信的寄存器,每个寄

10.3 输入输出的控制方式

计算机组成 10 输入输出设备 10.3 输入输出的控制方式 现在看来,跟外界交互也没有那么复杂嘛.跟以前与存储器的交互差不了多少,我给一个地址,得到一个数:或者给一个地址,写进去一个数,这样就跟外设进行交互了.这么说也不是不对,最简单的情况确实是这样的.那我们也不妨从这最简单情况开始说起吧. CPU控制外设进行输入输出的方式主要有三种. 程序控制方式 中断控制方式 直接存储器访问方式 那我们先来看第一种程序控制方式.我们还是用这个并行接口作为例子,来讲解程序控制方式是如何工作的. 程序控制方式

shu_1171 十->二进制转换(输入输出控制)

http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=19 分析:主要是输出格式控制 "对于每个n,以11位的宽度右对齐输出n值": 即包括该数在内一共11位,右对齐为printf的默认方式,所以用 %11d  来解决. 另外, 输出左对齐与右对齐,需在指定输出长度的时候才有意义: 如无指定长度,则输出从行首开始,有多长输出多长: 左对齐: %-11d 实例: #include <stdio.h> i

10.4 中断控制方式

计算机组成 10 输入输出设备 10.4 中断控制方式 那原本为了好好看书好好进行运算(把CPU运算类比成看书),我就不出去吃中饭了,定了一份外卖.结果呢?为了能收到这份外卖,我不得不总是去校门口看一看外卖来了没有.看一遍,又看一遍,再看一遍,再看一遍.那结果一上午,啥书都没有看成,这样就不合算了.我都还不如玩会儿游戏呢,折腾这个干嘛?那怎么解决呢?我们得追加投资,增加一个设备.我们装一部电话.然后跟送外卖的说好,你到了校门口就给我打电话.这样呢我就可以安心地坐在这先玩游戏了,玩的很开心,突然电

ZeroMQ接口函数之 :zmq_proxy_steerable – 以STOP/RESUME/TERMINATE控制方式开启内置的ZMQ代理

ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ————————————————————————————————————— ZeroMQ 官方地址:http://api.zeromq.org/4-1:zmq-proxy-steerable zmq_proxy_steerable(3)      ØMQ Manual - ØMQ/4.1.0 Name zmq_proxy_steerable – 以STOP/RESUM

Python的线程&amp;进程&amp;协程[1] -&gt; 线程 -&gt; 多线程的控制方式

多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程同步控制.一般Condition内部都有一把内置的锁对象(默认为RLock),对于Condition的使用主要有以下步骤: 建立两个线程对象,及Condition对象; 线程1首先获取Condition的锁权限,acquire(); 线程1执行需要完成的任务后,调用等待wait(),此时,线程1会阻

项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示

1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 7. 基于treegrid实现菜单展示 2 常见的权限控制方式 2.1 url拦截实现权限控制 shiro基于过滤器实现的   2.2 注解方式实现权限控制 底层:代理技术     3 基于shiro的url拦截方式验权   <!-- 配置过滤器工厂 --> <bean id="

I/O控制方式

1.1 程序直接控制方式 如图(a)所示,CPU给设备控制器发出数据存取命令,设备控制器控制设备进行存取操作,此时CPU轮询设备状态寄存器的忙状态,直到设备状态寄存器指示设备不忙且设备数据寄存器中有数据,CPU将设备数据寄存器中的数据写入存储器中. 1.2 中断驱动方式 如图(b)所示,中断驱动方式允许CPU在等待设备存取操作的同时处理其他事务,设备存取完成后通过控制总线给CPU发出中断信号,CPU在指令周期结束时检查中断,保存当前进程上下文,执行中断处理程序,将数据从设备数据寄存器写入存储器中

总结权限控制方式 ----------(2)

1. URL拦截方式:在spring配置文件中配置过滤器链:配置项目请求对应拦截规则   2. 注解方式: a)开启注解扫描   b)service方法使用注解 验证当前用户是否有权限,当没有权限时候,shiro框架抛出异常: 解决:在Realm中给用户进行授权下:给当前用户增加权限即可 3. 页面标签实现权限控制 a) 导入标签库 <%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %&g