《操作系统导论》学习笔记(十一):I/O管理(持久化)

I/O设备

I/O 设备从信息交换的角度可分为块设备和字符设备:

  • 块设备:以数据块为单位存储、传输信息,传输速率高且可寻址,硬盘是典型的块设备。
  • 字符设备:以字符为单位存储、传输信息,传输速度低且不可寻址,键盘是典型的字符设备。

在这里插入图片描述

I/O层次

在这里插入图片描述

  • 当用户需要读取外部设备的内容时,通过操作系统提供的 read 命令接口,从而经过用户级I/O软件
  • 操作系统收到用户发出 read 命令,使用设备无关性软件进行解析并选择对应的I/O设备,从而经过设备无关系软件
  • 不同类型的I/O设备对 read 命令的行为不同,需要针对不同的设备把命令解析成不同的指令,从而经过设备驱动程序
  • 命令解析完毕后,需要中断正在执行的进程,转而执行 read 命令,这就需要中断处理程序
  • 命令真正抵达硬件设备,硬件设备的控制器按照收到的命令进行I/O操作

1. I/O软件

用户级I/O软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关的库函数,对设备进行操作。
在这里插入图片描述
设备无关性软件:用户编写的程序可以访问任意I/O设备,无需事先指定设备,功能包括设备的命名、设备的保护、成块处理、缓冲技术和设备分配等。

  • I/O进程的设备无关性软件是逻辑I/O,将设备视为一个逻辑资源进行处理,允许进程根据设备标识符对设备执行打开、关闭、读和写指令的命令。
  • 文件进程的设备无关性软件包括文件目录系统、存取控制模块、逻辑文件系统和物理文件系统以及辅助分配模块等。
    在这里插入图片描述

设备驱动程序:上传软件发出的抽象I/O要求转换成具体的I/O指令和控制器指令,同时将设备控制器发来的信号传送给上级软件,可以使用缓冲技术提高使用率。

中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进程处理,适用于程序中断方式I/O和DMA方式I/O。

2. I/O硬件

I/O硬件包括外部设备、接口、设备控制器和I/O总线等。
在这里插入图片描述

I/O端口:端口可分为物理端口和虚拟端口,I/O端口属于物理端口,是CPU与外部设备连接和数据交换的接口设备。外部设备侧接口称为控制器与设备接口,CPU侧接口称为CPU与控制器接口。
在这里插入图片描述
I/O端口地址:每个I/O端口都有相应的端口地址。端口地址的编址方式有 I/O独立编址和内存映像编址两种。.

I/O独立编址:分配给系统中所有端口的地址空间与内存的地址完全独立,使用专门的I/O指令对端口进行操作。如8086/8088 ,分配给I/O 端口的地址空间 64K ,0000H~0FFFFH,只能用 in 和out 指令进行读写数据。
在这里插入图片描述
I/O独立编址的端口地址与内存地址无关,需要设置专门的I/O总线接收和传输I/O信息。
在这里插入图片描述
内存映像编址:分配给系统中所有端口的地址空间与内存的地址空间统一编址,从整个内存空间中划出一个子空间给I/O端口,每一个I/O端口分配一个地址码,用访问存储器的指令对I/O端口进行操作。
在这里插入图片描述
内存映像编址的I/O端口地址属于内存地址,可以直接使用统一的系统总线接收和传输I/O信息。
在这里插入图片描述
设备控制器
CPU和外设之间通常传递的信息包括数据、状态、控制,主机与接口和接口与I/O设备之间的信号联接线、数据地址线、控制状态信号线。

I/O控制逻辑负责地址译码、信号转换、硬件缓冲等功能 ,命令寄存器和命令译码器传送和转换I/O控制逻辑的命令,设备选择电路编译地址并识别不同的I/O设备,数据缓冲寄存器用于模拟数据格式转换和数据保存,设备状态标记反映设备状态供CPU使用。
在这里插入图片描述
首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块;在控制逻辑对块验证检查和并证明无错误时,再将它复制到内存中。

2. I/O控制方式

(1) 程序查询方式:计算机从外部设备读取数据到存储器,每次读取一个字的数据时,CPU循环检查设备状态寄存器,直至确定该字已经在数据缓冲寄存器当中。
在这里插入图片描述
在这里插入图片描述
(2) 程序中断方式:I/O控制器从CPU接收一个读命令,从外围设备读数据到数据缓冲寄存器,然后通过控制线向CPU发出一个中断信号,CPU处理中断服务程序,实现I/O与主机之间的数据传送。
在这里插入图片描述
在这里插入图片描述
(3) DMA 方式: DMA控制器从CPU接收一个读命令,从外围设备读数据到数据缓冲寄存器,并根据内存地址寄存器(AR)将数据传输至内存,全部数据传输完毕则通过控制线向CPU发出一个中断信号,CPU处理中断服务程序结束I/O传输。
在这里插入图片描述
在这里插入图片描述

I/O技术

1. 缓冲区技术

目的:解决CPU 与I/O 设备之间速度的不匹配问题;提高CPU 与I/O并行性;减少了I/O 设备对CPU 的中断请求次数,放宽CPU对中断响应时间的要求

  • 硬缓冲:由硬件寄存器实现(例如:I/O设备中的数据缓冲寄存器)
  • 软缓冲:在内存中开辟一个空间,用作缓冲区,单缓冲、双缓冲和缓冲池
    在这里插入图片描述

2. Spooling技术

I/O 设备从资源分配的角度可分为独占设备、共享设备:

  • 独占设备:在一段时间内只能有一个进场使用设备,一般为低速I/O设备
  • 共享设备:在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式使用设备,资源利用率高(硬盘)
  • 虚拟设备:在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备,提高设备利用率

在这里插入图片描述

输入缓冲区用于暂存输入设备送来的数据,以后再传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。

输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据;输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据,井管理程序可以将输入井的数据调度到输出井当中。

Spooling技术特点

  • 提高I/O速度:低速的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾。
  • 将独占设备改造为共享设备。因为在SPOOLing系统的系统中,实际上并没为任何进程分配设备,而知识在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。
  • 实现了虚拟设备功能。多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,从而实现了设备的虚拟分配。

猜你喜欢

转载自blog.csdn.net/K_Xin/article/details/108210827