Q:程序、作业与进程的区别和联系?
A:先弄明白基础概念。
定义:
程序:程序只是一段可执行代码。程序是静态的,只需要内存空间。程序的一次运行过程就叫做进程。
进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一进程控制块,即PCB(Process Control Block);而由程序段、相关的数据段和PCB三部分便构成了进程实体。在许多情况下所说的进程,实际上指进程实体,所谓创建进程,实质上是创建进程实体中的PCB。
(补充:线程,即把一个进程分割成多个线程。在内存中既有一个代表进程的控制块,也有多个代表线程的控制块,当然,这些线程控制块是归属于进程控制块的。操作系统在进行资源分配时,对于存储空间资源,系统仍然以进程为单位来进行分配,而对于处理器资源则以线程为单位来进行分配。)
作业:从用户角度:在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作称为一个作业。从系统的角度看,作业由程序、数据和作业说明书组成。系统通过作业说明书控制文件形式的程序和数据,使之执行和操作。而且,在批处理系统中,作业是抢占内存的基本单位。也就是说,批处理系统以作业为单位把程序和数据调入内存以便执行。一个作业可由多个进程组成,且必须至少由一个进程组成。(作业的概念基本只用于批处理,而进程可以用于几乎所有的多道系统)
联系:一个作业由程序、数据和作业说明书构成,一个作业可以包含多个进程。一个进程由程序、数据和PCB组成。
一个作业的完成需要四个部分:作业提交、收容、执行、完成。进程是对已提交的程序执行过程的描述。
Q:什么是多道批处理系统?
A:在内存中同时存放多个作业,使之同时处于运行状态,这些作业共享CPU和外部设备等资源。
看一个例题理解一下:
假定我们有3个程序,每个程序花费80%的时间进行I/O,20%的时间使用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
解释:
CPU利用率:i/o处理占总时间比例p 则多道程序cpu占用率 为 1-p^n
分析步骤:
多道编程时CPU利用率的求法:
只有一个进程的时候,CPU利用率肯定是20%。
两个进程的时候:CPu利用率是:20% + (1-20%)*20% = 36%
三个进程是:36% + (1-36%)*20% = 48.8%
0-10分钟的时候,只有一个进程1在运行。单进程CPU占有率是20%,所以这10分钟内,进程1消耗了2分钟的CPU。进程2是0,进程3也是0
然后在10-15分钟内,有两个进程在运行(1和2),双进程的CPU利用率是36%,
所以,这五分钟内,CPU一共利用了1.8分钟,平均分给每个进程,是0.9分钟。
此时,进程1已经占用了CPU 2.9分钟,还需要0.6分钟,这时候有三个进程在运行,所有总的CPU时间需要1.8分钟。
三进程的CPU利用率是48.8%,所以总共需要1.8/0.488=3.69分钟。这时,进程1已经3.5分钟的CPu利用时间利用完了。
此时还剩下2和3号进程在运行。
2号进程还需要0.5分钟,所以0.5×2/0.36=2.78,此时2号进程的2分钟CPU时间也利用完了。
3号进程还需要0.4分钟的CPU利用时间。0.4/0.2 = 2