I/O输入系统
I/O输入系统
设备驱动
系统为不同的设备设计了不同的设备驱动程序
- 对于不同的硬件,为I/O子系统提供了统一的设备访问接口,遗憾了I/O控制器的不同
- 根据I/O子系统的要求完成对硬件设备的具体访问
- 是设备硬件和系统之间的桥梁
- 简化了I/O子系统的设计
类似于 VFS,为不同文件系统提供了统一的接口。
ioctl() UNIX提供一个系统调用ioctl(),用户可以通过该系统调用直接通过设备驱动程序操纵I/O设备

I/O应用接口


阻塞与非阻塞I/O
当应用程序发出一个阻塞系统调用时,应用程序就被挂起进入等待队列,在系统调用完成后,程序移回运行队列。
有些用户及进程需要非阻塞I/O,鼠标键盘。
I/O内核子系统
I/O调度
缓冲 Buffer
缓冲区,是用来保存两设备之间或者设备和应用程序之间所传输数据的内存区域。
为什么要使用缓冲区
1、协调数据流的生产者和消费者之间的速度差异。
比如调制解调器大约比硬盘慢一千倍,可以在内存中创建缓冲区,累计从调制解调器中接收到的字符,当整个缓冲区填满可以通过一次操作将缓冲区中的内容写入磁盘。
2、协调传输数据大小不一致的设备。比如在计网中,缓冲常常用来就收处理消息的段和分组
3、支持程序I/O复制语义。
复制语义: 当某程序需要将数据保存在磁盘上时,可以调用系统调用write(),内核将buffer中数据写入磁盘书,进程对buffer进行了修改。如果此时禁止访问buffer,效率降低,将应用缓冲区复制到内核缓冲区中。磁盘写会在内核缓冲区中执行,这样后来的程序缓冲区的改变就没有影响。
如果采用互斥,对buffer加锁,就会影响系统的性能。
4、减少对CPU的中断频率
I/O操作每传送一个字节,就要产生一次终端。
如果设置了n个字节的缓冲区,等缓冲区满才产生中断,中断次数减少到1/n。中断响应时间也可以放宽。
5、提高CPU和I/O设倍之间的并行性
缓冲区的类型
单缓冲
每当用户发出I/O请求,OS便在主存中位置分配一个缓冲区。
在块设备传输时,假设磁盘把数据输入到缓冲区的时间为T,OS将数据传送到用户去的时间为M,cpu处理时间c
T和C可以并行
系统对每一块的处理时间为:MAX(T,C)+M

双缓冲区
单缓冲区必须互斥。
双缓冲区:
设备输入时,先将数据送第一缓冲区,装满后送第二缓冲区。
双缓冲时,系统处理一块的时间可以认为是MAX(T,C)


高速缓存(caching)
保留数据副本的高速存储器。告诉副本的访问,比原始数据的访问更高效。
假脱机和设备预留
设备预留
解决设备的互斥访问问题,没有有效的提高设备的利用率。
允许进程分配一个空闲设备,当进程不再需要时,释放该设备。
SPOOLING 假脱机
- Simultanuous Peripheral Operations On Line
- 外部设备联机并行操纵
- 又称假脱机I/O
- 解决独占设备的并发访问问题,提高设备和CPU的利用率
脱机输入 :利用专门的外围控制器,将低俗设备上的数据预先读入到磁盘上,主机从磁盘上直接读入数据。
脱机输出 :主机将输出数据写入磁盘,利用专门的外围控制器,将磁盘上的数据在低俗I/O设备上输出。
SPOOLing技术: 利用一台可共享的高速大容量块设备(通常是磁盘),来模拟共享设备的操作,使一台独享设备,变为多台可并行使用的虚拟设备,将独享设备变为逻辑上的共享设备。


SPOOLing技术中,利用输入进程和输出进程模拟脱机I/O中的专用I/O控制机,有的OS采用线程实现。
- 当用户提交一个文档给打印机时,系统为该打印请求在磁盘上创建一个文件,然后将欲打印的文档内容写入该文件中。
- 同时在系统的打印队列中创建一张打印表
- 系统依次将打印队列中的打印请求提交给打印机打印
基于SPOOLING技术,OS将物理打印机虚拟为磁盘上的一个文件
SPOOLING系统的构成

输入井与输出井(模拟脱机I/O中的磁盘)
在磁盘上开辟两块存储空间
输入输出井模拟脱机输入输出的磁盘
设置井管理进程,对输入输出井进行管理
输入输出缓冲区
暂存用于输入输出的数据,传入输入井,或来自输出井
输入输出进程
模拟输入输出机
请求输出队列
系统为每个请求输出的进程建立一张请求输出表,若干张表形成一个请求输出队列,当输出设备空闲时,按该队列顺序依次输出。

SPOOLING系统的特点
采用SPOOLING技术管理打印机,给用户感觉像是每个用户独占一台速度很高的打印机 — 虚拟打印机;否则用户进程一次等待低速的打印机打印数据,降低了进程的推进速度。
SOOPLING技术将一台物理打印机,改造成了多台虚拟打印设备。
- 提高I/O速度
- 将独占设备改造成共享设备
- 实现了虚拟设备
设备独立性
也叫设备无关性:应用程序独立于具体使用的物理设备
逻辑设备与物理设备
- 在应用程序中,使用逻辑设备名来请求某类设备
- 进程在申请设备时,请求的是逻辑设备操作系统会将系统中目前空闲可用的物理设备分配给该进程。
- 操作系统需要借助逻辑设备表(LUT)完成逻辑设备到物理设备的映射
优点
- 设备分配时灵活
- 易于实现I/O重定向
实现
- 在设备驱动之上,设置一层“设备独立性软件”,以执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(LUT)冰箱用户层软件提供统一的接口,从而实现设备独立性。
- 操作系统将所有的外部设备统一党作文埃及你来看待,然和用户都可以像使用文件一样,操纵、使用这些设备,而不必知道他们的具体存在形式。
本文详细阐述了I/O输入系统中的设备驱动、阻塞与非阻塞I/O、缓冲区的作用及其类型,以及SPOOLing技术和设备独立性的实现。涵盖了缓冲协调、高速缓存、设备预留和SPOOLing系统构成等关键概念。

被折叠的 条评论
为什么被折叠?



