第7章 输入/输出系统

总览

  1. I/O系统基本概念
  2. 外部设备
    1. 输入设备:键盘、鼠标
    2. 输出设备:显示器、打印机
    3. 外存储器:硬盘存储器、磁盘阵列、光盘存储器
  3. I/O接口
    1. I/O接口的功能和基本结构
    2. I/O端口及其编址
  4. I/O方式
    1. 程序查询方式
    2. 程序中断方式

    中断的基本概念,中断响应过程、中断处理过程、多重中断和中断屏蔽的概念。

    1. DMA方式

    DMA控制器的组成,DMA传送过程。

     

     

  5. I/O系统基本概念
    1. I/O系统的历史演变过程
      1. 早期阶段(程序查询方式)
      2. 接口模块和DMA阶段(中断方式和DMA方式)
      3. 具有通道结构的阶段
      4. 具有I/O处理器的阶段
    2. I/O系统的基本概念
      1. I/O软件
        1. I/O指令:操作码/指令码/设备码
        2. 通道指令
      2. I/O硬件
  6. 外部设备
    1. I/O设备分类
      1. 输入设备:能将人们熟悉的信息形式变换成计算机能接受并识别的信息形式。
      2. 输出设备:能将计算机运算结果的二进制信息转换成人类或者其他设备可以接受和识别的信息形式。
      3. 输入/输出兼用设备:既可以作为输入设备,也可以作为输出设备,例如硬盘,既可以存数据,也可以取数据。
    2. 输入设备:键盘、鼠标
    3. 输出设备:显示器、打印机
  7. I/O接口
    1. I/O接口基础知识
      1. 通过接口可以实现数据缓冲。
      2. 一台机器通常配有多台I/O设备,他们各自有其设备编号,通过接口可以实现I/O设备的选择。
      3. 某些设备是一位位地串行传送数据,而CPU一般为并行传送,通过接口可实现数据串—并格式的转换。
      4. I/O接口和I/O端口是两个不同的概念,但相互之间有关联。I/O接口是主机和外设之间传送信息的"桥梁",介于主机和外设之间。主机控制外设的命令信息、传送给外设的数据或从外设取来数据、外设送给主机的状态信息等有要先存放在I/O接口中。所以,接口中有一些寄存器,用于存放这些命令、数据和状态信息。把I/O接口中的这些寄存器称为I/O端口。
    2. I/O接口的功能和基本结构

      每一台I/O设备都是通过I/O接口连接到系统总线上的,并且此总线包括数据线、设备选择线、命令线和状态线

      数据线(双向):用作I/O设备与主机之间传送数据。

      设备选择先(单向):用来传送设备码。

      命令线(单向):用来传送CPU向设备发憷的各种命令信号,如启动、停止、读、写等信号。

      状态线(单向):将I/O设备的状态想住址报告的信号线。

      1. I/O接口的功能
        1. 设备选择功能

          由于I/O总线与所有设备的接口电路相连,但CPU究竟选择哪台设备,还得通过设备选择线上的设备码来确定,该设备码将送至所有设备的接口,因此当设备选择线上的设备码与本设备码相符合时,应发憷设备选择信号SEL,这种功能可通过接口内的设备选择电路来实现。

        2. 传送命令功能

          当CPU向I/O设备发出命令时,要求I/O设备能做出相应,如果I/O接口不具备传送命令信息的功能,那么设备将无法相应,故通常在I/O接口中舍友存放命令的命令寄存器和命令译码器。

        3. 传送数据功能
        4. 反应I/O设备的工作状态
      2. I/O设备的基本结构
      3. I/O接口的类型
    3. I/O端口及其编址
      1. I/O端口
      2. I/O端口的编址
        1. 统一编址
        2. 不统一编址
  8. I/O方式
    1. 程序查询方式
    2. 程序中断方式

    中断的基本概念,中断响应过程、中断处理过程、多重中断和中断屏蔽的概念。

    1. DMA方式
      1. DMA的特点

        DMA方式是一种完全由硬件进行成组信息传送的控制方式,具有程序终端方式的优点,即在数据准备阶段,CPU与外设并行。它还降低了CPU在传送数据时的开销,这是因为信息传送不经过CPU,也就不需要保护、恢复现场等繁琐操作。这种方式适用于磁盘、磁带等高速设备大批量数据的传送。它的硬件开销比较大,DMA方式中,中断的作用仅限于故障和正常传送结束时的处理。

      2. DMA的传送方法
        1. 停止CPU访问主存
        2. 周期挪用
        3. DMA与CPU交替访问
      3. DMA接口的功能和组成

      AR:存放数据块在主存的首地址,有计数功能。

      DAR:为设备地址寄存器,用于存放设备号。

      WC:为字计数器,存放交换数据的字数。

      BR:为数据缓冲寄存器,存放主存和设备之间交换的数据字。

       

      DMA的传送过程分为预处理、数据传送和后处理3个阶段:

      1. 预处理
        1. 指明是输入数据还是输出数据
        2. 向DMA设备地址寄存器(DAR)送入设备号,并启动设备。
        3. 向DMA主存地址寄存器(AR)送入交换数据的主存首地址。
        4. 对字计数器(WC)赋予交换数据的个数。
      2. 数据传送

        DMA以数据块为单位传送数据。

        1. 当设备准备好一个字时,将该字读到DMA的数据缓冲寄存器中(BR),表示数据缓冲寄存器"满"。
        2. 与此同时设备向DMA接口发送请求(DREQ)。
        3. CPU发出HLDA信号,表示允许将总线控制权交给DMA接口。
        4. 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器写。
        5. DMA控制逻辑告诉I/O,CPU已经安排了一个DMA周期,记住为下一个字的传送作准备。
        6. 将DMA数据缓冲寄存器的内容送数据总线。
        7. 主存将数据总线上的信息写至地址总线指定的存储单元中。
        8. 修改主存地址和字计数值。
      3. 后处理

        当DMA的中断请求得到相应后,CPU停止源程序的执行,专区执行中断服务程序,做一些DMA的结束工作。

转载于:https://www.cnblogs.com/stormax/p/9566841.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python第一个程序HelloWorld

在写第一个python程序之前,我们还需要了解的一个东西就是python解释器 解释器,顾名思义,就是解释一段代码的机器,程序运行的平台,例如Java的解释器就是jdk。 我们在写好的python代码,需要在解释器上执行&am…

Java字符串的十大问题

以下是有关Java字符串的十大常见问题 。 1.如何比较字符串? 使用“ ”还是使用equals()? 简而言之,“ ”测试引用是否相等,而equals()测试值是否相等。 除非您要检查两个字符串是否…

php原生sql语法,thinkphp执行原生SQL语句的实现方法

怎样在thinkphp里面执行原生的sql语句?$Model new Model();//或者 $Model D(); 或者 $Model M();$sql "select * from order";$voList $Model->query($sql);只是需要new一个空的模型继承Model中的方法。注意query是查功能,execute是增…

Jquery中如何获取元素的文本,值,属性和内容

jQuery DOM 操作jQuery 中非常重要的部分,就是操作 DOM 的能力。jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。提示:DOM Document Object Model(文档对象模型)DOM 定义访问 HTML 和 XML …

Python中的__new__()方法的使用

__new__() 函数只能用于从object继承的新式类。 先看下object类中对__new__()方法的定义: class object:staticmethod # known case of __new__def __new__(cls, *more): # known special case of object.__new__""" T.__new__(S, ...) -> a new …

什么是消息中间件

面向消息的中间件:Message-oriented Middleware, MOM 基本功能: 将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序 主要特点: 消息异步接受,类似手机短信的行为,消息发送者不需要等待消息接受…

用Java分割大型XML文件

上周,我被要求用Java编写一些东西,该东西能够将单个30GB XML文件拆分为可配置文件大小的较小部分。 该文件的使用者将是一个中间件应用程序,该应用程序存在XML较大的问题。 在后台,它使用某种DOM解析技术,使它在一段时…

am82.top 1.php,Droppy v2.1.3 – PHP在线网盘系统

更新跨度比较大从1.4.6-2.1.3的更新日志我都贴出来利V2.1.9 (10 July, 2019)- Added option to define maximum upload chunk size in the admin panel- Fixed an issue where downloads were corruptedV2.1.8 (10 July, 2019)- Fixed an issue where upload password field wa…

抛出异常–缓慢而丑陋

这篇文章是关于历史经验以及最近应用的性能优化技术的。 几年前,我在特定的应用程序中发誓,我不得不发现隐藏在真正聪明的工程“技术”之下的无证行为。 它是一个典型的用于发票的单片Java EE应用程序。 最好忘记确切的代码,但是我记得开发人…

信号与线性系统翻转课堂笔记9——傅里叶变换概念

信号与线性系统翻转课堂笔记9——傅里叶变换 The Flipped Classroom9 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点)…

abstract修饰符

1、一个类不能同时被 abstract 和 final 修饰。 2、如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。 3、抽象类可以包含抽象方法和非抽象方法。 4、抽象方法是由子类来实现。 5、抽象方法不能被声明成 final 和 static。 6、任…

埃及分数问题(带乐观估计函数的迭代加深搜索算法-IDA*)

#10022. 「一本通 1.3 练习 1」埃及分数 【题目描述】 在古埃及,人们使用单位分数的和(形如 $\dfrac{1}{a}​$​​ 的,$a$ 是自然数)表示一切有理数。如:$\dfrac{2}{3} \dfrac{1}{2} \dfrac{1}{6}​$​​&#xff0c…

玩转Jquery中的动画效果(animate方法)

jQuery 动画 - animate() 方法jQuery animate() 方法用于创建自定义动画。语法:$(selector).animate({params},speed,callback);必需的 params 参数定义形成动画的 CSS 属性。可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"…

matlab 等分矩阵,用matlab根据列拆分矩阵.

使用logical indexingBA(A(:,end)10,:);CA(A(:,end)2,:);回报>> BB 1 4 2 5 102 1 5 6 10>> CC 2 4 5 6 22 3 5 4 2编辑:在回复丹的评论这里是一般情况的扩展e unique(A(:,end));B cell(size(e));for k 1:numel(e)B{k} A(A(:,end)e(k),:);end或者更…

点击网页跟踪php代码的工具,使用ltrace工具跟踪PHP库函数调用的方法

本文实例讲述了使用ltrace工具跟踪PHP库函数调用的方法。分享给大家供大家参考,具体如下:可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍一个跟踪库函数的利器ltrace比如我有这么一段PHP代码test.php:$y 1380;$arr array…

HDU 2841 Visible Trees(容斥)题解

题意:有一块(1,1)到(m,n)的地,从(0,0)看能看到几块(如果两块地到看的地方三点一线,后面的地都看不到)。 思路:…

Jquery获取服务器端控件ID的方法

<asp:textbox runat"server" id"txtMessage" textmode"SingleLine">some strings here...</asp:textbox>但是当这段代码输出到客户端时就变成了这样&#xff1a;<input name"ctl00$txtMessage" id"ctl00_txtMessa…

安全地创建和存储密码

几乎每次涉及用户配置文件时&#xff0c;都必须管理用户凭据&#xff0c;从而能够创建和存储用户密码。 通常应该使用散列密码和盐分密码来准备数据库公开和通过使用Rainbow表进行散列反转的密码。 但是&#xff0c;找到以明文形式存储的密码并不少见&#xff08;很不幸&#…

Swift Defer 延迟调用

1、Defer 在一些语言中&#xff0c;有 try/finally 这样的控制语句&#xff0c;比如 Java。这种语句可以让我们在 finally 代码块中执行必须要执行的代码&#xff0c;不管之前怎样的兴风作浪。在 Swift 2.0 中&#xff0c;Apple 提供了 defer 关键字&#xff0c;让我们可以实现…

mysql strtok,strtok()和strtok_r()

下面的说明摘自于最新的Linux内核2.6.29&#xff0c;说明了strtok()这个函数已经不再使用&#xff0c;由速度更快的strsep()代替/** linux/lib/string.c** Copyright (C) 1991, 1992 Linus Torvalds*//** stupid library routines.. The optimized versions should generally b…