转自:http://blog.sina.com.cn/s/blog_6bdaec4c0100majs.html
通过一个多道编程的具体例子,来看看多道编程时计算机里面事件的发生顺序和多道编程环境下系统响应时间的提升。
假定我们有4个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU,每个程序的启动时间和其需要使用CPU进行计算机的分钟数如表4-1所示。
从0点0分开始到0点10分,系统里只有1个程序,因此属于单道编程状态。单道编程时CPU的利用率为20%,因此第1个程序在该10分钟里总共使用了CPU达2分钟(其他8分钟都用来进行I/O了)。0点10分到0点15分,系统里面有两个程序,因此属于2道编程。2道编程时CPU利用率为36%,则在5分钟时间内,CPU使用了1.8分钟。假定这两个程序完全平等,则每个程序使用CPU的时间是0.9分钟。至此,程序1总共运行了2.9分钟CPU时间,程序2运行了0.9分钟CPU时间。
从0点15分开始到0点20分,系统里面有3个程序,因此属于3道编程状态。3道编程时CPU的利用率为48.8%,则在这5分钟时间内,CPU被占用了大约2.4分钟(其他2.6分钟都用来I/0了)。同样,假定所有程序完全平等,则每个程序使用CPU的时间为0.8分钟。至此,程序1总共运行了3.7分钟CPU时间,程序2运行了1.7分钟CPU时间,程序3运行了0.8分钟CPU时间。此时,程序1离结束所需要的CPU时间最短,仅为0.3分钟。
从0点20分开始,系统里面有4份额程序,因此属于4道编程。我们知道4道编程时CPU利用率为59%而如果程序1想再运行0.3分钟CPU时间,则整个系统需运行时间约为2分钟(2分钟时间内CPU共被使用1.2分钟,平均每个程序使用CPU时间为0.3分钟)因此在0点22分时,第一个程序执行完毕,系统变为3道编程。
此时,程序1结束,程序2总共运行了2分钟CPU时间,程序3运行了1.1分钟CPU时间程序4运行了0.3分钟CPU时间。此时,程序3离所需的CPU时间最短,为0.9分钟。那么系统需要运行多长时间才能使程序3获得0.9分钟的CPU时间呢?答案是5.6分钟。因为3道编程的CPU利用率大约为48%,而5.6分钟内CPU的时间约是2.7分钟。三个程序平分,每个程序运行了0.9分钟CPU时间。因此,到0点27.6分钟,系统里只剩下两个程序。而在1.6分钟后,即0点28.2分钟时,程序2将结束运行,剩下程序4一个程序。该程序则在0点31.7分钟时结束运行。整个事件发生顺序,如图4-5所示。
多道编程比起单道编程,系统平时响应时间缩短了11.375分钟,响应时间减少了41.37%。多道编程带来的好处到底有多少和每个程序的性质、多道编程的度数、进程切换消耗等有关。但一般说来,只要度数适当,多道编程总是利大于弊。
---------详细请参考相关操作系统书籍