IO管理概述
IO管理目标与功能
计算机系统中的IO设备按使用特性可以分为一下类型:
- 人机交互类外部设备,又称慢速IO设备,用于桶计算机用户之间交互的设备,如打印机、显示器、鼠标、键盘等。这类设备数据交换速度相对较慢,通常是以字节为单位进行数据交换。
- 存储设备,用于存储程序和数据的设备,如磁盘、磁带、光盘等。这类设备用于数据交换,速度较快,通常以多字节组成的块为单位进行数据交换。
- 网络通信设备,用于与远程设备通信的设备,如各种网络接口、调制解调器等。其数据交换速度介于外部设备与存储设备之间。网络通信设备在使用和管理上与前两者设备有很大的不同。
按速度来分
- 低速设备,传输速率仅为每秒钟几个字节至数百个字节的一类设备,如键盘、鼠标等。
- 中速设备,传输速率在每秒数千个字节至数万个字节的一类设备,如行式打印机、激光打印机等。
- 高速设备,传输速率在数百个千字节至千兆字节的一类设备,如磁带机、磁盘机、光盘机等。
按共享性划分
- 独占设备:通常分配给某个进程,在该进程释放之前,其他进程不能使用。 如打印机和纸带读入机
- 共享设备:允许若干个进程同时使用。如硬盘
- 虚拟设备:通过假脱机技术把原来的独占设备改造成若干进程所共享的设备,以提高设备的利用率。
IO设备管理的主要目标有以下三个方面。
- 方便使用:方便用户使用外部设备,控制设备工作完成用户的输入输出要求。
- 提高效率:提高系统的并行工作能力,提高设备的使用效率。
- 方便控制:提高外围设备和系统的可靠性和安全性,以使系统能正常工作。
IO设备管理的功能主要包括:
- 设备的分配和回收。
- 外围设备的启动。
- 对磁盘的驱动调度。
- 外部设备中断处理。
- 虚拟设备的实现。
IO控制方式
程序直接控制方式
这个最原始的方式的特点是I/O过程中,CPU全程阻塞。传输单位是一个字节
中断控制方式
这种控制方式的特点是I/O过程中,CPU跟I/O控制器并行工作,无需阻塞。传输单位是一个字节。
DMA控制方式(Direct Memory Access)
数据传送单位是:”块“
不再需要CPU“取”,可以通过DMA控制器直接将数据存入内存
需要CPU部分资源
通道控制方式
传输单位可以是一组数据块
通道是一种简单的类CPU,通道可以执行一系列通道指令
CPU通过通道指令进行IO
IO缓冲
缓冲的作用
首先我们要知道CPU和传统的I/O设备之间的速度差别很大,CPU速度远远高于I/O设备。
在没有缓存的情况下,当有每一条数据被处理完,就会被传入I/O设备,在数据传输的过程中,CPU会被阻塞,导致CPU利用率低,可用的有效时间被浪费。或许有人会说,这时候CPU可以去做其他事情呀!但是,这样会造成CPU频繁切换进程,反而性能会更差。
在有了缓存的情况下,CPU一次处理大量数据,接着,缓存中的数据再传输到I/O设备中,此时(也就是传输过程中)CPU可以切换到其他线程进行工作,由于缓存是一次性向I/O设备传输大量数据,所以不会造成CPU频繁切换进程,提升了CPU的有效利用率。
Java中的缓冲区buffer也是这个道理,网络I/O,以及设备的I/O也是这样。
磁盘管理
磁盘的结构
磁盘安装在一个磁盘驱动器中,它由磁头臂、用于旋转磁盘的主轴和用于数据输入/输 出的电子设备组成。如图4-24所示,多个盘片垂直堆叠,组成磁盘组,每个盘面对应一个 磁头,所有磁头固定在一起,与磁盘中心的距离相同且一起移动。所有盘片上相对位置相同 的磁道组成柱面。按照这种物理结构组织,扇区就是磁盘可寻址的最小存储单位,磁盘地址 用“柱面号 • 盘面号 • 扇区号(或块号)”表示。
磁盘调度算法
一次读/写磁盘的操作总共由3部分组成:寻找时间,延迟时间,传输时间
- 寻找时间
先来先服务
FCFS算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法
最短寻找时间有限
SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。
扫描算法(电梯算法)
SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象,如图4-27所示。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和 SSTF算法好。
循环扫描算法
在扫描完成一个方向后,从头开始继续扫描。