1) [endif]系统调用与库函数
不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。
应用进程在运行时,又必须取得OS所提供的服务。
OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
2) [endif]SPOOLing技术
多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作.
主要有三大部分
1. 输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
2. 输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备。
3. [endif]输入进程和输出进程。
用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;
用另一进程模拟脱机输出时外围设备控制器的功能,把数据从磁盘上传送到低速输出设备上。
1. 特点:提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
2. 将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。
3)设备管理
缓冲管理
I/O控制方式减少CPU对I/O的干预提高利用率;
缓冲则通过缓和CPU和I/O设备速度不匹配矛盾,增加CPU和I/O设备的并行性,提高利用率。
4)磁盘调度方法
对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
目标:使平均寻道时间最少。
算法:FCFS
最短寻道时间优先SSTF
扫描算法SCAN(磁盘电梯调度算法)
循环扫描算法CSCAN
N-Step-SCAN算法
FSCAN算法
① [endif]FCFS
磁盘I/O执行顺序按磁盘请求的先后顺序。
② [endif]短寻道时间优先SSTF
ShortestSeekTimeFirst
a) [endif]使每次磁头移动时间最少。
b) [endif]不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。
c) [endif]对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。
③ [endif]扫描算法SCAN(磁盘电梯调度算法)
a) [endif]规定磁头移动方向:自里向外,再自外向里移动。
b) [endif]后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。
c) [endif]如当前为100,后续要求55,86,95,180,165,105
i. 先由内向外:选最近的105执行,再判断剩余的,选165,180。
再由外向内:95,86,55
不公平
④ [endif]N-Step-SCAN
改进:
将磁盘请求队列分成长为N 的子队列
按FCFS选择子队列。队列内又按SCAN算法。
3 3 5
2 |3 3 3 2| 3 3 2 3| 3 4 4 5| 2 3 ….2 3
处理子队列过程中产生的新I/O再依次排队列。
N=1时,就是FCFS,N很大时就是SCAN。