Operating system 并发任务如何执行?

Operating system 并发任务如何执行?,operating-system,Operating System,我是新的操作系统,所以有一些关于并发任务的问题,如下所示。 2个并发任务,其中每个赋值语句以原子方式执行。共享变量x和y设置为0 Task 0 : x = 1 a = y Task 1 : y = 1 b = x 在并发任务结束时,a和b的值必须是多少 A.(a == 0) -> (b == 1) B.(b == 0) -> (a == 1) C.(a == 0) -> (b == 1) D none 有人能为我解释一下吗?非常感谢。由于您有4个不同的(原子)操作

我是新的操作系统,所以有一些关于并发任务的问题,如下所示。 2个并发任务,其中每个赋值语句以原子方式执行。共享变量x和y设置为0

Task 0 :  x = 1 a = y   Task 1 :  y = 1  b = x
在并发任务结束时,a和b的值必须是多少

A.(a == 0) -> (b == 1)
B.(b == 0) -> (a == 1)
C.(a == 0) -> (b == 1)
D none

有人能为我解释一下吗?非常感谢。

由于您有4个不同的(原子)操作,并且无法保证不同任务中的操作顺序(在某些情况下,甚至同一线程中的操作顺序也可以互换,但现在我们忽略这一点),因此如果执行的第一个操作是T0_1(任务0的第一个操作),则可能会出现以下结果:

T0_1 T0_2 T1_1 T1_1 T0_2 T1_2 T1_2 T1_2 T0_2
因此有3条可能的路径,如果执行从T1_1开始,则数量相同,因此总共有6种可能的结果,但正如我所提到的,只有在同一任务中的操作顺序没有改变的情况下,才会出现这种情况。

如果赋值是真正原子的,则不能同时执行。输出将取决于语句执行的确切顺序。 T0_1 T0_2 T1_1 T1_1 T0_2 T1_2 T1_2 T1_2 T0_2