首页 理论教育 操作系统原理:并发程序特点与解决方案

操作系统原理:并发程序特点与解决方案

时间:2023-10-17 理论教育 版权反馈
【摘要】:程序并发执行虽然有效地增加了系统的处理能力和机器的利用率,但它也带来了一些新问题,产生了与顺序程序不同的特征。现以两个并发程序A和B共用一个公共变量n来说明这个问题。而计算是指令序列在处理机上的执行过程,或处理机按照程序的规定执行操作的过程,是动态的概念。从图4-2中又看到,I3、C2、P1可以并发执行。此时,I3和C2同时操作虽是可能的,但能否实现,还要看它们和其他程序段之间的相互制约关系。

操作系统原理:并发程序特点与解决方案

程序并发执行虽然有效地增加了系统的处理能力和机器的利用率,但它也带来了一些新问题,产生了与顺序程序不同的特征。

1.失去程序的封闭性

如果一个程序的变量是其他程序执行时不可接触的,那么,这个程序执行后的输出结果一定是其输入的一个与时间无关的函数,即具有封闭性(顺序程序具有这一特性)。如果一个程序的执行可以改变另一个程序的变量,那么,后者的输出就可能有赖于各程序执行的相对速度,也就是失去了程序的封闭性特点。

现以两个并发程序A和B共用一个公共变量n来说明这个问题。设程序A对变量n做加1的操作,程序B打印n值,并将它重新置为零。

2.程序与计算不再一一对应(www.xing528.com)

程序与计算是两个不同的概念,前者是指令的有序集合,是静态的概念。而计算是指令序列在处理机上的执行过程,或处理机按照程序的规定执行操作的过程,是动态的概念。程序在顺序执行时,程序与计算之间有着一一对应的关系,但在并发执行时,这种关系就不再存在了。当多个计算任务共享某个程序时,它们都可以调用这个程序,且调用一次就是执行一次计算,因而这个程序可执行多次,即这个共享的程序对应多个“计算”。例如,在分时系统中,有多个终端用户都在编制C语言程序;而系统只有一个C语言编译程序。为了减少编译程序的副本,他们共享一个编译程序(当然每个用户名带自己的数据区)。这样,一个编译程序能同时为多个终端用户服务,每个多个终端用户调用一次C语言编译程序就是执行一次,即这个编译程序对应多个编译活动。

3.程序并发执行的相互制约

程序并发执行时的相互制约关系可通过图4-2所示的例子来说明。当并发执行的各程序之间需要协同操作来完成一个共同的任务时,它们之间具有直接的相互制约关系,且这样的程序之间有一定的逻辑关系。比如,I1、C1和P1之间有一定的逻辑关系,它们必须顺序地执行。如果I1操作没有完毕,则C1就不能执行,因为程序和数据还没有送入机器。如果C1没有做完,还没有算出结果,当然不能打印,即P1不能执行。从图4-2中又看到,I3、C2、P1可以并发执行。当C1完毕后,P1即可执行。此时,I3和C2同时操作虽是可能的,但能否实现,还要看它们和其他程序段之间的相互制约关系。如果此时I2没有结束,则I3和C2不能执行,因为I2和C2有直接的相互制约关系,而I2和I3之间有一种间接的相互制约关系,它们之间是由于资源共享而引起的联系。I2和I3共用一台输入机,当I2占用后,在它未结束之前I3是无法执行的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈