设备控制器

设备控制器是CPU 与 I/O 设备之间的接口,它接收 CPU 发来的命令,去控制 I/O 设备工作,使 CPU 从繁杂的设备控制事务中解放出来。

当 CPU 要操作 I/O 设备时,首先要启动这个设备,一方面将启动命令发送给设备控制器,另一方面通过地址线将 I/O 设备的地址发给设备控制器,设备控制器的 I/O 逻辑对收到的地址进行译码,再根据所译出的命令对相应的设备进行操作。

由此看来,I/O 设备控制器的作用是 译码器+执行器

CPU 对 I/O 的操作命令并不是只有一条,而是多条的,因此操作一次 I/O 设备,首先 CPU 向设备控制器发送一条条命令,设备控制器接收到一条条命令,然后译码、执行。因此设备控制器一定程度上使 CPU 从 I/O 控制上解脱了出来,但并未完全解脱。这就有了 I/O 通道的产生。

I/O通道

关于 I/O 通道的工作流程详见这篇博文

I/O 通道实际上是一种特殊的处理机,并且其与 CPU 共享内存。

当 CPU 要操作某个 I/O 设备时,它并不需要一条条将 I/O 指令(称为通道程序)发送给设备控制器,只需要向通道发出 I/O 指令,指明这一条条指令在内存的什么地方,并且指明要操作的是哪个设备,然后 CPU 就可以去忙别的事情了。

I/O 通道接收要 CPU 发送来的这些信息之后,就可以从内存中找到并执行这个通道程序,即发送启动命令和一条条 I/O 命令给设备控制器;当对 I/O 设备的操作完成之后,通道向 CPU 发出中断信号,告诉 CPU 相应的操作已经完成。

由此看出,I/O 通道作为一种特殊的处理机(实际上就相当于早期的外围机),承担了原来 CPU 处理 I/O 操作的一部分功能,使得 CPU 从 I/O 操作种解放出来,CPU 和对 I/O 操作可以并行。

在引入 I/O 通道之后,I/O 系统结构形成了四级结构:

  • 最低级为I/O设备,
  • 次低级为设备控制器,
  • 次高级为I/O通道,
  • 最高级是 CPU。

关于设备控制器和 I/O 通道的理解的更多相关文章

  1. 操作系统-I/O(1)设备控制器

    I/O设备通常是物理上相互独立的设备,它们一般通过通信总线(电缆)与I/O控制器连接. 例如,图中IDE接口是通信总线而非I/O总线. I/O控制器(I/O接口)在扩展卡或者南桥芯片内,通过I/O总线 ...

  2. s3c2440存储控制器和地址以及启动的理解

    转自:http://blog.sina.com.cn/s/blog_5ddb672b0100fkcf.html 1.首先应该先了解Flash ROM的种类 NOR FLASH地址线和数据线分开,来了地 ...

  3. 学习OpenCV2——Mat之通道的理解

    本文详细介绍了opencv中涉及通道的知识,包括图像类型转换,通道合成分解,图像的显示. 来源:http://blog.csdn.net/GDFSG/article/details/50927257 ...

  4. 操作系统原理2——OS结构

    操作系统原理2——OS结构   计算机系统是由硬件系统和软件系统两部分组成, 操作系统是软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个 ...

  5. OS复习

    提纲 一 操作系统的定义,各章节名词定义. 分时多道- OS四大特征,五大功能. 二 进程 创建终止挂起激活 PCB 原语:创建终止挂起激活唤醒 互斥和同步,临界资源,临界区 信号量的基础概念,受保护 ...

  6. 操作系统原理之I/O设备管理(第六章上半部分)

    一.I/O系统的组成 I/O系统不仅包括各种I/O设备,还包括与设备相连的设备控制器,有些系统还配备了专⻔⽤ 于输⼊/输出控制的专⽤计算机,即通道.此外,I/O系统要通过总线与CPU.内存相连. I/ ...

  7. 设备驱动与控制器 I/O

    控制器是对硬件发起控制命令,负责给系统提供接口,想要正常使用该硬件功能系统中必须安装相应驱动 I/O设备 cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环. I/O设备一般 ...

  8. usb设备驱动描述,王明学learn

    usb设备驱动 本章主要内容包含以下:USB总线介绍,USB协议分析,USB系统架构 一.USB总线介绍 1.1USB发展史 USB(Universal Serial Bus)通用串行总线,是一种外部 ...

  9. 计算机原理学习(2)-- 存储器和I/O设备和总线

    前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都 ...

随机推荐

  1. VS code远程连接Linux 开发C++ 配置详细介绍

    VS code 远程连接服务器,编译C++ 一.前期准备 1.VS code安装 Remote-SSH插件 2.Windows安装SSH. 3.Linux服务器连接测试. a.接通测试使用ping命令 ...

  2. gin框架中的会话控制

    Cookie介绍 Http协议是无状态的,服务器不能记录浏览器的访问状态,也就是说服务器不能判断请求的客户端是否已经登录 Cookie就是解决http协议无状态的方案之一 Cookie实际上就是服务器 ...

  3. springmvc复习导图

    spingmvcweb请求

  4. 集合框架-LinkedHashSet集合(有序唯一)

    1 package cn.itcast.p4.hashset.demo; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 im ...

  5. APC 篇——备用 APC 队列

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  6. Linux 系统conda环境,pip文件的导出和安装。

    /** * 注意:1.在当前的Linux系统中,先生成yaml和requirement.txt文件.通过ssh命令连接到另一台Linux实例.需要先在新的Linux实例上安装 conda.然后再将 y ...

  7. 开源项目实现多线程下载 (xutils)

    public void download(View v){         EditText et_url = (EditText) findViewById(R.id.et_url);        ...

  8. 学习jsp篇:jsp简单实例之一注册

    编程环境:IDEA,Tomcat ,JavaEE 实例一.注册 1.先在IDEA建一个web工程(不懂的可以在网上搜,一大堆..)ServletTest,在工程目录下的web目录建一个文件夹regis ...

  9. list和tuple的用法区别

    1.list中是可变的,tuple不可变  所以tuple没有insert, pop,append方法 2.定义只有一个元素的tuple的时候,必须加逗号,否则不会被认为是tuple,而被识别为括号 ...

  10. 第一个OC类

    1.如何声明一个类 格式 注意: 1.必须以@interface开头,@end结尾 2.成员变量的声明,必须写在@interface与@end之间的大括号中 3.方法的声明必须在{}下面,不能写在{} ...