1.什么是多道程序。
多道程序设计指的是允许多个程序同时进入一个计算机系统的内存并启动进行计算的方法。并使他们交替进行,共同分享软件资源和硬件资源。从宏观上看,多道程序是并行的,因为多道程序都在运行之中。从微观上看,多道程序是串行的,因为CPU每次只处理一个程序,交替执行。
2.多道程序设计模型。
采用多道程序设计的目的就是提高CPU利用率。严格地说,如果进程用于计算的平均时间是进程在内存中停留时间的20%,且内存中同时有5个进程,则CPU将一直满负责运行。然而,这个模型在现实中过于乐观,因为假设这5个进程不会同时等待I/O。
更好的模型是从概率的角度来看CPU的利用率。假设一个进程等待I/O操作的时间与其停留在内存的时间比为p。 当内存中同时有n个进程时,则所有n个进程都在等待I/O的概率是p^n。
CPU的利用率=1-p^n
以n为变量的函数表示了CPU的利用率,n称为多道程序设计的道数。
从图2-6中可以清楚的看到,如果进程花费80%的时间等待I/O,为使CPU的浪费低于10%,至少要有10个进程同时在内存中。这个计算很简单 p^n=20%。p=80%。即可求出n。当读者认识到一个等待用户从终端输入的交互式进程是处于I/O状态时,那么很明显,80%甚至更多的I/O等待时间是普遍的。即使是在服务器中,做大量磁盘I/O操作的进程也会花费同样或者更多的等待时间。
从完全精确的角度描述,应该指出次概率模型只是描述了一个大致的状况。它假设所有n个进程都是独立的,即能内存中的5个进程中,3个运行,2个等待,是完全可接受的。但在单CPU中,不能同时运行3个进程,所以当CPU忙时,已就绪的进程也必须等待CPU。因为,进程不是独立的。更精确的模型应该用排队论构造,但我们的模型(当进程就绪时,给进程分配CPU,否则让CPU空转)仍然是有效的。
虽然图2-6的模型很简单,很粗略,它依然对预测CPU的性能很有效。例如,假设计算机有512MB内存,操作系统占用128MB,每个用户程序也占用128MB。这些内存空间大小只允许三个这样的程序同时驻留在内存中。若80%的时间用于I/O等待,则CPU利用率大约是1-0.8^3=0.49。在增加512MB字节内存以后,可从3道程序设计提高到7道程序设计,因而CPU的利用率提高到了79%。换言之,第二个512MB内存提高了30%的吞吐量。
增加第三个512MB内存只能将CPU利用率从79%提高到91%,吞吐量的提高仅为12%。通过这一模型,计算机用户可以确定第一次增加内存是一个合算的投资,而第二个不是。