导图社区 第5章 IO管理
该模板是一张关于408考研,期末,操作系统IO管理的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机基础课程学习者打造,是系统梳理操作系统 I/O 管理核心知识的高效学习工具。思维导图的结构化呈现方式,将 I/O 管理概述、I/O 核心子系统两大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、I/O 层次结构示意图,帮助使用者快速构建 I/O 管理的知识体系,精准攻克 I/O 控制方式、缓冲技术、设备分配等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 I/O 控制方式(程序查询 / 中断 / DMA)、缓冲技术、SPOOLing 系统、设备分配与回收等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机基础课程学习者,模板清晰呈现了 I/O 管理的核心概念、原理与经典技术,可用于入门学习、知识框架搭建,快速建立对操作系统 I/O 管理逻辑的整体认知。模板完整覆盖 I/O 管理核心考点:从 I/O 设备的分类与组成、I/O 控制方式、I/O 子系统的层次结构,到 I/O 核心子系统的功能、缓冲技术、设备分配与回收、SPOOLing 技术,再到输入 / 输出管理的实现细节,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
编辑于2026-05-07 15:45:35这是一篇关于408考研,期末考试,计算机组成原理,输入输出系统思维导图,专为计算机专业学生、考研(如 408 统考)/ 软考备考者、计算机硬件底层原理学习者打造,是系统梳理 I/O 系统核心知识的高效学习工具。思维导图的结构化呈现方式,将 I/O 系统的基本概念、I/O 接口、I/O 控制方式、中断处理流程四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、原理示意图与对比表格,帮助使用者快速构建输入 / 输出系统的知识体系,精准攻克 I/O 控制方式对比、DMA 传输原理、中断处理流程、磁盘调度算法等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 I/O 接口的软硬件构成、程序查询 / 中断 / DMA 控制方式的差异、中断响应与处理全过程、磁盘调度计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了主机与外设数据交互的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机输入输出系统的整体认知。模板完整覆盖输入 / 输出系统核心考点:从 I/O 系统的基本概念、接口的分类与工作原理,到程序查询、中断、DMA 三种核心 I/O 控制方式的对比;从中断响应与完整处理流程,到磁盘调度算法、DMA 传输原理等计算类高频考点,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。该模板借助万兴脑图软件绘制,助力计算机学习者高效掌握输入 / 输出系统核心知识。
这是一篇关于408考研,期末考试,计算机组成原理,总线的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理总线系统核心知识的高效学习工具。思维导图的结构化呈现方式,将总线概述、总线仲裁、总线操作和定时、总线标准四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入关键原理示意图、性能计算要点与对比说明,帮助使用者快速构建总线系统的知识体系,精准攻克总线分类、仲裁方式、传输定时与性能分析等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将总线的特性与分类、集中式 / 分布式仲裁方式、同步 / 异步传输定时、总线性能指标计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了计算机系统中各部件通过总线进行数据传输的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机系统互连机制的整体认知。模板完整覆盖总线系统核心考点:从总线的基本概念、分类与特性,到总线仲裁的集中式与分布式实现;从总线操作的同步 / 异步 / 半同步定时方式,到总线标准与性能指标计算,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
这是一篇关于408考研,期末考试,计算机组成原理,中央处理器的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理 CPU 核心知识的高效学习工具。思维导图的结构化呈现方式,将 CPU 的功能和基本结构、指令执行过程、数据通路、控制器、指令流水线、多处理器系统六大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、关键概念对比与计算要点,帮助使用者快速构建 CPU 工作原理的知识体系,精准攻克数据通路设计、流水线性能分析、中断处理流程等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 CPU 结构、指令执行周期、数据通路设计、硬布线 / 微程序控制器对比、流水线冲突处理、多处理器系统分类等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了 CPU 从指令取指到执行的完整工作流程,可用于入门学习、底层原理学习的知识框架搭建,快速建立对计算机核心部件的整体认知。模板完整覆盖中央处理器核心考点:从 CPU 的功能与基本结构、指令执行的完整过程,到数据通路的设计原理与分类;从硬布线与微程序控制器的工作原理与对比,到指令流水线的性能指标、冲突处理与多发技术;再到多处理器系统的基本概念与硬件多线程技术,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
社区模板帮助中心,点此进入>>
这是一篇关于408考研,期末考试,计算机组成原理,输入输出系统思维导图,专为计算机专业学生、考研(如 408 统考)/ 软考备考者、计算机硬件底层原理学习者打造,是系统梳理 I/O 系统核心知识的高效学习工具。思维导图的结构化呈现方式,将 I/O 系统的基本概念、I/O 接口、I/O 控制方式、中断处理流程四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、原理示意图与对比表格,帮助使用者快速构建输入 / 输出系统的知识体系,精准攻克 I/O 控制方式对比、DMA 传输原理、中断处理流程、磁盘调度算法等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 I/O 接口的软硬件构成、程序查询 / 中断 / DMA 控制方式的差异、中断响应与处理全过程、磁盘调度计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了主机与外设数据交互的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机输入输出系统的整体认知。模板完整覆盖输入 / 输出系统核心考点:从 I/O 系统的基本概念、接口的分类与工作原理,到程序查询、中断、DMA 三种核心 I/O 控制方式的对比;从中断响应与完整处理流程,到磁盘调度算法、DMA 传输原理等计算类高频考点,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。该模板借助万兴脑图软件绘制,助力计算机学习者高效掌握输入 / 输出系统核心知识。
这是一篇关于408考研,期末考试,计算机组成原理,总线的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理总线系统核心知识的高效学习工具。思维导图的结构化呈现方式,将总线概述、总线仲裁、总线操作和定时、总线标准四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入关键原理示意图、性能计算要点与对比说明,帮助使用者快速构建总线系统的知识体系,精准攻克总线分类、仲裁方式、传输定时与性能分析等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将总线的特性与分类、集中式 / 分布式仲裁方式、同步 / 异步传输定时、总线性能指标计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了计算机系统中各部件通过总线进行数据传输的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机系统互连机制的整体认知。模板完整覆盖总线系统核心考点:从总线的基本概念、分类与特性,到总线仲裁的集中式与分布式实现;从总线操作的同步 / 异步 / 半同步定时方式,到总线标准与性能指标计算,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
这是一篇关于408考研,期末考试,计算机组成原理,中央处理器的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理 CPU 核心知识的高效学习工具。思维导图的结构化呈现方式,将 CPU 的功能和基本结构、指令执行过程、数据通路、控制器、指令流水线、多处理器系统六大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、关键概念对比与计算要点,帮助使用者快速构建 CPU 工作原理的知识体系,精准攻克数据通路设计、流水线性能分析、中断处理流程等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 CPU 结构、指令执行周期、数据通路设计、硬布线 / 微程序控制器对比、流水线冲突处理、多处理器系统分类等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了 CPU 从指令取指到执行的完整工作流程,可用于入门学习、底层原理学习的知识框架搭建,快速建立对计算机核心部件的整体认知。模板完整覆盖中央处理器核心考点:从 CPU 的功能与基本结构、指令执行的完整过程,到数据通路的设计原理与分类;从硬布线与微程序控制器的工作原理与对比,到指令流水线的性能指标、冲突处理与多发技术;再到多处理器系统的基本概念与硬件多线程技术,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
第五章 I/O管理
5.1I/O管理概述
IO设备
按传输速率分类
低速设备
Eg;键盘
中通设备
eg.激光打印机
高速设备
Eg:磁盘
按信息交换单位分类
字符设备/流设备
数据传输的基本单位是字符
传输速率低
Eg;键盘
不可寻址
通常采用“中断控制方式”
块设备
数据传输的基本单位是“块
传输速率高
Eg:磁盘
可寻址
可随机地读/写任一块
通常采用DMA控制方式
按设备的共享属性分类
独占设备
一段时间内只允许一个进程访问,属于临界资源
eg.激光打印机
可能导致死锁
共享设备
一段时间内允许多个进程访问,但每个时刻只有一个进程访问(可并发、不可并行)
Eg:磁盘
不会导致死锁
必须是可寻址、可随机访问的设备
虚拟设备
将一台独占设备虚拟为若干台逻辑设备
SPOOLing技术激光打印机
物理上是独占设备,但逻辑上是共享设备
I/O设备的组成
机械部件
执行具体I/O操作
电子部件
I/O控制器/设备控制器
实现对IO设备的控制
CPU无法直接控制I/O设备的机械部件
CPU控制I/O控制器
I/O控制器来控制机械部件
UNIX系统将外部设备抽象为一种特殊的文件
用户可以使用与文件操作相同的方式对外部设备进行操作。
Write操作:向外部设备写出数据
Read操作:从外部设备读入数据
I/O控制器/设备控制器/I/O接口
是主机和外设之间的交接界面
协调主机与外部设备之间的数据传输
I/O控制器组成
CPU与控制器的接口
用于实现CPU与控制器之间的通信。
控制线
CPU向IO控制器发出IO指令
地址线
指明要操作的设备
数据线
来取出(输入)数据,或放入(输出)数据
数据寄存器
输出时
暂存CPU发来的数据,控制器传送设备
输入时
暂存设备发来的数据,CPU取走数据。
暂存输入输出数据
控制寄存器
存放CPU发出的IO命令和参数
状态寄存器
记录I/O设备的当前状态
IO逻辑写入
CPU读出
可能有多个
都要有相应的地址
I/O逻辑
接收和识别CPU的各种命令
对设备发出命令
控制器与设备的接口
实现控制器与设备之间的通信
可能有多个,有编号
一个I/O控制器可能会对应多个设备;
I/O控制器的功能
接受和识别CPU发出的命令
向CPU报告设备的状态
数据交换
三种寄存器
地址识别
由I/O逻辑实现
通过地址来判断CPU要读/写设备控制器中的哪个寄存器
控制器中寄存器的编址方式
内存映像I/O
与内存地址统一编址
寄存器占用内存地址的一部分
优点
简化了指令。
可以采用对内存进行操作的指令来对控制器进行操作
寄存器独立编制
I/O专用地址
寄存器使用单独的地址
缺点
要设置专门的指令来实现对控制器的操作
指明控制器的编号
指明寄存器的地址

I/O控制方式
用什么方式来控制I/O设备的数据读/写
对比
指的是CPU的寄存器
传输单位块,一组快
DMA的“块”是物理传输单位
比如磁盘的扇区
通道的“一组块”是操作系统发起的逻辑请求
比如文件系统的一次读写操作可能包含多个磁盘块
程序直接控制方式
最早期的控制方式
通常用于早年间的慢速设备
CPU干预的频率
I/O操作开始之前、完成之后需要CPU介入
CPU控制I/O设备与主机交换信息
等待I/O完成的过程中CPU通过程序不断地轮询检查
检查
状态寄存器
检测到状态为“已完成”之后,再从数据寄存器取出输入数据.
优缺点
优点:
实现简单
可用软件实现
轮询的过程,执行一系列循环检查的指令
缺点:
CPU和I/O设备只能串行工作
CPU长期处于“忙等”状态
利用率低
读写操作流程
1||| CPU向控制器发出读指令
设备启动,状态寄存器设为1(未就绪)
2||| CPU轮询检查控制器的状态
不断地执行程序的循环,检查状态位是否还是1
将I/O状态信息读入CPU寄存器
设备可能出现错误
3||| 输入设备准备好数据后将数据传给控制器,并报告自身状态
4||| 控制器将输入的数据放到数据寄存器中并将状态改为0(已就绪)
5||| CPU发现设备已就绪
将数据寄存器中的内容读入CPU的寄存器中
再把CPU寄存器中的内容放入内存
6||| 若还要继续读入数据,则CPU继续发出读指令
中断驱动方式
通常“字符型设备”采用
如:鼠标、键盘、打印机
引入中断机制
CPU发出读/写命令后,可将等待I/O的进程阻塞
I/O完成后,控制器向CPU发出中断信号
CPU会在每个指令周期的末尾检查中断;
CPU检测到中断信号,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。
处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。
CPU响应中断请求,并取走数据
接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行。
也可以继续在就绪队列里等待
CPU干预的频率
每次I/O操作开始之前、完成之后需要CPU介入。
等待I/O完成的过程中CPU可以切换到别的进程执行。
主要缺点和主要优点
优点:
CPU和I/O设备可并行工作,CPU利用率提升。
缺点:
每个字的传输,都需要经过CPU
中断发生的频率太高会降低系统性能。
DMA方式(直接存储器存取)
通常”块设备”采用
如磁盘
主要用于块设备的I/O控制
DMA控制器也是一种IO控制器
处理快速IO设备和主存的传送
主存与IO交换信息时由DMA控制器控制,传输完一整块数据才需要中断
CPU干预频率
仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
优缺点
优点:
数据的传输不再需要先经过CPU再写入内存
CPU和I/O设备的并行性得到提升
缺点:
每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的
读入的块要离散地存放在内存不同位置或读入多个离散的块
需要CPU发出多条I/O指令
进行多次中断处理才能完成
数据传输
DMA控制器从磁盘接收数据时是按小单位(如16B)进行的
但向内存传输时是按大单位(4KB)突发传输
传送过程三个阶段
在预处理之前
请求 IO的进程通过系统调用进入内核态
预处理
负责预处理的进程
请求 I/O的进程
由请求I/O的进程在内核态执行相关操作,之后阻塞其自身,直到系统调用返回
需要 CPU 的参与
CPU执行相应的设备驱动程序来设置相关的传输参数
由CPU 初始化DMA 控制器中的有关寄存器、设置传送方向、测试并启动设备等
数据传送
完全由 DMA控制
DMA 控制器接管系统总线
后处理
DMA控制器向 CPU发送中断请求,CPU执行中断服务程序做 DMA 结束处理
负责后处理的进程
中断服务例程
不是一个单独的进程
在后处理阶段请求 IO的进程仍处于阻塞态。
注
DMA 传输前需要进行预处理,传输后需要进行后处理
预处理程序和后处理程序都运行在内核态
操作流程
CPU向DMA接口指明此次要进行的操作
命令被送到其中的命令寄存器CR
如读命令
要读入多少数据
要读数据的字(节)数则送入数据计数器(DC)中
数据要存放在内存的什么位置
该地址被送入内存地址寄存器(MAR)
数据在外部设备上的地址
如:在磁盘上的地址
磁盘中的源地址直接送至DMA 控制器的 IO 控制逻辑上
设置DMA控制器中寄存器的值
启动 DMA 控制器进行数据传送,CPU 便可去处理其它任务。
整个数据传送过程由DMA控制器控制
单字传输模式为例
DMA每从磁盘读一个字就立刻申请总线送入内存
当DMA 控制器已从磁盘中读入一个字(节)的数据并送入数据寄存器(DR)后,再挪用一个存储器周期,将该字(节)传送到 MAR 所指示的内存单元中
接着对 MAR 内容加1,将 DC 内容减1
若减1后 DC 内容不为0,表示传送未完,便继续传送下一个字(节)
为0则由 DMA 控制器发出中断请求
deeps
块传输模式
DMA 控制器从磁盘读入一个字后不会立刻送入内存,而是积累数据块后一次性传
但在已获得总线后,每传输一个字仍需占用一个总线周期
控制器会根据CPU提出的要求完成数据的读/写工作
整块数据传输完成后,才向CPU发出中断信号
DMA控制器在读入数据过程中一个字一个字地读
用一个字一个字方式完成一整块的数据读入工作
DMA 是一种不经过 CPU 而直接从主存存取数据的数据交换模式
它在 IO 设备和主存之间建立了一条直接数据通路,如磁盘
这条数据通路只是逻辑上的,实际并未直接建立一条物理线路,而通常是通过总线进行的
通道控制方式
通常在中大型机、超级计算机中使用
概念
通道
硬件
每个通道都挂接若干外设
可以识别并执行一系列指令(通道指令序列)
与CPU相比,可以执行的指令单一
一个通道可以控制多个I/O控制器,而一个I/O控制器又可以控制多个I/O设备
通道程序
任务清单(一系列指令的集合)
指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息
放在主机内存(主存)中
通道与CPU共享内存
IO 通道
实际上是一种特殊的处理器
它具有执行 IO 指令的能力,并通过执行通道程序来控制 I/O 操作。
CPU干预的频率
通道会根据CPU的指示执行相应的通道程序
完成一组数据块的读/写后才发出中断信号,请求CPU干预。
优缺点
优点:
CPU、通道、I/O设备可并行工作,资源利用率高
缺点:
实现复杂,需要专门的通道硬件支持
操作流程
①CPU向通道发出I/O指令
指明通道程序在内存中的位置
并指明要操作的是哪个IO设备
之后CPU就切换到其他进程执行了
②通道执行内存中的通道程序
控制IO设备完成一系列的任务
③通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理
注
用户进程进入阻塞态
切换到其他进程执行
I/O和CPU并行
I/O子系统的层次结构 I/O软件层次结构
I/O软件层次
用户层软件
实现了与用户交互的接口
用户可直接使用该层提供的与I/O操作相关的库函数对设备进行操作
eg.printf
将二进制整数转换成 ASCII码的格式打印是通过 I/O 库函数完成
将用户请求翻译成格式化的I/O请求
并通过“系统调用"请求操作系统内核的服务
eg:printf(“hello, world!”);会被翻译成等价的 write 系统调用,用户层软件也会在系统调用时填入相应参数
提供操作,翻译操作
产生I/O请求,格式化I/O,SPOOLing
Windows操作系统向外提供的一系列系统调用
系统调用的格式严格
因此在用户层上封装了系列更方便的库函数接口
设备独立性软件/设备无关性软件/系统调用处理层
与设备的硬件特性无关的功能几乎都在这一层实现。
I/O调度、设备保护、 设备的分配与回收、缓冲区管理
不可以直接操纵硬件
主要实现的功能
1. 向上层提供统一的调用接口,并处理这个系统调用
接收系统调用
(如 read/write 系统调用)
将系统调用参数翻译成设备操作命令(根据设备类型选择调用相应的驱动程序)
2. 设备的保护
原理类似与文件保护
设备被看做是一种特殊的文件
不同用户对设备的访问权限不一样。
3. 差错控制
对一些设备的错误进行处理
4. 设备的分配与回收
5. 数据缓冲区管理
原理
缓冲技术
屏蔽设备之间数据交换单位大小和传送速度的差异
6. 建立逻辑设备名到物理设备名的映射关系
根据设备类型选择调用对应的驱动程序
特点
没有涉及硬件的,对各种设备都需要进行的管理工作都是在设备独立性软件层完成
设备驱动程序
管理I/O设备
负责执行操作系统发出的I/O命令,对硬件设备的具体控制
将上层软件发来的抽象 I/O 要求(一系列命令)转换为具体要求(特定设备“能听得懂"的一系列操作),发送给设备控制器,控制设备工作
如read/write
设备驱动程序需要向设备寄存器写入命令,以控制设备的工作状态和数据传输方式
包括设置设备寄存器;检查设备状态等
驱动程序
让操作系统实现对新的硬件进行具体控制的程序的程序
不同型号的设备内部电子部件可能完全不同,硬件特性只有厂家清楚,因此需要特定的驱动程序进行处理
厂家须提供与设备对应的驱动程序
CPU执行驱动程序的指令序列
来完成设置设备寄存器,检查设备状态等工作
驱动程序一般会以一个独立进程的方式存在
特点
直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;
中断处理程序
进行中断处理
当I/O任务完成时,I/O控制器会根据中断信号类型找到相应的中断处理程序并执行
中断处理程序
从设备控制器中读出设备的状态来判断这次IO是不是正常结束
非正常结束
系统会根据异常的原因做出相应的处理
正常结束
中断处理程序从设备控制器的数据寄存器当中读出一个字的数据
经由CPU,放到内存缓冲区当中
读入一个字
设备驱动程序
对这些数据进行进一步的处理
设备独立性软件
再进一步的处理
最后一层一层往上,然后一直返回给用户
输入数据从上往下层层处理
注
在中断I/O方式下,由中断服务程序来完成数据的输入和输出
中断服务程序调用相应的设备驱动程序完成具体I/O
直接和硬件打交道,涉及到硬件细节相关的操作
硬件
执行I/O操作
机械部件
电子部件
只有操作系统才有操作硬件的权力

用户通过调用用户层软件提供的库函数发出的I/O请求
用户层软件通过“系统调用”请求设备独立性软件层的服务
设备独立性软件层根据LUT调用设备对应的驱动程序
驱动程序向I/O控制器发出具体命令
等待I/O完成的进程应该被阻塞
进程切换
中断处理
输入/输出管理
输入/输出应用程序接口
分类
用户层的应用程序无法用一个统一的系统调用接口来完成所有类型设备的I/O
不同设备能完成的功能不同,eg磁盘可以寻址,但键盘不可以
依据设备特性定义
字符设备接口
无地址概念,不需要提供地址参数
块设备接口
网络设备接口/网络套接字接口
实现网络通信
通过ip结合端口来实现的
套接字之间建立点对点的链接
每个套接字绑定一个本机的端口
通过主机ip地址结合套接字绑定的端口可以找到全世界任何一个套接字对象
网络套接字
可以理解为内核空间
可用于接收或者发送数据
用户进程可以使用网络设备相关的系统调用接口来创建一个套接字对象
socket系统调用:
申请创建一个网络套接字
会给用户进程返回一个描述符
可以理解为就是指向这个套接字的一个指针
bind
把这个套接字绑定到本地的某个端口
connect系统调用
使两个套接字之间建立起一个连接
属于应用层链接
在传输层可以指定一种规定好的协议,比如说可以使用TCP或者udp协议等
把本机的套接字连接到另一台机器的套接字上
connect(fd,IP地址,端口号)
指明要将fd所指明的套接字连接到这个IP地址的这个端口
设备独立性软件向应用程序提供的网络设备接口

实现网络通信过程

套接字
绑定端口
返回一个描述符
指向套接字的指针
p1进程给p3进程发送一个数据包
主机一
p1首先在自己的用户区准备好这个数据
使用write系统调用
指明要往fd所指向的这个套接字当中写入这些数据
设备独立性软件
接收到write系统调用后,会把用户进程准备好的数据复制到内核区缓冲区
套接字所对应的一片缓冲区。
这一步是设备独立性软件那一层来完成的事情
绿色的这片区域,可以理解为是设备独立性软件管理的一片缓冲区
调用网络控制器的驱动程序
处理数据
驱动程序
把准备好的数据输出到网络设备上
网络控制器
把数据包发送到网络上
套接字对象知道数据包应该发送到哪个IP地址哪个端口,
网络控制器在发送数据包时,也可以明确地知道这个数据包发往哪
主机二的网络控制器
接收到一个数据包之后向主机发出一个中断信号
中断处理程序
调用网络控制器的驱动程序
驱动程序
把网络控制器里边收到的数据搬到内核的缓冲区里
由于知道这个数据应该发送的端口,所以数据会被复制到端口所对应的内核缓冲区
p3进程接收一个网络数据包
read系统调用
指明要从fd所指的这个套接字对象当中读出一个数据包
设备独立性软件
从缓冲区里把这数据复制到用户进程的用户区当中
用户进程p3就可以使用他收到的这一块数据了
设备驱动程序接口
驱动程序层向上层的设备独立性软件提供一个统一标准的接口
方便操作系统调用
参数
阻塞/非阻塞I/O
阻塞I/O:
应用程序发出I/O系统调用,进程需转为阻塞态等待。
eg: 字符设备接口——从键盘读一个字符get
非阻塞I/O:
应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。
eg:块设备接口——往磁盘写数据write
5.2I/O核心子系统
I/O系统(I/O核心子系统)
构成
设备独立性软件
设备驱动程序
中断处理程序
实现的功能
考研中,我们需要重点理解和掌握的功能是:I /O调度、设备保护、假脱机技术(SPOOLing技术) 、设备分配与回收、缓冲区管理(即缓冲与高速缓存)
假脱机技术(SPOOLing 技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。 408考纲把该功能归为I/O核心子系统要实现的功能之一
功能
I/O调度
用某种算法确定一个顺序来处理各个I/O请求。
设备保护
在UNIX系统中,设备被看做是一种特殊的文件
每个设备也会有对应的FCB
当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限
文件保护功能
假脱机技术(SPOOLing技术)
脱机技术
批处理阶段
脱机输入/输出技术
外围控制机+更高速的设备一磁带
在外围控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上。
之后主机可以从快速的磁带上读入数据
作用
缓解了CPU和慢速I/O设备的速度矛盾
实现预输入、缓输出
输入和输出不需要主机的干预控制
即使CPU在忙碌,也可以提前将数据输入到磁带;
减少CPU等待慢速设备的时间
即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。
假脱机技术/SPOOLing 技术
基本条件
要有高速大容量且可随机存取的外存支持
作为输入井和输出井
SPOOLing软件
注
SPOOLing 并不是将物理设备真的分配给用户进程
各作业在执行期间只使用虚拟设备
实际是对磁盘的存储操作
用软件的方式模拟脱机技术
必要有多道程序技术的支持
构成
输入井,输出井
系统建立
磁盘上
系统在磁盘上开辟的两个存储区域
输入井
模拟脱机输入时的磁带
用于收容I/O设备输入的数据
输出井
模拟脱机输出时的磁带
用于收容用户进程输出的数据
预输入程序管理
输入进程,输出进程
需要和用户进程并发执行
输入进程
模拟脱机输入时的外围控制机
输出进程
模拟脱机输出时的外围控制机
缓输出程序管理
输入缓冲区和输出缓冲区
内存中
在内存中的缓冲区
输入缓冲区
输入进程控制
用于暂存从输入设备输入的数据,之后再转存到输入井中
输出缓冲区
输出进程控制
用于暂存从输出井送来的数据,之后再传存到输出设备上
井管理程序管理
步骤

应用
SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备
可将独占式设备改造成虚拟共享设备
通过这种技术处理后的设备通常称为虚拟设备
同时分配给多个进程使用
共享打印机
独占式设备
只允许各个进程串行使用的设备
一段时间内只能满足一个进程的请求
若进程1正在使用打印机,则进程2请求使用打印机时必然阻塞等待
共享设备
允许多个进程同时使用的设备
宏观上同时使用,微观上可能是交替使用
可以同时满足多个进程的使用请求。
原理
用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们
步骤
在磁盘输出井中为进程申请一个空闲缓冲区,并将要打印的数据送入其中
相当于分配了一个逻辑设备
每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享
为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中
说明用户的打印数据存放位置等信息
再将该表挂到假脱机文件队列上
打印机空闲
输出进程会从文件队列的队头取出一张打印请求表
根据表中的要求将要打印的数据从输出井传送到输出缓冲区
再输出到打印机进行打印
打印完成后,打印文件表就可以从队列中删除
设备的分配与回收
设备分配时应考虑的因素
设备分配的安全性
安全分配方式
为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒
一个时段内每个进程只能使用一个设备
优点:
破坏了“请求和保持”条件,不会死锁
缺点:
对于一个进程来说,CPU和I/O设备只能串行工作
系统资源的利用率低,进程执行效率低
不安全分配方式
进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。
只有某个I/O请求得不到满足时才将进程阻塞。
一个进程可以同时使用多个设备
优点
进程的计算任务和I/O任务可以并行处理,使进程迅速推进
效率高
缺点
有可能发生死锁
设备分配方式
静态分配:
进程运行前为其分配全部所需资源,运行结束后归还资源
破坏了“请求和保持“条件,不会发生死锁
独占设备
动态分配:
进程运行过程中动态申请设备资源
共享设备
设备分配管理中的数据结构
系统设备表(SDT)
记录了系统中全部设备的情况
每个设备对应一个表目

设备控制表(DCT)
每个设备一张
记录设备情况
device

“进程管理”章节中曾经提到过“系统会根据阻塞原因不同,将进程PCB挂到不同的阻塞队列中”
控制器控制表(COCT)
每个设备控制器都一张

通道控制表(CHCT)
每个通道一张

设备,控制器,通道之间的关系
一个系统中可能会有多个通道
一个通道可控制多个设备控制器,每个设备控制器可控制多个设备
对于同一组输入/输出命令,要么 CPU 给通道发出命令,要么 CPU 直接给设备控制器发出命令,不存在并行的可能
设备分配
请求物理设备名
设备分配的步骤
1. 根据进程请求的物理设备名查找SDT
注:物理设备名是进程请求分配设备时提供的参数
2. 根据SDT找到DCT
设备忙碌
将进程PCB挂到设备等待队列中
不忙碌
将设备分配给进程
3. 根据DCT找到COCT
4. 根据COCT找到CHCT
只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功
之后便可启动I/O设备进行数据传送
ds
从具体到抽象的资源分配原则
设备状态最具体(物理层面),控制器次之(链路层),通道最抽象(逻辑控制层)
计算机系统总是优先检查最不可控的物理资源,再逐级向上确认可控资源(控制器/通道程序)
缺点
用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程
若换了一个物理设备,则程序无法运行
若进程请求的物理设备正在忙碌,则即使系统中还有同类型设备,进程也必须阻塞等待
改进
逻辑设备表(LUT,Logical Unit Table)
建立了逻辑设备名与物理设备名之间的映射关系
确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序
进程所需类型设备全部处于忙碌状态才需要把进程阻塞
两种管理方式
整个系统只有一张LUT:
各用户所用的逻辑设备名不允许重复
适用于单用户操作系统
每个用户一张LUT:
不同用户的逻辑设备名可重复
适用于多用户操作系统
用户登录时为其建立一个用户管理进程,而LUT就放在PCB中
文件管理单级目录和两级目录的区别
步骤
根据进程请求的逻辑设备名查找SDT
表目:设备类型
即逻辑设备名
用户请求使用一个设备时所提供的名字
根据设备类型选择调用对应的驱动程序
用户进程第一次使用设备时
使用逻辑设备名向操作系统发出请求
操作系统根据用户进程指定的设备类型(逻辑设备名)查找系统设备表
找到一个空闲设备分配给进程,并在 LUT中增加相应表项。
用户进程再次通过相同的逻辑设备名请求使用设备
操作系统通过LUT表知道用户进程实际要使用的物理设备
包括该设备的驱动程序入口地址
缓冲区管理
缓冲区
一个存储区域
可以由专门的硬件寄存器组成
快表
成本较高,容量也较小
仅用在对速度要求非常高的场合
也可利用内存作为缓冲区
一般利用内存作为缓冲区
“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区
若题目中没有特别说明,一个缓冲区的大小就是一个块
缓冲区的作用
缓和CPU和I/O速度不匹配的矛盾
减少CPUI/O的中断频率,放宽对CPU响应时间的限制
解决基本数据单元(数据粒度)不匹配的问题
如:输出进程每次可以生成一块数 但I/O设备每次只能输出一个字符
提高CPU和I/O的并行性
特点
当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出
当缓冲区为空时,可以往缓冲区冲入数据
但必须把缓冲区充满以后,才能从缓冲区把数据传出
和管道区别
分类
单缓冲
操作系统会在主存中为其分配一个缓冲区
用户进程请求某种块设备读入若干块的数据
用户进程的内存空间中,会分出一片工作区来接受输入/输出数据(一般也默认工作区大小与缓冲区相同)
常考题型:计算每处理一块数 据平均需要多久?
技巧:计算处理一个磁盘块数据的平均时间,可以假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间。
在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空。

结论:采用单缓冲策略,处理一块数据平均耗时MAX(T,C)+M
缓冲区到工作区的时间不可省略
两个可以并行的CPU处理和设备到缓冲区找最大的
双缓冲
操作系统会在主存中为其分配两个缓冲区
假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空

结论:采用双缓冲策略,处理一个数据块的平均耗时为MAX(T,C+M)
使用单/双缓冲通信
两台机器之间通信时,可以配置缓冲区用于数据的发送和接受。
单缓冲
任一时刻只能实现数据的单向传输
A机
要发送的数据要先放入A机缓冲区中,等缓冲区满时将数据发出
B机
将缓冲区中的数据全部取走后,才能向A机发送数据
双缓冲
同一时刻可以实现双向的数据传输
可两个缓冲区分别向对方发数据
循环缓冲区
将多个大小相等的缓冲区链接成一个循环队列。
in 指针,指向下一个可以冲入数据的空缓冲区
即第一个空缓冲区
out 指针,指向下一个可以取出数据的满缓冲区
即第一个满缓冲区

缓冲池
由系统中共用的缓冲区组成
按使用状况可以分为
空缓冲队列
输入队列
装满输入数据的缓冲队列
输出队列
装满输出数据的缓冲队列
从哪拿,用完后放哪
实际运算中扮演的功能不同
用于收容输入数据的工作缓冲区(hin)
用于提取输入数据的工作缓冲区(sin)
用于收容输出数据的工作缓冲区(hout)
用于提取输出数据的工作缓冲区(sout)
输入进程需要输入数据时
从空缓冲队列队头中取出一块作为收容输入数据的工作缓冲区
冲满数据后将缓冲区挂到输入队列队尾
计算进程想要取得一块输入数据
从输入队列队头取得一块冲满输入数据的缓冲区作为 提取输入数据的工作缓冲区
数据被送到计算进程的工作区中,数据被取空
缓冲区读空后挂到空缓冲区队列
计算进程想要将准备好的数据冲入缓冲区
从空缓冲队列中取出一块作为收容输出数据的工作缓冲
数据冲满后将缓冲区挂到输出队列队尾
输出进程请求输出数据时
从输出队列中队头取得一块冲满输出数据的缓冲区作为 提取输出数据的工作缓冲区
缓冲区读空后挂到空缓冲区队列队尾
教材补充
通道类型
字节多路通道
每个子通道连接一台I/O设备
子通道通过时间片共享主通道
不适于连接高速设备
数组选择通道
可以连接多台高速设备
只含有一个分配型子通道
通道的利用率低
数组多路通道
含有多个非分配型子通道
通道既具有很高的数据传输速率,又有令人满意的通道利用率
广泛用于连接多台高、中速的外围设备
数据传输按数组方式进行
设备驱动程序的处理过程
将抽象要求转换为具体要求
例如将抽象的盘块号转换为盘面、磁道号和扇区
对服务请求进行校验
如用户请求从打印机输入数据,驱动程序能检查出非法
检查设备的状态
检查设备控制器中的状态寄存器
传送必要的参数
如利用RS232C接口进行异步通信,应设定波特率、奇偶校验方式、停止位数目及数据字节长度
启动I/O设备
向控制器的命令寄存器传送相应的控制命令
指的是CPU的寄存器