这里我理解了比较久,重点可能还是这个题目理解不是很清楚,先上一些简单的原理:
程序顺序执行的特征
① 顺序性
指处理机严格地按照程序所规定的的顺序执行。
② 封闭性
指程序在封闭的环境下运行,即程序运行时独占全机资源(没有其它程序一起共享),资源的状态只有本机才能改变。
③ 可再现性
只要程序执行时的环境和初始条件相同,当程序重复执行时,都可获得相同的结果。
程序并发执行时的特征(注意是“程序”,不是“进程”!!!我刚学时就搞混了)
① 间断性
也就是一个程序的整个执行过程是“走走停停”的,由于共享资源,这些并发的程序相互制约,有时需要进行等待,造成了 “执行——暂停——执行” 的间断性活动规律。
② 失去封闭性
由于并发的程序之间共享系统资源,导致其中任一程序在运行时,其环境都必然会收到其它程序的影响,所以就失去了运行环境的封闭性。
③ 不可再现性
程序在并发执行时,由于失去了封闭性,从而也失去了不可再现性。换句话说,程序在多次执行后,虽然它们执行的环境和初始条件是相同的,但得到的结果却各不相同。
比如 A 和 B 两个程序共享变量N,A 中会让 N+1 ,B 中会让 N=0 。那么 N 最后的数值肯定跟 A 和 B 执行的情况(比如执行顺序什么的)有关系。
之后我们再聊聊所谓的前驱并发,
群上说人话就是,在满足前驱的基础上能够执行。
如下图:
(这是借用了别人的图),
P1、P2执行之后才能到P4。
之后言归正传,我们开始解题:
通过题目我们先画出对应前驱图
开始对选项进行分析,这里我只分析A、B、C,其他的都是一个道理。
我们先看A,从前驱的基础上达到并发,有了S1才有S2、S3,所以这是不满足并发的。
B,S3、S4的前驱都是S1,S5的前驱是S1->S2,从图易知,S1是S2的前驱,所以是能到达S5的所以满足并发。
我们再举个例子,
C,S5的前驱是S2,S6的前驱是S2,S3前驱条件都是可以满足的,看S7,前驱只满足了S5,S6所以三者不能达到并发要求。
总结:这道题其实就是根据前驱,并发的知识点通过选项进行判断,还有最好是能写出如上面那个伪代码。