操作系统(15)-----I/O设备管理(万字总结~)(1)

简介: 操作系统(15)-----I/O设备管理(万字总结~)

一.I/O设备

I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。

注:UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。

Write操作:同外部设备写出数据

Read操作:从外部设备读入数据

二.I/O设备的分类

(1)按使用特性分类

•人机交互类外部设备

鼠标、键盘、打印机等,用于人机交互,这些设备的数据传输较慢,一般都是以字节为单位。


•存储设备

移动硬盘、光盘等,用于数据存储,数据传输速度较快


•网络通信设备

调制解调器等,用于网络通信,数据传输速度介于二者之间


(2)按传输速率分类

•低速设备

鼠标、键盘等--传输速率为每秒几个到几百字节。


•中速设备

如激光打印机等--传输速率为每秒数千至上万个字节。


•高速设备

如磁盘等--传输速率为每秒数千字节至千兆字节的设备。


(3)按信息交换的单位分类

•块设备

如磁盘等--数据传输的基本单位是“块”,传输速率较高,可寻址,即对它可随机地读/写任一块。


•字符设备

鼠标、键盘等--数据传输的基本单位是字符。传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式。

三.I/O控制器

I/O设备由机械部件和电子部件(I/O控制器,设备控制器)组成:

机械部件:I/O设备的机械部件主要用来执行具体I/O操作。

如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。

电子部件:I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。

接下来主要讲电子部件

当I/O设备连接电脑时,CPU无法直接控制I/O设备的机械部件,因此/O设备还要有一个电子部件作为CPU和VO设备机械部件之间的“中介”,用于实现CPU对设备的控制。


这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备

的机械部件。


I/O控制器的功能:

1.接受和识别CPU发出的命令:如CPU发来的 read/write 命令,I/O控制器中会有相应的控制寄存器来存放命令和参数


2.向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌。


3.数据交换:I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。


4.地址识别: 类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器。

I/O控制器的组成:

1.CPU与控制器的接口:

用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据。


2.控制器与设备的接口:


用于实现控制器与设备之间的通信。一个控制器可能控制许多的I/O设备,为了区别这些设备,需要为这些设备分配不同的地址,CPU访问设备时需指明自己访问的地址。


3.I/O逻辑:


负责接收和识别CPU的各种命令(如地址译码),并负责对设备发出命令。

CPU与控制器的接口:


CPU首先通过I/O控制线向I/O设备发出具体指令,同时CPU通过地址线传输自己要操纵哪一个设备的数据信息。


若此时需要输出一个数据,CPU会把要输出的数据通过数据总线放到数据寄存器中。I/O逻辑就可以从该寄存器中取到数据。


若CPU此时发出的指令有相应的参数,那么这些参数会放到控制寄存器中,I/O逻辑就可以从控制寄存器中读出这些参数了。


为了实现对各个设备的管理,CPU还会从各个状态寄存器中读入各个设备的状态,而I/O逻辑会往状态寄存器中写入相应数据,告诉CPU各个设备此时的状态。


控制器与设备的接口:


•传送输入/输出数据


若此时CPU需要输出数据,CPU通过数据总线,将数据写到数据寄存器中,I/O逻辑从数据寄存器中读出数据,接着通过控制器与设备的接口,将数据输出到外部设备中。


若CPU需要从外部设备读入数据,那么与上面过程相反即可。


•设备要反馈状态(忙碌/空闲)


设备通过与I/O控制器的接口向I/O控制器报告自己的状态,I/O逻辑会将此设备的状态写入到状态寄存器中,CPU从状态寄存器中,即可读入此设备状态相关信息。


•控制器会向设备发出控制信息


I/O逻辑会通过CPU发出的控制命令和寄存器传来的数据,对相应的设备发出控制信息。

① 一个I/O控制器可能会对应多个设备;

② 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编址。


内存映像I/O:


控制器中的寄存器与内存地址统一编址。


优点:简化了指令。可以采用对内存进行操作的指令来对控制器进行操作。

寄存器独立编制:

控制器中的寄存器使用单独的地址。

缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号。

四.I/O控制器的控制方式

I/O控制器有以下四种控制方式:

(1)程序直接控制方式

•完成一次读/写操作的流程:

若要进行一次读操作:

① CPU向控制器发出读指令。于是设备启动,并且状态寄存器设为1(未就绪)。


② 轮询检查控制器的状态(其实就是在不断地执行程序的循环,若状态位一直是1,说明设备正忙,还没准备好要输入的数据,于是CPU会不断地轮询)。


③ 输入设备准备好数据后将数据传给控制器,并报告自身状态。


④ 控制器将输入的数据放到数据寄存器中并将状态改为0(已就绪)。


⑤ CPU不停轮询,发现设备已就绪后,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存。

⑥ 若还要继续读入数据,则CPU继续发出读指令。

具体流程如下:

注:输入的数据最终要放到内存中,也就是CPU在获得输入数据后,需要将输入数据放到内存中。同理输出的数据也存放在内存中,需要从内存中取出,经过CPU再输出到设备。

•CPU干预的频率:


很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查。


•数据传送的单位:


每次读/写一个字


•数据的流向:


读操作(数据输入):I/O设备---->CPU的寄存器---->内存


写操作(数据输出):内存---->CPU的寄存器---->I/O设备


每个字的读/写都需要CPU的帮助。

主要缺点和主要优点:

优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)

缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。

(2)中断驱动方式

•完成一次读/写操作的流程:


引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/0控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/0的进程(或其他进程)的运行环境,然后继续执行。

① CPU会在每个指令周期的末尾检查中断。

② 中断处理过程中需要保存、恢复进程的运行环境这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能。

•CPU干预的频率:


每次I/O操作开始之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行。


•数据传送的单位:


每次读/写一个字


•数据的流向:


读操作(数据输入):I/O设备--->CPU--->内存


写操作(数据输出):内存--->CPU--->I/O设备

主要缺点和主要优点优点:

优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升。


缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。

(3)DMA方式

•完成一次读/写操作的流程:

与“中断驱动方式”相比,DMA方式(Direct Memory Access)直接存储器存取。主要用于块设备的I/O控制)有这样几个改进:

①数据的传送单位是“块”。不再是一个字、一个字的传送;

②)数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU作为“快递小哥”


③仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。


CPU会给I/O模块发出读/写块命令,CPU就可以做其他事情,DMA控制器会根据CPU发出的命令完成CPU指定的读写操作。当读写操作执行完成,DMA会向CPU发出中断信号,CPU再介入处理。

CPU发出读/写指令时:CPU指明此次要进行的操作(如:读操作),并说明要读入多少数据、数据要存放在内存的什么位置、数据在外部设备上的地址(如:在磁盘上的地址)

DMA控制器也是一种I/O控制器,也是由三部分组成:主机-控制前期的接口,I/O逻辑,块设备-控制器接口

主要的主机-控制器接口如下:

DR(DataRegister,数据寄存器):暂存从设备到内存,或从内存到设备的数据。MAR(MemoryAddressRegister,内存地址寄存器):在输入时,MAR表示数据应放到内存中的什么位置;输出时 MAR表示要输出的数据放在内存中的什么位置。


DC(DataCounter,数据计数器):表示剩余要读/写的字节数。


CR(Command Register,命令/状态寄存器):用于存放CPU发来的I/0命令,或设备的状态信息。

例如:内存想要读入外设某个数据,DMA控制器通过主机-控制器接口,  得到CPU提供的一系列信息,从磁盘中读入数据,再写到内存中,这一过程不需要CPU的干预,只有DMA控制器完成了CPU指定操作,才会向CPU发出中断信号,CPU再介入进行后续处理。

注:DMA控制器读入数据时,也是一个字一个字读入的, 每次读入的字都会先存放再DR(数据寄存器)中,再从DR写入内存中。

操作系统(15)-----I/O设备管理(万字总结~)(2):https://developer.aliyun.com/article/1511387

目录
相关文章
|
6月前
|
存储 程序员
操作系统(15)-----I/O设备管理(万字总结~)(4)
操作系统(15)-----I/O设备管理(万字总结~)
69 2
|
6月前
|
存储 网络协议 程序员
操作系统(15)-----I/O设备管理(万字总结~)(2)
操作系统(15)-----I/O设备管理(万字总结~)(2)
73 1
|
6月前
|
存储 缓存 算法
操作系统(15)-----I/O设备管理(万字总结~)(3)
操作系统(15)-----I/O设备管理(万字总结~)(3)
95 0
|
11月前
【操作系统】—I/O设备的基本概念和分类
【操作系统】—I/O设备的基本概念和分类
|
程序员 虚拟化
操作系统如何进行设备管理
操作系统如何进行设备管理
282 1
操作系统如何进行设备管理
|
存储 网络协议 Linux
计算机操作系统学习笔记(12)——I/O 多路复⽤:select/poll/epoll
计算机操作系统学习笔记(12)——I/O 多路复⽤:select/poll/epoll
106 0
操作系统--I/O管理知识整理(供自己复习所用
I/O一直比较薄弱,都分不清在干啥,又听了一遍课,默写一下脑子里留下的东西,原来不是分不清,是听完课,脑子里就留下来30%…… I/O子系统层次结构
|
消息中间件 存储 分布式计算
大数据开发基础的操作系统的I/O原理
操作系统的I/O原理是大数据开发中必须掌握的一项基础知识。本篇文章将为大家介绍I/O原理的基本概念、工作原理以及应用场景。
90 0
|
19天前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
3月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。