操作系统的设备管理——IO系统
一、啥是IO系统
操作系统是一种特殊的管理系统,管理与计算机相关的各种资源,往大了说,包括硬件资源和软件资源,细化了说,包括计算资源、内存资源、文件资源、设备资源。本文主要讲解设备管理的相关内容。
1、OS管理的设备有哪些
所有能连接到计算机上的设备都归操作系统管理,例如键盘、鼠标、显示器、音响、麦克风、CD、磁盘、U盘、硬盘、打印机等等。这些设备不管多么”千奇百怪“,无非就是两类,要么是输入设备(Input Device),要么就是输出设备(Output Device),或者它很强悍,既是输入设备又是输出设备。因为所有连接到计算机上的设备,它要么就是为了让我们给计算机下达命令的,要么就是为了让计算机将处理结果展示给我们看的。因此,OS设备管理系统也叫IO(Input/Output)系统。
2、设备的不同分类以及特点
1)按数据传输方向
- 输入设备:外部——>计算机
- 输出设备:计算机——>外部
2)按使用方式
- 人机交互设备:键盘、显示器;速度慢
- 存储:硬盘、U盘;速度快
- 网络通信:路由器、交换机;速度介于前两者之间
3)按数据传输单位
- 块设备:磁盘,U盘;速度快,可以寻址
- 字符设备:键盘、鼠标;速度慢,不可寻址
3、设备的组成
这里所说的设备组成是指设备无关的组成,它与具体的设备类型无关。
任何设备都由两部分组成,包括机械部件和电子部件
机械部件:CPU不可直接操控
电子部件:可以与CPU交互,相当于CPU与硬件的翻译官,它也叫做IO控制器
4、IO系统的系统层次结构以及职责

用户应用软件:提供给用户操作设备的接口,可以说是千奇百怪(不同语言表的函数不同:print、console.log、alert、scan、input、read、write)
设备独立性软件:管理不同设备抽象出来的通用功能,与具体设备实现无关,如设备权限管理、设备映射表、io调度等

设备驱动:实际驱动设备运行的程序,它随设备的不同而不同,如不同设备的指令集不同,状态表示方式也不同等
中断处理:IO管理是基于中断来实现的
硬件:IO控制器就位于这一部分,它只是IO系统的一部分,负责处理具体设备操控的功能
二、啥是IO控制器
1、IO控制器能干啥
IO控制器是CPU和硬件之间进行指令传输的中间让人,负责将CPU下达的任务告诉设备,也负责将设备执行的结果告知CPU,具体功能如下:
- 接受&识别CPU指令——控制寄存器
- 向CPU反馈设备状态——状态寄存器
- 进行双向的数据传输——数据寄存器
- 负责地址识别——地址寄存器
2、IO控制器能架构
依据IO控制器的功能,以及它作为中间人的角色,可以知晓它应该由三部分组成:跟CPU沟通的part+自己思考的part+与设备沟通的part
1)与leader(CPU)交互的部分
- 数据寄存器:传输的具体数据内容
- 控制寄存器:指令
- 地址寄存器:具体操作io控制器中哪个寄存器
- 状态寄存器:设备状态,是否已完成任务
2)自己逻辑处理的部分
命令转述,没啥可说的
3)与下属(设备)交互的部分
三、IO管理的模式
1、程序直接控制
【特点】
简单,但浪费cpu,因为它以cpu轮询的方式确认任务执行情况,俗称傻等
数据处理单位级别是字
【数据传输方式】
内存——cpu寄存器——控制器寄存器——设备
2、中断驱动控制
【特点】
解决程序直接控制傻等的缺陷,减少了cpu的干扰频率,但干扰依然频繁,因为每个中断是以字节为单位处理的,当数据量很大时,cpu开销很大
【数据传输方式】
内存——cpu寄存器——控制器寄存器——设备
3、直接内存控制DMA
【特点】
解决DMA控制cpu干扰依然频繁的问题,数据处理单位为块,比以字节为单位处理好了很多,并且,可以直接与内存交互,不需要经过cpu
【数据传输方式】
内存——控制器寄存器——设备

4、通道控制
【特点】
比DMA更好,通道相当于有一个能力很弱的CPU,可独立负责IO任务(也仅限于能处理IO任务),当全部处理完才通知cpu
【数据传输方式】
内存——控制器寄存器——设备
四、脱机技术
属于用户软件层技术,它是一种虚拟技术,可以让独占设备呈现共享的假象。它会让交给独占设备的任务进行排队,并在磁盘为该任务分配一个输入或输出井,让传输的数据先存入外存中,脱离直接人机交互的模式,实现后续设备与设备的交互,可以提高处理速度。这种方式类似于批处理时代,纸袋交互转变磁带交互的方式。