IO介绍-中
系统接口
块设备接口
- 块设备:数据的存取和传输都是以数据块为单位的设备。典型的块设备是磁盘。该设备的基本特征是传输速率高,另一特征是可寻址,即能指定数据的输入源地址及输出的目标地址,可随机读写。磁盘设备通常采用DMA方式。
- 隐藏了磁盘的二维结构
- 将抽象命令映射为低层操作:块设备支持上层发来的对文件或设备的打开、读写、关闭等抽象命令。该接口会将上述的接口转换成实际的需要的更为复杂的命令
流设备接口
- 字符设备:数据存取都是以字符为单位,如键盘、打印机等。字符设备基本的特征是传输速度慢,通常每秒几个字节到几千个字节。还有一个特征是不可寻址,不能只能数据的输入源和输出的目标地址。字符设备在输入/输出时采用中断驱动方式
- get和put操作:由于字符是不可寻址的,因而对它只能采用顺序存取的方式。通常是为每一个字符设备建立一个字符缓冲区(队列),设备的IO字符流顺序地进入队列,或者是从队列中取走一个字符。get是从缓冲区立刻获取一个字符,pu是把一个新的字符写入缓冲区,等待送到设备
- in-control :因为字符设备类型太多,为了统一管理他们,通常在流设备接口中提供一种通用的in-control指令,在该指令中包含了许多参数,每一个参数表示一个鱼具体设备相关的特定功能。大多数字符设备是独占设备,必须采取互斥方式实现共享。因为,设备提供了打开和关闭的操作。在使用这类设备时,必须先打开设备,才能使用。如果已被打开,表示其他进程正在使用该设备。
网络通信接口
网卡
设备与控制器之间的接口
- 数据信号线:比如输入设备中,由外界输入的信号经过转换器转换后,所形成的数据通常是先进入缓冲器中,当数据量达到一定量后,再从缓冲器通过一组数据信号线传送给设备控制器;对于输出设备而言,是先从设备控制器经过数据线传来的一批缓冲器中,经过适当的转换后,再逐个字符输出
- 控制信号线:是由设备控制器向设备发送控制信号的通路。该信号规定了设备要执行的操作,如读操作或写操作或者是移动磁头的操作
- 状态信号线:用来传送设备的当前状态的信号。设备当前的状态有:在读、在写、已读、已写、并准好新的数据传送
设备控制器
- 控制字符设备的控制器
- 控制块设备的控制器
设备控制器基本功能
- 接受和识别命令:在控制器中有对应的控制寄存器,用户存放接收到的命令和参数,并对所接收的命令进行译码。
- 数据交换:它能接受cpu传来的数据,同时还要接收设备传来的数据。所以,它必须设置对应的数据寄存器
- 标识和报告设备状态:它有对应的状态寄存器,用其中的每一位表示设备的某一种状态。当cpu需要知道当前设备的状态,直接从控制器就返回了
- 地址识别:设备控制器必须能识别每个设备的地址,还有对应寄存器中对应的唯一的地址
- 数据缓冲区:由于IO设备速度较低,而CPU和内存的速度很高,所以在控制器中必须设置一个缓冲区。设备到内存时,可以累积一批数据后,再将缓冲区的数据高速传递给内存;内存到设备时,先是多次将数据存入缓冲区中,再一次性送到设备。
- 差错控制:如果出现错误,会将错误向cpu报告,于是cpu会将本次传输的数据丢掉,再进行重新一次的传输。
设备控制器的组成
- 设备控制器和cpu的接口:用于实现设备控制器和cpu的交互。所以该接口中三类信号线:
- 数据线:通常和两类寄存器连接,一种是数据寄存器,这种寄存器有一个或者多个,用于存输入或者输出的数据;另一种是控制/状态寄存器,用来存放cpu发送的指令或者是设备状态;
- 地址线
- 控制线
- 设备控制器与设备的接口:一个设备控制器可以控制多个设备。每个接口中都有数据、控制和状态三种类型的信号。控制器中IO逻辑根据发来的地址选择一个设备口。
- IO逻辑:它实现对设备的控制。它是通过一组控制线与CPU交互,CPU利用该逻辑向控制器发送IO命令。每当CPU要启动一个设备时,一方面将启动命令发送给控制器,另一方面同时通过地址线把地址发送给控制器,由控制器的IO逻辑对收到的地址进行译码,再根据翻译后的命令对设备进行控制。
内存映像IO
- 利用特定的IO指令:
固定的命令:如io-store cpu-reg,dev-no,dev-regcpu-reg :cpu某一个寄存器dev-no: 指定的设备dev-reg : 指定控制器里面的寄存器这种方式的缺点:访问内存和访问设备需要两种不同的指令
- 内存映像IO:
这种方式在编址和前面不同,它不区分是cpu寄存器,还是存储设备或者是寄存器地址,统一使用K值。当k在0~n-1时,表示内存地址;大于等于n时,表示第0个设备控制器的第一个寄存器地址。通过确定是n的多少倍,确定是第几个设备控制器,通过余数确定是寄存器的地址。所以,在编致上面简化了很多。例如:sore cpu-reg,n
IO通道
通道类型
- 字节多路通道:一个主通道连接几个到几百个数量不等的子通道。按照字节交叉式工作的通道。多个子通道连接一个主通道,当一个子通道完成数据交换以后,换成第二个子通道和主通道连接,进行交换数据。
- 数组选择通道:字节多路通道不适合连接高速的设备,数据读取消耗的时候还没有切换子通道的耗时多,所以有了数组选择通道。一个通过可以连接多个高速设备,但是,这个通道在一段时间内只能执行一道通道程序,控制一台设备进行数据传送。当一个设备占用了该通道以后,它就一直占着,即使它没有数据传输也会占着,直到该设备的数据传输完毕以后才会释放该通道。所以,这种通道的利用率很低。
- 数组多路通道:它有字节多路通道的多路,有数组选择通道的传输速率。所以,这种方式使用率最高。
通道中的瓶颈问题
IO介绍-中的更多相关文章
- Java之IO(十四)IO包中其它类
转载请注明出处:http://www.cnblogs.com/lighten/p/7267553.html 1.前言 此章介绍IO包中剩余未介绍的几个流和工具类,包括LineNumberReader. ...
- io流中的装饰模式对理解io流的重要性
为了说明 io流中的装饰者模式对理解io流的重要性,我想先简要介绍以下io的装饰模式. 装饰(decorator)你也可以翻译成修饰.比如:一个会精通化学数学的物理学家.在这个"物理学家&q ...
- 【python】-- 事件驱动介绍、阻塞IO, 非阻塞IO, 同步IO,异步IO介绍
事件驱动介绍 一.前言 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每收 ...
- Netty之WebSocket和四种IO介绍
Netty简介 一.什么是netty? 高性能 事件驱动 异步非堵塞 基于NIO的客户端,服务器端编程框架 稳定性和伸缩性 二.Netty的使用场景 高性能领域 多线程并发领域 异步通信领域 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- ORACLE数据库异步IO介绍
异步IO概念 Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能.它是Linux 2.6 版本内核的一个标准特性,当然我们在2.4 版本内核的补丁中也可以找到它.AIO 背 ...
- java.io包中的字节流—— FilterInputStream和FilterOutputStream
接着上篇文章,本篇继续说java.io包中的字节流.按照前篇文章所说,java.io包中的字节流中的类关系有用到GoF<设计模式>中的装饰者模式,而这正体现在FilterInputStre ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
- Java IO流中的File类学习总结
一.File类概述 File类位于java.io包中,是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类有多种重载的构造方法.File类保存文件或目录的各种 ...
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
随机推荐
- 网络服务性能优化:Wrktcp与Perf工具详解
wrktcp安装 码云地址:https://gitee.com/icesky1stm/wrktcp 直接下载,cd wrktcp-master && make,会生成wrktcp,就o ...
- 关于HOJ的搭建和二开经验小结
经验在最后,先说流程. 除了HOJ,之前先装的HDU,属实难用,然后是hustOJ,嗯很好用,但架不住丑,对管理员实在不友好. 好了不闲记,进入正题: 一.流程 1.官网文档先过一遍. 2.配置好do ...
- C++ STL(标准模版库)—— vector 与 迭代器
STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称. STL 从广义上讲分为三类:algorithm(算法).containe ...
- [29] CSP模拟2
A.不相邻集合 考虑值域上连续的段,可以发现连续的长度为 \(x\) 的段的贡献必定为 \(\lceil{\frac{x}{2}}\rceil\) 考虑并查集维护值域连续的段的大小,每次询问求出全部连 ...
- [OI] 偏序
\(n\) 维偏序即给出若干个点对 \((a_{i},b_{i},\cdots,n_{i})\),对每个 \(i\) 求出满足 \(a_{j}\gt a_{i},b_{j}\gt b_{i}\cdot ...
- 【赵渝强老师】HBase的体系架构
一.什么是HBase? HBase是一个基于HDFS之上的分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"BigTable大表",即:把所 ...
- Python技术书示例代码相关内容
二维码用微信扫,按提示填写你的邮箱,转到电脑上打开邮箱下载.清华国企网盘,比较快速.安全.放心下载. 百度网盘链接 用Edge/Chrome浏览器下载. <Python自动化运维快速入门> ...
- LeetCode 650. 2 Keys Keyboard(只有两个键的键盘)(DP/质因数分解)
最初在一个记事本上只有一个字符 'A'.你每次可以对这个记事本进行两种操作: Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的). Paste (粘贴) : ...
- Linux cpuidle framework(1)_概述和软件架构
1. 前言 在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指.译码.执行.那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊.确实,是要停掉,但何 ...
- Pytorch 基于加权平滑过渡的无缝拼接
基于加权平滑过渡的无缝拼接 背景 在做照片数字人视频生成的时候,为了达到快速响应实时播放的需求,即视频的生成速度 必须小于 音频的播放速度. 因此,我们截取了一部分较小的可动区域进行推理生成,然后把生 ...