操作系统(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设备管理(万字总结~)
81 2
|
6月前
|
存储 网络协议 程序员
操作系统(15)-----I/O设备管理(万字总结~)(2)
操作系统(15)-----I/O设备管理(万字总结~)(2)
79 1
|
6月前
|
存储 缓存 算法
操作系统(15)-----I/O设备管理(万字总结~)(3)
操作系统(15)-----I/O设备管理(万字总结~)(3)
102 0
|
11月前
【操作系统】—I/O设备的基本概念和分类
【操作系统】—I/O设备的基本概念和分类
|
程序员 虚拟化
操作系统如何进行设备管理
操作系统如何进行设备管理
289 1
操作系统如何进行设备管理
|
存储 网络协议 Linux
计算机操作系统学习笔记(12)——I/O 多路复⽤:select/poll/epoll
计算机操作系统学习笔记(12)——I/O 多路复⽤:select/poll/epoll
108 0
操作系统--I/O管理知识整理(供自己复习所用
I/O一直比较薄弱,都分不清在干啥,又听了一遍课,默写一下脑子里留下的东西,原来不是分不清,是听完课,脑子里就留下来30%…… I/O子系统层次结构
104 0
|
消息中间件 存储 分布式计算
大数据开发基础的操作系统的I/O原理
操作系统的I/O原理是大数据开发中必须掌握的一项基础知识。本篇文章将为大家介绍I/O原理的基本概念、工作原理以及应用场景。
91 0
|
14天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
37 0
Vanilla OS:下一代安全 Linux 发行版
|
16天前
|
人工智能 安全 Linux