6(续)设备管理 用户层IO软件 缓冲 磁盘

用户层I/O软件

小部分I/O系统软件放在了用户应用层上。 库函数(与应用程序链接) 假脱机技术(虚拟设备)

1、系统调用与库函数

不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。

应用进程在运行时,又必须取得OS所提供的服务。

于是: OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。

2、设备分配中的虚拟技术    —— SPOOLing技术

多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。

组成:

使用举例:

当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,而只为它做两件事:

1.由输出进程输出井中为之请求一个空闲磁盘块区,并将要打印的数据送入其中.

2.输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂在请求打印队列上.

打印输出过程:

1.如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到输出缓冲区,再由打印机进行打印.

2.打印完毕后,输出进程再查看请求打印队列中是否还有等待打印的请求表,如此下去,直至请求打印队列为空,输出进程才将自己阻塞起来

3.仅当下次再由打印请求时,输出进程才被唤醒.

Spooling的特点:

1、提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。

2、将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。

3、最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。

缓冲区管理

I/O控制方式减少CPU对I/O的干预提高利用率;

缓冲则通过缓和CPU和I/O设备速度不匹配矛盾,增加CPU和I/O设备的并行性,提高利用率。

现代OS中,几乎所有的I/O设备与处理机交换数据时,都用了缓冲区。

1、单缓冲

每当用户进程发出一I/O请求时,OS在主存中为之分配一个缓冲区。 CPU和外设轮流使用,一方处理完后等待对方处理。

单位:字符设备输入时,缓冲区用于暂存用户输入/输出的一行数据;块设备输入则是成块数据。

2、双缓冲

进一步加快输入和输出速度,提高设备利用率制,也称缓冲对换(Buffer Swapping)

输入:数据送入第一缓冲区,装满后转向第二缓冲区。

读出:OS从第一缓冲区中移出数据,送入用户进程,再由CPU对数据进行计算。

优点:两个缓冲区,CPU和外设不再针对一块交替 可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近。

3、多缓冲

磁盘存储器的性能和调度

磁盘调度方法:

1、FCFS

先来先服务。磁盘I/O执行顺序按磁盘请求的先后顺序。

2、最短寻道时间优先SSTF

选择从当前磁头位置出发移动最少的磁盘I/O请求 使每次磁头移动时间最少。 不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。 对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。

3、SCAN扫描

虑距离的同时,更优先考虑方向。

规定磁头移动方向:自里向外,再自外向里移动。 后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。

如当前为100,后续要求55,86,95,180,165,105

先由内向外:选最近的105执行,再判断剩余的,选165,180。

再由外向内:95,86,55

4、CSCAN 循环扫描

为了解决scan的问题:容易错过与当前磁道距离近,但方向不一致的磁道。

修改:将SCAN规定的移动方向改为“单向移动”由里向外后,再由里向外。

如当前为100,后续要求55,86,95,180,165,105

先由内向外:选最近的105执行,再判断剩余的,选165,180。

再由内向外:55,86,95

5、N-Step-SCAN

例题:

假设一个活动头磁盘有200道,编号从0-199。

当前磁头正在155道上服务,并且在此之前完成的是173道的访盘请求。     

现有如下访盘请求序列(磁盘号):75,168,81,138,87,143,187,129,198,44。试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。

1.最短寻道时间优先(SSTF)磁盘调度算法。

2.扫描法(SCAN)磁盘调度算法(假设沿磁头移动方向不再有访问请求时, 磁头就沿相反方向移动。 44到0磁道的移动忽略不计)

答:

1、若采用SSTF  那么磁头的移动顺序为155 143 138 129 168 187 198 87 81  75 44

三段(155~129)、(168~198)、(87~44)

移动的总磁道数为155-129+198-168-129+198-44=249

2、若采用SCAN 那么磁头的移动顺序为 155 143 138 129 87 81 75 44 168 187 198

两段(155~44)、(44~198)

移动的总磁道数为155-44+198-44=265

猜你喜欢

转载自blog.csdn.net/ConnyBunny_jz/article/details/84445965
今日推荐