I/O系统的基本功能
I/O软件的层次结构
1. 用户层I/O软件
2. 设备独立性软件
3. 设备驱动程序
4. 中断处理程序
I/O系统分层结构
1. 中断处理程序
2. 设备驱动程序
3. 设备独立性软件
I/O的控制方式
优点:控制简单, 不需要多硬件支持
缺点:
CPU利用率低
不能实现设备间的并行工作
无法发现和处理产生的错误
适用场景:只需少量硬件的电路
优点:
可以实现CPU与设备之间的并行性操作
可以实现设备与设备之间的并行性操作
提高CPU利用率
缺点
中断次数增加
耗费CPU的时间
容易数据丢失
适用场景:高效场合
特点:
优点:
减少了CPU中断处理次数
数据传输过程无需CPU干预
缺点:有一定的局限性
中断与DMA区别
1、
中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理;
DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束 时要求CPU进行中断处理,这样大大减少CPU进行中断处理的次数。DMA方式不需CPU干预传送操作,不占用CPU任何资源,
2,
中断方式的数据传送方向是由设备到CPU再到内存,或者相反。
DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备
为什么引入缓冲
I/O缓冲方式
在硬件上专门增加寄存器组存放缓冲数据。
在内存中分配一块缓冲数据, 有操作系统进行管理
根据缓冲区设置多少:单缓冲, 双缓冲, 多缓冲
根据缓冲区的从属关系:专用缓冲区, 缓冲池
当每一个用户进程发出一个I/O请求时, 操作系统为之分配一个缓冲区。CPU从磁盘上读取一块数据步骤:
1.从磁盘把一块数据读入到用户区
2.OS将缓冲区数据传送到用户区
3.CPU对数据进行处理
当输入时间远远大于计算时间时, 系统性能没有显著提高;
当缓冲区不能及时释放, 也不能显著提高
基本方法是:在设备输入时, 先将数据输入到缓冲区A, 装满后边转向缓冲区B。 此时操作系统可以从缓冲区A提取数据传送到用户区, 最后由CPU对数据进行计算
实现了缓冲区读入数据的第一步(输入)和读入它前一个数据的后面两步
(传送和计算)的并行工作, 当缓冲区数据的输入和传送的速度基本匹配时,
有较好的效果
也是缓冲区, 相对于其他缓冲区能更好的实现CPU并行和设备利用率
设备分类
设备控制器
设备管理的分层模型
分配:设备, 控制器和通道。 需要记录与他们相关的信息。 包括:资源标识, 物理连接情况, 占有进程, 等待进程等。
分为设备控制块, 控制器控制块, 通道控制块
静态分配: 在作业级进行的设备分配称为静态分配,作业进入系统时进行分配,退出系统时收回全部资源。
动态分配: 进程级进行的设备分配称为动态分配,当进程需要使用某设备而提出申请时进行分配,使用完毕后立即将其收回。
设备无关性
所谓设备独立性是指用户在编制程序时所使用的设备与实际使用的设备无关,
也就是在用户程序中仅使用逻辑设备名。逻辑设备名是用户自己指定的设备名(或设备号),它是暂时的、可更改的。而物理设备名是系统提供的设备的标准名称,它是永久的、不可更改的。虽然程序在实际执行中必须使用实际的物理设备,就好像程序在主存中一定要使用物理地址一样,但在用户程序中则应避免使用实际的物理名,而采用逻辑设备名。这样做的道理就和用户程序中要使用逻辑地址而不使用物理地址的道理一样。设备管理的任务之一就是把逻辑设备名转换成物理设备名。
优点:
提高设备利用率。
假定系统拥有同类型a、b、c、d四台输入机,今有作业A申请两台输入机。如果该作业指定要使用a、b两台,那么,当其中有一台为另一作业Q所占有,或者是a、b两台中有一台坏了,虽然系统中还有c、d两台可用,且未被占用,但也不能接收作业A。这样处理是按物理设备名来分配的,造成了人为的限制。如果按逻辑设备名请求,作业A只要提出要求两台该类设备,系统就会将空闲的两台输入机分配给它。从而,作业A就可以投入运行,设备也可得到充分利用。另外,这样还可以提高系统的可适应性和可扩展性。
设备驱动程序的功能
设备程序驱动的特点
设备驱动程序的处理过程
因素: 寻道时间, 旋转延迟, 传输时间。
寻道时间: 读写磁头移动到要求磁道位置所需要的时间。
平均寻道时间: 依赖于磁盘驱动器组件的物理尺寸和磁头进行加速和减速的快慢程度
旋转延迟: 磁头到达所要求磁道位置后, 等到所要求的扇面旋转到洗头下方的平均时间。
。。。。待写
1.FCFS:先来先服务算法;
2.SSTF:最短寻道时间算法;
3.SCAN:扫描算法(电梯调度算法);
4.CSCAN:循环扫描算法;
磁盘访问顺序序列:86, 147, 91, 177, 94, 150, 102, 175,130 读写磁头位置: 125, 刚结束请求是143
FCFS:就是不论初始磁头在什么位置,都是按照服务队列的先后顺序依次处理进程,可以类比队列的先进先出。优点是进程处理起来非常简单,但缺点显而易见,就是平均寻道长度会很长。
优点:简单公平;
缺点:效率低下, 存在磁头反复移动问题, 增加服务时间, 有损机械
移动距离:125-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=547
SSTF:已知磁头的初始位置,则最先被处理就是距离磁头位置最近的进程,处理完成后再处理距离当前磁道最近的进程,直到所有的进程被处理。该算法的优点是平均寻道长度会大大减少,缺点是距离初始磁头较远的服务长期得不到处理,产生“饥饿”现象。具体的思路是:通过循环寻找与初始磁头最近的进程,将进程处理,然后将该进程标记,将初始磁头移动到该进程所在的磁道。然后依次类推,已经标记的进程不再参与,直到所有的进程都被标记,磁盘调度完成。
优点:改善磁道平均服务时间
缺点:访问不均匀, 造成某些访问请求长期被无视
移动距离=130-125+147-130+150-147+175-150+177-175+177-102+102-94+94-91+91-86=143
SCAN:磁头仅沿一个方向进行扫描,在扫描途中完成所有没有完成的请求,直到磁头到达磁盘在这个方向上的最后一个磁道或者这个方向上最后一个请求所在的磁道。利用数组存储进程和磁道编号,依据给定的初始磁头,先找到初始磁头在哪两个进程之间,然后向内扫描。当磁头扫描到磁盘最内层即磁道0且进程还没有全部被处理,磁头开始向外扫描,直到所有的进程都完成。
优点:克服最短寻道优先缺点, 同时考虑方向和距离, 吞吐量大, 平均响应时间较少。
缺点:由于是摆动式扫描方法, 两侧磁道被访问的频率低于中间磁道
由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最小到最大
(125),102,94,91,86,130,147,150,175,177
移动距离=125-102+102-94+94-86+130-86+147-130+150-147+175-150+177-175=130
CSCAN:在磁盘扫描算法的基础上改变磁头的扫描路径:扫描到最内层之后从最外层向内继续扫描,即扫描方向一致。该算法的思路与扫描算法基本一致,也使用二维数组进行进程编号和进程所在磁道号的存储,算法的不同之处在于当磁头扫描到磁盘的最内层时,磁头跳转到磁盘最外层重新向内扫描,这样就可以有效的避免将已经扫描过的磁道重新扫描一次,降低了平均寻到距离。
由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最大到最小。
(125),102,94,91,86,177,175,150,147,130
移动距离=125-102+102-94+94-91+91-86+177-86+177-175+175-150+150-147+147-130=177