操作系统漫游(五)输入输出系统
1651字约6分钟
操作系统
2018-06-07
操作系统中的I/O系统用于管理I/O设备(打印机、扫描仪等)和存储设备(磁盘驱动器、磁带机等)。
I/O系统的基本功能
- 方便用户使用I/O设备
- 提高CPU和I/O设备的利用率
- 为用户在共享设备时提供方便
I/O系统对I/O设备的控制
对 I/O设备进行控制是驱动程序的功能。目前包括 4 种控制方式:
- 采用轮询的可编程 I/O 方式
- 采用中断的可编程 I/O 方式:适用于打印机、键盘终端等低速设备
- 直接存储器访问方式(DMA):适用于磁盘、光盘等高速设备
- I/O通道方式:使I/O操作的组织和运行无需CPU的干预,独立运行。
I/O系统的层次结构
I/O软件分层
通常把I/O软件组织成四个层次:
- 用户层I/O软件:产生I/O请求,格式化I/O,Spooling
- 设备独立性软件:映射、分块、保护、缓冲、分配
- 设备驱动程序:设置设备寄存器:检查状态
- 中断处理程序:中断处理
经过四个层次之后,I/O操作将交给硬件执行。
I/O系统分层
- 中断处理程序:直接与硬件进行交互
- 设备驱动程序:进程和设备控制器之间通信的程序,将上层的I/O请求转化为具体的命令和参数。一般驱动程序都是由设备制造商提供,而非OS设计者。
- 设备独立性软件:软件独立于具体使用的物理设备。好处是增加新设备和替换老设备时不需对I/O软件进行修改
I/O系统接口
在 I/O系统中,根据类型不同,可分为三种接口:块设备接口、流设备接口、网络接口。
块设备接口
所谓块设备,是指数据的存储和传输都是以块为单位的设备,例如磁盘。其特点是传输速率高,能够寻址,可随机读写其中任意一块。磁盘设备的I/O常采用 DMA 方式。
块设备接口隐藏了磁盘的二维结构,将抽象的命令映射为低层的操作。
虚拟存储器也需要块设备接口。因为当发生缺页中断时,需要通过块设备接口从磁盘中调入所缺的页面。
流设备接口
流设备接口又称为字符设备接口。所谓字符设备,是指数据的存储和传输是以字符为单位的设备,例如键盘、打印机。其特点是传输速率低,不可寻址。字符设备的I/O常采用中断驱动方式。
由于字符设备不可寻址,因此只能顺序存储。通常,我们会为字符设备建立一个缓冲区(队列),字符流在缓冲区中读写。分别使用 get 和 put 操作来读和写。
大多数流设备都属于独占设备(例如打印机),因此必须采用互斥方式实现共享。流设备接口提供来 open 和 close 操作,如果被 open 表示正在被某个进程使用。
网络通信接口
通过网络通信接口,计算机可以与网络上的其他计算机通信。
I/O 设备和设备控制器
I/O设备包括:执行I/O操作的机械部分 和 执行I/O控制的电子部分。
机械部分是一般的I/O设备,而电子部分称为设备控制器或适配器(adapter)
设备控制器
设备控制器的作用是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它接收CPU发来的命令,去控制I/O设备工作,使处理机从繁杂的设备控制事务中解脱出来。
设备控制器基本功能包括:
- 接收和识别指令
- 数据交换
- 标识和报告设备的状态
- 地址识别
- 数据缓冲区
- 差错控制
I/O通道
虽然有来设备控制器,CPU对I/O的干预已经减少了。但是外设变多的时候,CPU还是负担很重。为此,又增设了 I/O通道(I/O Channel)。
I/O通道的作用是建立独立的I/O操作,使数据的传送独立于CPU,而且有关对I/O的操作都尽量独立。解放CPU。
有来I/O通道,CPU只需向通道发送一条指令,通道便开始执行通道程序。待完成来之后向CPU发送响应中断。
实际上,I/O通道是一种特殊的处理机。
在单处理机系统中,I/O通道和处理机可以实现并行操作。
假脱机(Spooling)系统
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机。
类似地,假脱机技术(Simultaneous Peripheral Operation On-Line, SPOOLing),就是将一台 物理I/O设备 虚拟为多台 逻辑I/O设备,这样就允许多个用户共享一台物理I/O设备。
Spooling技术通过预输入和缓冲输出,将低速的I/O设备上的数据传送到高速磁盘上,把独占设备改造成了共享设备,使得多个作业同时使用设备。在Spooling中,设备与输入输出井之间的数据传输是由外围控制机实现的,而不是用户程序控制。
磁盘调度算法
为了减少磁盘寻道的时间,我们需要采用合适的磁盘调度算法。常见的磁盘调度算法包括:
- 先来先服务(FCFS):先来先服务
- 最短寻道时间优先(SSTF):寻道时间短的优先,但是会导致“饥饿”现象
- 扫描算法(SCAN,电梯算法):根据磁头方向,先上再下,或先下再上
- 循环扫描算法(CSCAN):先上到顶,然后从底开始上;或者反过来先下到底,然后从顶往下 (方向一致)
- N步扫描
- FSCAN
文件控制块(FCB)
FCB包括文件名、扩展名、物理位置、逻辑结构、物理结构、存取权限、建立日期、修改日期、使用信息等。
当我们使用 open 打开一个文件时,把文件的FCB调入了内存,但没有将文件内容读入内存。