-
I/O
就是输入/输出
(Input/Output)。 - I/O设备就是可以将数据输入到计算机,或接收计算机输出数据的外部设备,属于计算机中的硬件部件。
-
输入型设备
:鼠标、键盘等。 -
输出型设备
:显示器等。 - 既可以输入、又可以输出的设备:移动硬盘。
-
- Unix系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
- write操作:向外部设备写出数据;
- read操作:从外部设备读入数据。
- I/O设备的分类:
-
按使用特性
:-
人机交互类外部设备
:鼠标、键盘、打印机等。作用:用于人机交互。特点:数据传输速度慢。 -
存储设备
:移动硬盘,光盘等。作用:用于数据存储。特点:数据传输速度快。 -
网络通信设备
:调制解调器等。作用:用于网络通信。特点:数据传输速度介于上述两者之间。
-
-
按传输速率
:-
低速设备
:鼠标、键盘等---传输速率为每秒几个到几百字节。 -
中速设备
:激光打印机等---传输速率为每秒数千至上百万个字节。 -
高速设备
:磁盘等---传输速率为每秒数千字节至千兆字节。
-
-
按信息交换的单位分类
:-
块设备
:磁盘等---数据传输的基本单位是“块”。特点:传输速率较高,可寻址
,即对它可随机地读写人一块。 -
字符设备
:鼠标、键盘等---数据传输的基本单位是字符。特点:传输速率慢,不可寻址
,在输入/输出时常采用中断驱动
方式。
-
-
- I/O设备由2部分组成:①
机械部件
:主要用来执行具体的I/O操作;②电子部件
(I/O控制器、设备控制器):通常是一块插入主板扩充槽的印刷电路板。 -
I/O控制器(又称为设备控制器)
:实现CPU可控制I/O控制器。又由I/O控制器来控制设备的机械部件。




- I/O控制方式:①
程序直接控制
;②中断驱动
;③DMA
方式;④通道控制
。








-
用户层软件
:实现了与用户交互的接口
,用户可以直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。用户层软件将用户请求翻译成格式化的I/O请求,并通过系统调用
请求操作系统内核的服务。 -
设备独立性软件
(又称为设备无关性软件):与设备的硬件特性无关的功能几乎都在这一层实现。主要实现的功能:①向上层提供统一的调用接口(如read/write系统调用);②设备的保护,原理类似与文件保护;③差错处理;④设备的分配与回收;⑤数据缓冲区管理:可通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异;⑥建立逻辑设备名到物理设备名的映射关系:根据设备类型选择调用相应的驱动程序,其实现通过逻辑设备表(LUT,Logical Unit Table)
来确定逻辑设备对应的物理设备
,并找到该设备对应的设备驱动程序
。 - 操作系统可以采用两种方式管理
逻辑设备表(LUT)
:-
整个系统只设置一张LUT
,这意味着所有用户不能使用相同的逻辑设备名,因此,这种方式只适用于单用户操作系统
。 -
为每个用户设置一张LUT
,各个用户使用的逻辑设备名可以重复,适用于·多用户操作系统·。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中。
-

- 不同设备的内部硬件特性也不同,这些特定只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列来完成设置设备寄存器,检查设备状态等工作。
-
设备驱动程序
:主要负责对硬件设备的具体控制,将上层发出的一系列命令(如:read/write)转化成特定设备“能听得懂”的一系列操作,包括设备寄存器,检查设备状态等。注:驱动程序一般会以一个独立进程的方式存在。


-
手工操作阶段
:主机直接从I/O设备获得数据,由于设备速度慢,主机速度很快,人机速度矛盾明显,主机要浪费很多时间来等待设备。 -
批处理阶段
:引入了脱机输入/输出技术(用磁带完成)。


-
假脱机技术(又称为SPOOLing技术)
:是用软件的方式模拟脱机技术。要实现SPOOLing技术,必须有多道程序技术的支持。系统会建立“输入进程”和“输出进程”。



- 设备分配时应考虑的因素:
- 设备的固有属性,分为3种:
- 独占设备:一个时段只能分配给一个进程(如打印机)
- 共享设备:可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
- 虚拟设备:采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing技术实现的共享打印机)。
- 设备分配算法:先来先服务,优先级高者优先,短任务优先。
- 设备分配中的安全性,分为2种:
-
安全分配方式
:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。一个时间段内每个进程只能使用一个设备。- 优点:破坏了“请求和保持”条件,不会发生司死锁。
- 缺点:对一个进程来说,CPU和I/O设备只能串行工作。
-
不安全分配方式
:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求,只有某个I/O请求得不到满足时才将进程阻塞。一个进程可以同时使用多个设备。- 优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进。
- 缺点:有可能发生死锁(死锁避免,死锁的检测和解除)
-
- 设备的固有属性,分为3种:
-
静态分配
:进程运行前为其分配全部所需资源,运行结束后归还资源。破坏了请求和保持条件,不会发生死锁。 -
动态分配
:进程运行过程中动态申请设备资源。

-
设备控制表(DCT)
:系统为每个设备配置一张DCT,用于记录设备情况。

-
控制器控制表(COCT)
:每个设备控制器都会对应一张COCT,操作系统根据COCT的信息对控制器进行操作和管理。

-
通道控制表(CHCT)
:每个通道都会对应一张CHCT,操作系统根据CHCT的信息对通道进行操作和管理。

-
系统设备表(SDT)
:记录了系统中全部设备
的情况,每个设备对应一个表目。




-
缓冲区
是一个存储区域,可以由专门的硬件寄存器
组成,也可利用内存作为缓冲区。使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)

- 假设某用户进程请求某种设备读入若干块的数据,①若采用
单缓冲
的策略,则操作系统会在主存中为其分配一个缓冲区(默认为一个块)。注意:当缓冲区数据非空时,不能往缓冲区中传入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区传入数据,但必须把缓冲区充满后,才能从缓冲区把数据传出。②若采用双缓冲
的策略,操作系统会在主存中为其分配两个缓冲区。






网友评论