DJ5-1/2 输入输出系统(第一节课)

news2024/11/24 0:47:54

目录

5.1  I/O 系统的功能、模型和接口

5.1.1  I/O 系统的基本功能

5.1.2  I/O 系统的层次结构和模型

5.1.3  I/O 系统接口

5.2  I/O 设备和设备控制器

5.2.1  I/O 设备

5.2.2  设备控制器

5.2.3  I/O 通道

5.2.4  总线系统


 

5.1  I/O 系统的功能、模型和接口

5.1.1  I/O 系统的基本功能

1、隐藏物理设备的细节

2、与设备的无关性

3、提高处理机和 I/O 设备的利用率(并行操作)

4、对 I/O 设备进行控制(四种控制方式)

  • 程序 I/O 方式
  • 中断方式
  • 直接存储器访问方式
  • 通道方式

5、确保对设备的正确共享(设备的共享属性)

6、错误处理

5.1.2  I/O 系统的层次结构和模型

总体设计目标是:高效性和通用性。

  1. I/O 设备与 CPU 的并发性
  2. 简单抽象、清晰统一的接口

1、I/O 软件的层次结构

1)用户层软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与 I/O 操作有关的库函数,对设备进行操作。

2)设备独立性软件:负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

3)设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动 I/O 设备工作的驱动程序。

4)中断处理程序:用于保存被中断进程的 CPU 环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后返回到被中断进程。

2、I/O 系统中各种模块之间的层次视图

5.1.3  I/O 系统接口

1、块设备接口

典型代表:磁盘

  • 数据的存取和传输是以数据块为单位的设备。
  • 基本特征是传输速率较高,通常每秒钟为几兆字节。
  • 可寻址:能指定数据的输入源地址及输出的目标地址。
  • 块设备的 I/O 采用 DMA 方式。

2、流设备接口(字符设备接口)

典型代表:键盘、打印机

  • 数据的存取和传输是以字符为单位的设备。
  • 基本特征是传输速率极低,通常每秒钟为几个字节至数千个字节。
  • 不可寻址:不能指定数据的输入源地址及输出的目标地址。
  • 流设备的 I/O 采用中断驱动方式。

3、网络通信接口

OS 必须提供相应的网络软件和网络通信接口,使计算机能通过网络与网络上的其它计算机进行通信或上网浏览。


///dev目录下存放的都是设备文件
int fd = open("/dev/something");

for (int i = 0; i < 10; i++) {		
    fprintf(fd, "Count %d\n", i);	
}

close(fd);

1、操作系统为用户提供统一的接口,不论什么设备都是 open、read、write 和 close 。

2、不同的设备对应不同的设备文件,设备文件中存放了设备的属性。

5.2  I/O 设备和设备控制器

I/O 系统:是指用于实现数据输入输出及数据存储的系统。

5.2.1  I/O 设备

1、I/O 设备的类型

2、设备与控制器之间的接口

CPU -- 控制器 -- 设备

设备并不是直接与 CPU 进行通信的,而是与设备控制器进行通信。因此,在 I/O 设备中应含有与设备控制器之间的接口。

1)数据信号线:在设备与控制器之间传送数据信号。

2)状态信号线:传送指示设备当前状态的信号。如:正在读/写,或准备好新的数据传送。

3)控制信号线:由设备控制器向 I/O 发送控制信号时的通路。如:读,写控制等。

5.2.2  设备控制器

① 设备控制器的主要功能:控制一个或者多个 I/O 设备,以实现 I/O 设备和计算机之间的数据交换。它是 CPU 与 I/O 设备之间的接口。

  • 微机、小型机中的控制器常做成印刷电路卡形式,即接口卡

② 设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;当它控制多个设备时,它含有多个设备地址,每一个设备地址对应一个设备。

③ 设备控制器可分为两类:

  • 控制块设备的控制器
  • 控制字符设备的控制器

设备存储器的功能:

① 接收和识别命令:控制器中具有相应的命令寄存器,用来存放接收的命令和参数,并对所接收的命令进行译码。

② 数据交换:实现 CPU --数据总线-- 控制器的数据寄存器 -- 设备 之间的数据交换。

③ 设备状态的了解和报告:控制器中具有相应的状态寄存器,用其中的每一位反映设备的某一状态。当 CPU 将该寄存器的内容读入后,便可了解该设备的状态。

④ 地址识别:设备控制器应能识别它所控制的设备地址以及自己各寄存器的地址。

⑤ 数据缓冲:解决主机和 I/O 设备在速率上的不匹配。

⑥ 差错控制:控制器将会对数据进行差错检测,若 I/O 设备传来的数据出错,则报告给CPU,CPU 将数据作废且 I/O 设备重新发送数据。

Q:为什么设备控制器不直接拦截掉数据呢?

5.2.3  I/O 通道

1、I/O 通道设备的引入

I/O 通道是一种特殊的处理机,专门负责输入/输出工作,具有执行 I/O 指令的能力。主要目的是为了建立独立的 I/O 操作,使有关对 I/O 操作的组织、管理及其结束处理也独立于 CPU 。

CPU 是处理机,I/O 通道是特殊的处理机。CPU 向 I/O 通道发送 I/O 命令,由 I/O 通道执行相应的通道(I/O)程序。仅当 I/O 通道执行完毕后,才向 CPU 发中断信号。

I/O 通道与一般处理机的区别:

  • 指令类型单一,仅局限于与 I/O 操作有关命令。
  • 没有独立的内存,I/O 通道与 CPU 共享内存。

2、通道类型    

1)字节多路通道

一个主通道连接多个子通道,这些子通道以时间片轮转方式共享主通道。

每个子通道每次只传送一个字节,因此只能连接中低速设备。

只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率又不是太高,便不致丢失信息。

2)数组选择通道

  • 以数组方式工作,高速传输数据。
  • 可以连接多台高速设备。
  • 每次只有一台设备进行数据传送,形成独占。
  • 通道利用率较低。

由于形成独占,因此如果它不传输数据,其它设备也传不了。

3)数组多路通道

将数组选择通道传输速率高和字节多路通道分时并行操作的优点相结合而形成的一种新通道。

  • 其数据传送是按数组方式。
  • 有独占性。
  • 采用分时并行传送多个非分配型子通道。

因而这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。 

3、通道 “瓶颈” 问题

只要设备 1 到 4 中的任意一个设备开始使用了通道 1,那么其它设备就不能被启动了。比如在下图中,若想启动设备 2,则会因为控制器 1 和通道 1 被占用而无法启动。

解决方法:增加设备到主机间的通路而非增加通道。换言之,把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上。

5.2.4  总线系统

1、微机 I/O 系统

设备控制器:与 I/O 设备是一对多的关系,系统通过它与设备通信。 

系统 -- 设备控制器 -- 设备

缺点:总线瓶颈,CPU 瓶颈。

2、主机 I/O 系统(四级结构)

计算机 -- I/O 通道 -- I/O 控制器 -- 设备

I/O 通道相当于对总线的扩展,即多总线方式,且通道有一定的智能性,能与 CPU 并行,解决其负担。

3、常见的总线

  • ISA(8bit)
  • EISA(16bit)
  • LocalBUS
  • VESA(32bit)
  • PCI(64bit)

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

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

相关文章

Python进阶篇(五)-- 邮件客户端实现与电子邮件发送

1 SMTP 通过完成本实验&#xff0c;我们将更加了解SMTP协议。还将学到使用Python实现标准协议的经验。 主要任务是开发一个简单的邮件客户端&#xff0c;将邮件发送给任意收件人。客户端将需要连接到邮件服务器&#xff0c;使用SMTP协议与邮件服务器进行对话&#xff0c;并向邮…

【P5】JMeter HTTP Cookie管理器

文章目录 一、测试网站二、Cookie 设置规则2.1、无配置元件时&#xff0c;Cookie 不会自动设置&#xff08;与线程组设置无关&#xff09;2.2、有配置元件&#xff0c;不选任何参数时&#xff0c;Cookie 自动设置&#xff08;与线程组设置无关&#xff09;2.3、有配置元件&…

【iOS KVO(上)实现过程】

前言 KVO 也适用于传值&#xff0c;在之前的学习只是学习了KVO的传值&#xff0c;今天详细学习 监听和实现 源码放在下一节学习 1.1 KVO KVO&#xff08;Key-Value Observing&#xff09;是Objective-C语言中一种观察者模式的实现&#xff0c;可以用来监听对象属性值的变化…

Kafka基础概念介绍

背景 Kafka是我们项目用的最多的消息中间件&#xff0c;但里面也有很多存在的问题&#xff0c;如重复消费、带宽瓶颈、部分分区消费不下来的异常场景。 重复消费问题有些让人头疼&#xff08;reblance导致offset提交失败&#xff09;&#xff0c;这里会持续更新&#xff08;基…

UML简介与类图详解

1 UML简介 1.1 UML是什么 UML&#xff0c;全称为Unified Model Language&#xff0c;即统一建模语言&#xff0c;是由一整套图表组成的&#xff0c;为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。UML 代表了一组最佳工程实践&#xff0c;这些实践已被证明在…

【路径规划】基于哈里斯鹰优化算法的栅格法路径规划 机器人路径规划【Matlab代码#20】

文章目录 1. 原始HHO算法2. 机器人路径规划环境创建3. 路径规划模型建立4. 部分代码展示5. 仿真结果展示6. 资源获取方式 1. 原始HHO算法 详细介绍此处略&#xff0c;可参考HHO算法介绍 2. 机器人路径规划环境创建 对机器人工作空间的进行环境建模是机器人路径规划研究的重要…

【电源专题】案例:拆一个早期用的万能充看看内部状况

说到万能充,可能存在80/90后的记忆里。以前手机都可以更换电池的,所有往往都是买两块,一块在手机内部使用,另一块在万能充充电。 万能充的外观也是大同小异的,从网上找了一些图片: 这东西现在日常生活已经都看不到了,关键因素之一应该是现在的手机电池都是不可拆…

多维图像去噪方法研究

一、背景介绍 由于传感器技术的快速发展&#xff0c;高光谱&#xff08;HS&#xff09;遥感&#xff08;RS&#xff09;成像为飞机等数据采集设备远距离观测和分析地球表面提供了大量的空间和光谱信息&#xff0c;航天器和卫星。 HS RS 技术的最新进展甚至革命为实现各种应用的…

【ONE·C++ || set和map(一)】

总言 主要介绍set和map的基本框架和使用 文章目录 总言1、部分接口介绍和使用举例1.1、序列式容器和关联式容器、键值对1.1.2、pair键值对 1.2、set基本介绍1.2.1、set::set、遍历1.2.2、set::insert、set::erase、set::find1.2.3、set::count、set::lower_bound、set::upper_…

数据结构与算法基础(青岛大学-王卓)(1)

士别三日当刮目相待&#xff0c;不好意思鸽了好久了&#xff0c;因为学习的时间不连续&#xff0c;所以我一直攒着&#xff0c;我又回来继续更新了 没有继续学习浙大的数据结构了&#xff0c;对比了青岛大学的王老师的这个教程我觉得更适合我一些&#xff0c;更入门&#xff0…

【Spring篇】Spring整合

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、Spring整合 1.Spring整合Mybatis思路分析 1.环境准备 2.整合思路分析 2.Spring整合Mybatis 3.Spring整合Junit 1.环境准备 2.整合Junit步骤 二、图书推荐 1.《元宇宙Ⅱ&#xff1a;图…

Ubuntu安装MySQL

一.安装MySQL服务器 安装MySQL服务器&#xff1a; apt-get install mysql-server 对MySQL进行初始化&#xff0c;设置密码&#xff1a; mysql_secure_installation 注意&#xff0c;这里要设置密码的最低长度为8位&#xff0c;如果你设的密码小于8位&#xff0c;则会提示&am…

有趣工具合集小程序-做你的小树洞小程序

有趣工具合集小程序-做你的小树洞 今天闲来无事&#xff0c;发现了一个有趣的小程序-做你的小树洞&#xff0c;包含ChatGpt小机器人、抛硬币、手持弹幕、亲戚计算器、藏头诗、唐诗三百首、歇后语以及猜谜语等功能 小程序总体界面是这样的 1.藏头诗 这个小程序里边有很多有趣…

Redis的哨兵和集群模式

哨兵模式# 哨兵模式是redis高可用的实现方式之一 使用一个或者多个哨兵(Sentinel)实例组成的系统&#xff0c;对redis节点进行监控&#xff0c;在主节点出现故障的情况下&#xff0c;能将从节点中的一个升级为主节点&#xff0c;进行故障转义&#xff0c;保证系统的可用性。 哨…

【Qt5】多线程串口

文章目录 原版代码工程增加QCustomplot实时画图的源码工程源码 原版代码工程 源码下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/15pWzadPwOx_OfJGtvL-MjA 提取码&#xff1a;lief –来自百度网盘超级会员V5的分享 增加QCustomplot实时画图的源码工程 源码&…

【Mybatis】增删改查

1.添加相应的jar包 2.创建持久化类 在src目录下创建一个名为com.mybatis.po的包 创建持久化类MyUser,包含三个属性&#xff08;uid,uname,usex) package com.mybatis.po; /***springtest数据库中user表的持久化类*/ public class MyUser {private Integer uid;//主键private…

滴水逆向三期笔记与作业——02C语言——02数据类型

海哥牛逼 这里写自定义目录标题 一、C语言如何变成汇编1、裸函数 二、调用约定1、常见的几种调用约定 三、程序的真正入口四、数据类型4.1 C语言中的数据类型 作业 一、C语言如何变成汇编 1、裸函数 裸函数使用特殊方式定义&#xff0c;编译器和连接器并不会为其生成提升堆栈…

华为网工实验(VRRP多网关负载分担,OSPF基础操作)

采用VRRP多网关负载分担实现流量的负载均衡 配置思路&#xff1a;首先配置各个接口ip,让设备间能够实现通信&#xff0c;采用OSPF协议实现通信&#xff0c;然后AR2 AR3创建两个备份组&#xff0c;主备不同的两个备份组 组网图 #先设备命名并配置IP&#xff0c;三台设备类似&a…

路由器拨号密码恢复

背景 路由器拨号上网的密码因时间久远遗忘了&#xff0c;恢复并记录下过程。 步骤 1&#xff0c;安装wireshark choco install wireshark -y 注意 实践发现wireshark安装后&#xff0c;启动提示还需要安装Npcap 或者 Winpcap, 不过&#xff0c;在winpcap官网提示它已不再开…

虚拟机的克隆

第一步&#xff1a; 虚拟机右击 -> 管理 ->克隆 第二步&#xff1a; 在这一步勾选创建完整克隆&#xff0c;其他的都下一步 第三步 1.修改 mac地址 点击生成&#xff0c;就会生成一个随机的mac地址 2.修改主机名 vim /etc/hostname 修改完主机名后 reboot 重启虚拟机…