设备管理、用户层I/O软件、缓冲、磁盘

一、SPOOLing系统
组成:
1、输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
2、输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备。
3、输入进程和输出进程。
用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;
用另一进程模拟脱机输出时外围设备控制器的功能,把数据从磁盘上传送到低速输出设备上。

特点:
1、提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
2、将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
3、最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。
二、缓冲
1、单缓冲
每当用户进程发出一I/O请求时,OS在主存中为之分配一个缓冲区。CPU和外设轮流使用,一方处理完后等待对方处理。
注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

在这里插入图片描述
2、双缓冲
输入:数据送入第一缓冲区,装满后转向第二缓冲区。
读出:OS从第一缓冲区中移出数据,送入用户进程,再由CPU对数据进行计算。

3、循环缓冲
在这里插入图片描述
多个缓冲区(大小相同):预备装输入数据的空缓冲区R;装满数据的缓冲区G;计算进程正在使用的现行工作缓冲区C。
多个指针:指示正在使用的缓冲区C的指针Current;指示计算进程下一个可取的缓冲区G的指针Nextg;指示输入进程下次可放的缓冲区R的指针Nexti

缺点:不能双向同时通讯;利用率不高;并发程序多时很复杂。

4、缓冲池
收容输入数据的工作缓冲区;hin
提取输入数据的工作缓冲区;sin
收容输出数据的工作缓冲区;hout
提取输出数据的工作缓冲区;sout
在这里插入图片描述
三、磁盘

访问时间的计算:寻道时间(到磁道);旋转延迟(到扇区);传输时间(硬件固有属性)。

磁盘调度方法:
(1)FCFS
多个进程的磁盘I/O请求构成一个随机分布的请求队列。磁盘I/O执行顺序按磁盘请求的先后顺序。
(2)最短寻道时间优先SSTF
选择从当前磁头位置出发移动最少的磁盘I/O请求。使每次磁头移动时间最少,但不一定是最短平均柱面定位时间。有可能产生饥饿状态。
(3)扫描算法SCAN(磁盘电梯调度算法)
规定磁头移动方向:自里向外,再自外向里移动。后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。
(4)循环扫描CSCAN
将SCAN规定的移动方向改为“单向移动”:由里向外后,再由里向外。
(5)N-Step-SCAN
将磁盘请求队列分成长为N 的子队列。按FCFS选择子队列。队列内又按SCAN算法。处理子队列过程中产生的新I/O再依次排队列。
(6)F-SCAN
请求队列只分为两个子队列,当前一个队列,按SCAN算法执行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值