[整理] 关于多道程序

下面是百度百科里关于多道程序的介绍:

所谓多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各道程序轮流使用CPU,交替执行。引入多道程序设计技术的根本目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。

目测多个程序之间基于类似时间片的机制交替运行。


第一题:

来自:http://bbs.csdn.net/topics/390398752?page=1#post-394012663

假定我们有3个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU,每个程序的启动时间和其需要使用CPU进行计算机的分钟数如表所示

程序编号      启动时间              需要CPU时间(分钟)
  1           00:00(零点零分)         3.5
  2           00:10                     2
  3           00:15                     1.5

请问在多线程/进程环境下 系统总响应时间
A 22.5   B 23.5     C 24.5     D 25.5


答案:0~10  10*0.8=8 10*0.2=2  A剩下1.5分钟CPU跑
10~15  有两个进程 CPU利用率为1-0.8*0.8=0.36  所以5*0.36/2=0.9(两个进程均分CPU时间)这样A剩下0.6,B剩下1.1
15开始,有3个进程 CPU利用率为1-0.8*0.8*0.8=0.488 所以A在 0.6*3/0.488=3.69也就是18.69分完成,之后CPU利用率又为0.36,此时B剩下1.1-0.6=0.5,C剩下1.5-0.6=0.9 之后B在0.5*2/0.36=2.78也就是2.78+18.69=21.46时候B进程结束,之后C开始单跑 0.9-0.5=0.4  0.4/0.2=2, 即2分钟之后C结束,也就是21.46+2=23.46≈23.5 所以答案应该选B

第2题:

来自:http://blog.sina.com.cn/s/blog_6bdaec4c0100majs.html

假定我们有4个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU,每个程序的启动时间和其需要使用CPU进行计算机的分钟数如表4-1所示。

[整理] 关于多道程序_第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所示。

[整理] 关于多道程序_第2张图片

[整理] 关于多道程序_第3张图片
多道编程比起单道编程,系统平时响应时间缩短了11.375分钟,响应时间减少了41.37%。多道编程带来的好处到底有多少和每个程序的性质、多道编程的度数、进程切换消耗等有关。但一般说来,只要度数适当,多道编程总是利大于弊。









你可能感兴趣的:([整理] 关于多道程序)