2.
进程和线程的管理
例题解析
?/p>
2.2.1
试说明进程和程序之间的区别和联系?/p>
?/p>
进程和程序是既有区别又有联系的两个概念?/p>
进程是动态的?/p>
程序是静态的?/p>
程序是一组有序的指令集合?/p>
是一个静态的概念?/p>
进程则是
程序及其数据在计算机上的一次执行,
是一个动态的集合?/p>
离开了程序,
进程就失去了存在
的意义,但同一程序在计算机上的每次运行将构成不同的进程。程序可看作是电影的胶片?/p>
进程可以看作电影院放电影的过程?/p>
一个进程可以执行多个程序,如同一个电影院的一场电影可放映多部影片?/p>
一个程序可被多个进程执行,如同多个影院同时利用一个电影的胶片放映同一部电影?/p>
程序可以长期保存?/p>
进程只能存在于一段时间?/p>
程序是永久存在的?/p>
而进程有从被创建到消
亡的生命周期?/p>
?/p>
2.2.2
举例说明多道程序系统失去了封闭性和再现性?/p>
?/p>
例如?/p>
有两个循环程?/p>
A
?/p>
B
?/p>
共享一个变?/p>
N
?/p>
程序
A
每执行一次时?/p>
都要?/p>
N
?/p>
=N+1
操作;程?/p>
B
则每执行一次时,都要执?/p>
print(N)
操作,然后再?/p>
N
的值置成?/p>
0
?/p>
。程?/p>
A
?/p>
B
在多道程序系统中同时运行。假定某时刻变量
N
的值为
n
,可能出现下述三种情况:
N
?/p>
=N+1
?/p>
print(N)
?/p>
N
?/p>
=0
之前,此时得?/p>
N
值变化过程为
n+1
?/p>
n+1
?/p>
0
?/p>
N
?/p>
=N+1
?/p>
print(N)
?/p>
N
?/p>
=0
之后,此时得?/p>
N
值变化过程为
n
?/p>
0
?/p>
1
?/p>
N
?/p>
=N+1
?/p>
print(N)
之后?/p>
N
?/p>
=0
之前,此时得?/p>
N
值变化过程为
n
?/p>
n+1
?/p>
0
?/p>
所以,?/p>
A
?/p>
B
程序多次执行过程中,虽然其每次执行时的环境和初始条件都相同,但每?/p>
得到的结果却不一定相同?/p>
?/p>
2.2.3
为什么将进程划分成执行、就绪和阻塞三个基本状态?
?/p>
根据多道程序执行的特点,进程的运行是走走停停的。因此进程的初级状态应该是执行
和等待状态?/p>
处于执行状态的进程占用处理机执行程序,
处于等待状态的进程正在等待处理
机或者等待其它某种事件的发生?/p>
但是?/p>
当处理机空闲时,
并不是所有处于等待状态的进程
都能放到处理机上执行?/p>
有的进程即使分配给它处理机,
它也不能执行?/p>
因为它的执行的条
件没有得到满足?/p>
因此?/p>
将等待状态的进程分成两部分,
一部分是放在处理机上就能立即执
行,
这就是就绪的进程?/p>
另一部分是仍需等某种事件发生的进程?/p>
即使放在处理机上也不?/p>
执行的进程,这就是阻塞进程?/p>
?/p>
2.2.4
进程的挂起状态与进程的阻塞状态和就绪状态有何异同?
?/p>
相同点是它们都没有占用处理机。不同点是挂起状态的进程是处于一种静止状态,不会
参与对资源的竞争?/p>
在解除挂起之前,
进程不会有新的资源要求,
也不会有占用处理机的?/p>
会;
阻塞状态和就绪状态的进程均处于活动状态,
它们都有获得处理机的机会?/p>
都可能有?/p>
的资源要求?/p>
?/p>
2.2.5
两个并发进程
P1
?/p>
P2
的程序代码在下面给出。其中,
A
?/p>
B
?/p>
C
?/p>
D
?/p>
E
均为?/p>
语?/p>
P1: begin
P2: begin
A;
D;
B;
E;
C;
end
end
请给?/p>
P1
?/p>
P2
两个进程的所有可能执行的过程?/p>