Windows3.1及Windows95的多任务特色 山东 张杰 1996-03-01 ●1、Windows3.1的协同式多任务及其优缺点。 Windows3.1中,虽有多个Windows应用程序处于运行状态,但系统只为接收到键盘或鼠标器输入、定时器信号或某类I/O操作等事件的程序分配CPU时间,多个程序处于协同运行状态_协同式多任务(Cooperative Multitasking)。协同式多任务虽然实现简单,但操作系统对其控制能力却极为有限,如果一个应用程序长期占用CPU时间,其他应用程序甚至Windows3.1自身亦无法获得CPU的控制权,此时,其他应用程序只能处于等待状态。所以,Windows 3.1的多任务很大程度上依赖应用程序是否协作,如果一个占用CPU的程序出现故障,整个系统可能因无法获得CPU时间而死锁,这是协同式多任务的最大缺陷,同时,协同式多任务下的应用程序执行效率较低。例如,你虽可以同时进行文档的编辑和打印处理,但当你进行一个稍大的编辑任务时,打印任务只能停下来等待。另外协同式多任务下,后台通讯程序亦极易被前台程序中断。 ●2、Windows95的抢占式多任务 Windows 95采用先进的抢占多任务(Preemptive Multitasking)方式,操作系统拥有对CPU的绝对控制权,可以根据系统需要将CPU的控制权从一个线程收回而交给另一个线程。所谓线程,是Windows 95的最小执行单位,它可以获取CPU时间片以执行相应的代码,是Windows 95抢占式多任务的基石。Windows 95的多任务处理就是通过基于线程的主、辅两级调度实现的。主调度器是虚拟机管理(VMM)子系统的一部分,它在每20Ms(缺省值)重新估算一下每个活动线程占用的CPU时间;副调度器则在两个或更多的线程间分配CPU时间片,它与主调度器相互协作,使CPU的利用率尽可能地高效。Windows 95虽实现了32位Windows应用程序(WIN32)、16位的Windows应用程序(WIN16)和MS-DOS应用程序的多任务,但是它们的多任务方式是不尽相同的。简单地说,Windows 95实现了WIN32应用程序和MS-DOS应用程序的抢占式多任务,而所有运行的WIN16应用程序仍以协同多任务方式运行。 ·Windows 95中,每个运行的WIN32应用程序称为一个进程,每个进程又可以分解(或创建)为多个并发运行的线程,以加强程序的并发处理能力,这就是WIN32应用程序的多线程机制。 ·Windows 95中,所有运行的WIN16应用程序被看作一个进程,而每个运行WIN16应用程序被着作一个进程,而每个运行WIN16应用程序只能拥有一个线程,因此,所有运行的WIN16应用程序相当于一个WIN32应用程序,称WIN16进程,它同其他运行的WIN32应用程序和MS-DOS应用程序以抢占多任务方式运行,而在WIN16进程拥有的时间片内,每个WIN16应用程序间以协同多任务方式运行。当然,每个WIN16应用程序亦从其他子系统的抢占式多任务中获益非浅,包括32位打印、通信及网络子系统。例如,Windows 95中,即使是WIN16应用程序亦可充分享受系统的高效并发打印功能。 ·Windows 95中,每个MS-DOS应用程序只能拥有一个线程,同其它运行的WIN32应用程序、MS-DOS应用程序和WIN16进程以抢占多任务方式运行。 ●3、Windows 95的多任务特色 ①提供平滑的多任务,提高系统效率 Windows 95的抢占式多任务、多线程机制,充分提高了CPU的利用率,加速了应用程序的响应时间,加强了应用程序的执行粒度及发处理能力,从而建立了一个更为平滑的多任务环境,充分提高了系统的执行效率。现在,你可以同时进行文档打印、文件复制和远程通讯等任务而似乎每个任务均独占整个计算机系统。 ②增强系统的稳固性 抢占式多任务不仅实现了WIN32应用程序、MS-DOS应用程序和WIN16进程的并发运行,而且有效地避免了单个应用程序故障导致的系统崩溃,因为此时Windows 95可将CPU的控制权从发生故障的应用程序中收回并释放为其分配的资源,以保证系统中其他应用程序的正常运行。Windows 95虽以协同多任务方式运行WIN16应用程序,一个,WIN16应用程序出现故障仍可能导致其他WIN16应用程序运行异常,但它不会影响WIN32应用程序和MS-DOS应用程序的正常运行继而导致系统崩溃。