通过一个多道编程的具体例子,来看看多道编程时计算机里面事件的发生顺序和多道编程环境下系统响应时间的提升。
假定我们有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道编程。