[OS复习]设备管理2

时间:2022-06-30 19:06:32

1.I/O缓冲技术 

1.1缓冲技术的引入

缓解处理机与设备间速度不匹配的矛盾;实现设备与处理机一定程度的并行操作;减少设备的中断频率,放宽对中断响应时间的限制。

1.2提前读与延后写

指用户进程从 I/O缓冲区中取走前一个数据以后,立即发出对下一个数据的输入请求。操作系统将在适当的时候响应该请求以便把用户进程需要的下一个数据从用户进程指定的输入设备读入到I/O 缓冲区中。显然,用户进程加工前一个数据的工作与操作系统输入下一个数据的工作可以同时进行。
延后写是指,当用户进程请求输出数据时,操作系统将很快把用户进程请求输出的数据从用户进程的工作区中取走并将其暂时存放在I/O缓冲区中。直到用户进程指定的输出设备空闲时, 操作系统才把暂时存放在I/O缓冲区中的用户进程的输出数据写入用户进程指定的输出设备上。显然,用户进程生成下一个输出数据的工作与操作系统输出前一个输出数据的工作可以同时进行。

1.3硬件缓冲和软件缓冲

硬件缓冲区配置在设备中,具有专门的用途。对处理机透明,不需要处理机的直接管理,不会影响系统性能。软件实现的缓冲区是内存空间的一部分。其目的是为了弥补硬件缓冲区的不足。因为并非所有外设都拥有,或者足够拥有硬件缓冲区。操作系统中介绍的缓冲区都是指软件缓冲区。

1.4缓冲区的组织形式

单缓冲:
简单,仅在内存中为进程对某个设备的I/O访问分配一个缓冲区,如图:
[OS复习]设备管理2
假定,一块数据从外部设备输入到内存所花费的时间为T,在内存中移动所花费的时间为M,被用户进程加工处理所花费的时间为C,那么在没有使用I/O缓冲区的情况下,平均每块数据的处理时间近似为:T+C。在使用单I/O缓冲区的情况下,平均每块数据的处理时间近似为:max(T,C)+M
相对于没有I/O缓冲区的情形, 单I/O缓冲区能提高用户进程的运行效率。
如果用户进程在对有关数据进行加工处理时不释放I/O缓冲区, 那么用户进程的性能并不能得到改善。如果T远远大于C,即外部设备的I/O速度比用户进程的计算速度慢得多,那么,单I/O缓冲区不会显著改善用户进程的性能。
双缓冲:
增加一个缓冲区,两个缓冲区可以交替使用。当数据从缓冲区复制到用户进程空间时,输入设备不必等待,可立即开始向另一个缓冲区输入数据。因此,增加了一个缓冲区后,前述的平均工作时间可近似为:max(T,C)。 另外,若用户进程阵发性I/O的数据超过一个缓冲区而不满两个缓冲区,双缓冲使进程不会在I/O数据期间被阻塞。
[OS复习]设备管理2
循环缓冲 :
当用户进程处理数据的速度较快、外部设备处理数据的速度较慢,或者用户进程阵发性输入/输出的数据较多时,必须考虑增加缓冲区的数量以改善系统性能,这就是多缓冲区方式。多个I/O缓冲区常常被组织成一个环形队列,故,称为循环缓冲。实质上,双缓冲可以看作是循环缓冲的一个特例。
缓冲池
上述三种缓冲区的组织形式仅适用于某种特定的I/O进程和计算进程,属于专用缓冲。当系统中的设备很多时,将会有许多这样的循环缓冲区,消耗大量的内存空间,而且其利用率也不高。为了提高缓冲区的利用率,可以采用公共缓冲池技术,其中的缓冲区可为多个设备和进程服务。
两种缓冲池:分别用于块型设备和字符型设备。用于块型设备的缓冲池:缓冲区较大,其长度通常与外部设备物理块的长度相同;用于字符型设备的缓冲池:缓冲区较小,其长度通常为8个字节、16个字节等。若单个缓冲区的容量太大会造成资源浪费,而太小的缓冲区则会增加系统管理开销。缓冲池中的缓冲区通常组织成链表结构。需要缓冲区时,从链表中申请一个或多个缓冲区。使用完毕时,释放的缓冲区将被链接到链表中。缓冲区和缓冲池都属于操作系统空间,用户进程不能直接对缓冲区中的数据进行操作:1.只能通过系统调用间接地使用;2.让操作系统将缓冲区中的数据复制到用户进程空间,或者相反。 

2.虚拟设备

2.1虚拟设备的引入

独占型设备的速度一般较慢,进程常需要长时间等待I/O传输完成,影响进程的推进速度;进程在占有设备期间不一定一直使用此设备,而其他申请该设备的进程只能阻塞等待,降低了设备的利用率,影响其他进程的推进速度。引入虚拟设备技术,能解决独占设备利用率不高的问题,以及解决进程推进速度的问题

2.2虚拟设备技术的实现

虚拟设备技术类似缓冲区技术,可以认为是为设备提供了多个更大的、甚至在实际工作中是无限长度的缓冲区,进一步提高系统效率。虚拟设备技术的实现:在独占型设备与进程之间加入一个共享型设备作为过渡,如图:
[OS复习]设备管理2
共享型设备的某一区域是由若干个设备块构成的,对进程而言相当于真实的设备。由于共享型设备较独占型设备的速度较快。所以,进程I/O所需的时间较短,提高了进程的推进速度。又由于共享型设备的存储容量很大,可提供多个这样的区域,因而虚拟设备的数量多,一般可为每个需要使用设备的进程提供一个。这些进程不用排队等待,他们的推进速度也就不受任何影响。 这样,多个进程可以同时使用同一独占型设备,而每个进程对应一个虚拟设备,提高了设备利用率。 

2.3输入型虚拟设备的实现

对于输入型虚拟设备,数据的流向: 独占型设备->共享型设备 ->进程空间/内存。
假定用于输入的独占型设备是读卡机,用于实现虚拟设备的共享型设备是磁盘,则对于进程所发出的资源申请命令、使用命令及释放命令,操作系统需要完成的工作如下:
①申请分配一台虚拟设备(磁盘区域),分配一台实设备(一台读卡机),将信息由实设备(读卡机)连续地传输到虚拟设备(磁盘区域),释放实设备(读卡机);
②使用将数据从虚拟设备(磁盘区域)传输到进程空间;
③释放回收虚拟设备(磁盘区域)。

2.4输出型虚拟设备的实现

对于输出型虚拟设备来说,数据的流向:内存->共享型设备->独占型设备
假定用于输出的独占型设备是打印机,用于实现虚拟设备的共享型设备是磁盘,则对于进程所发出的资源申请命令、使用命令及释放命令,操作系统需要完成的工作如下:
①申请  分配一台虚拟设备(磁盘区域);
②使用  将数据由进程空间传送到虚拟设备(磁盘区域);
③释放  申请一台实设备(一台打印机),将数据由虚拟设备(磁盘区域)输出到实设备(打印机),回收实设备(打印机)。