目录
设备管理概述
三种设备管理方法
- OS直接操纵设备的运行
直接程序控制、中断方式
- OS间接操纵设备的运行
DMA和管道方式
- OS通过使用设备驱动程序
将设备管理工作通过任务(进 程)的形式来体现。OS只需制定标准,将具体操纵设备的程序交给不同 的制造商去开发
I/O控制方式
设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送
程序直接控制(查询)方式
(轮询)
1. 当进程需要数据时,CPU向设备控制器发出IO指令启动工作
2. 当设备输入输出数据期间,CPU不断查询设备状态,检查IO工作是否完成
3. 若完成,对于输入操作CPU从寄存器取数,否则继续检查
中断控制方式
中断是大部分IO的处理方式
1. CPU发送read指令,然后做其他工作,与IO并行
进程A有IO请求,则向IO控制器发read指令,然后A阻塞,调度其他进程工作
2. read IO 状态
- 检查IO状态是否就绪
- 若未就绪则进行出错处理
- 若就绪CPU从IO读取数据,然后写入内存
直接内存存取方式 - DMA
将一些简单任务交给DMA(直接内存存取)
1. 进程需要设备输入数据时,CPU对DMA进行初始化
2. 进程阻塞,等待数据输入完成
3. DMA控制数据传输
通道控制方式(智能设备)
通道具有简单CPU功能,可管理多个设备同时工作,真正实现CPU与外设并行工作
缓冲技术
缓冲的目的
解决CPU与外设速度不匹配的矛盾,提高CPU与外设之间的并行性,减少对CPU的中断频率
缓冲技术的实现方法
- 硬件缓冲
利用专门的硬件寄存器作为缓冲区,一般由外设自带的专用寄存器
- 软件缓冲
借助操作系统的管理,在内存中专门开辟若干单元作为缓冲区
- 单缓冲
- 在内存中开辟一个固定大小的区域作为缓冲区
- 外设与CPU对缓冲区的操作是串行的
- 双缓冲
- 内存中设置2个大小相同的缓冲区
- 并行:外设与CPU交替使用
- 环形缓冲
- 内存中设置大小相等的多个缓冲区,并链接成一个环形链表
- 缓冲池
多个大小相同的缓冲区组成
- 池中的缓冲区是系统公共资源,所有进程共享
- 由系统管理程序统一管理,负责分配回收工作
SPOOLING
外部设备同时联机操作(假脱机操作)
磁盘设备
认识磁盘
- 磁盘的寻址单位、访问单位:扇区
- 扇区大小:512字节
- 扇区的大小是传输时间和碎片浪费的折中
- 磁盘访问延迟 = 队列时间 + 控制器时间 + 寻道时间 + 旋转时间+传输时间
寻道时间:8~12ms
旋转时间:4~8ms(半周)
传输时间:0.25ms
磁盘调度
多个磁盘访问请求时
目标:使平均访问延迟最小
主要考察:寻道时间
FCFS先到先服务磁盘调度
实例: 磁头开始磁道位置=53;请求队列=98, 183, 37, 122, 14, 124,65,67
按请求的顺序调度:183-53 + 183-37 + 122-37 + 122-14 + 124-14 + 124-65 + 67-65
移动640条磁道
SSTF最短寻道时间优先
实例: 磁头开始位置=53;请求队列=98, 183, 37, 122, 14, 124,65,67
53 -> 65 -> 67 -> 37 -> 14 -> 98 -> 122 -> 124 - > 183
SSTF: 磁头共移动 236=(14+53+169) 磁道
- 缺点:存在饥饿问题:最远的等很久
SCAN扫描/电梯算法
实例: 磁头开始位置=53;请求队列=98, 183, 37, 122, 14, 124,65,67
SSTF+中途不回返(解决饥饿问题)
53 -> 65 -> 67 -> 98 -> 122 -> 124 -> 183 -> 37 -> 14
SCAN: 移动236 ( 130 + )
缺点:不利于远离磁头一端的访问请求
C-SCAN循环扫描磁盘调度
实例: 磁头开始位置=53;请求队列=98, 183, 37, 122, 14, 124, 65,67
SCAN+直接移到另一端(到头)
C-SCAN:53+199+134
缺点:两端没有访问请求时不必要移动到头
C-LOOK磁盘调度
C-SCAN+向前看一看:前面没有请求就回移(不到头)
硬盘布局
磁盘编址
扇区编号
- 按照(C,H,S)将扇区形成数组,数组索引就是扇区编号
- 编号A=c*H*S+h*S+s
- 扇区总数=C*H*S
- 已知A,求s,h,c
- 扇区
- 物理盘存储单元、基本编制单元,一般512字节
- 主引导记录MBR
- 硬盘第一个扇区内容:含引导代码和主分区表
- 分区
- 硬盘中可作为逻辑盘管理的一组扇区集合
- 可扩展分区
- 可继续划分成“扇区”的硬盘分区
- 引导分区
- 引导扇区
- 可扩展分区引导记录