if 𝑥 ≠ 𝑦 → 𝑥:= 𝑦 fi ,if 𝑥 ≠ 𝑦 → 𝑦:= 𝑥 fi, What happens to x and y here? Assume each guarded action G → A is an “atomic operation.” Question. Does it make a difference if it is not an atomic operation? Transactions are atomic by definition (in spite of process failures). Also, critical section codes are atomic. Does hardware guarantee any form of atomicity? Yes! (examples?)此例中,即使guarded action是一个原子操作,其结果也仍然受到“进程间通信模型”的影响。首先,令上下的进程分别为P和Q。假设P进程的guarded action在执行过程中,Q进程开始执行自己的guarded action,并需要判断x与y是否相等,如果采用state-reading模型或link-register,和采用message-passing模型,其结果完全不同。 当然,另外一个角度是,不论P还是Q,它们的guarded action都是对自己本地变量的写操作,如果这个操作具有读-写原子性,那么写时不能读,这两个进程不会并发执行,只能是顺序执行。还可以换个角度,再问一句,如果不止两个进程,而是多个呢,即每个进程需要读取其它所有进程的状态,并更新自己,这里的原子性的粒度也值得探讨。 作业1:按照我上面的提示,对本页的模型进行详细分析。
时间: 2024-03-07 10:51:58 浏览: 305
what-happens-if:学习unix os arch。 在一起。如果会发生什么。
在这个例子中,如果𝑥和𝑦的值不相等,那么首先会执行if语句中的𝑥:= 𝑦语句,将𝑥的值更新为𝑦的值。然后,执行第二个if语句中的𝑦:= 𝑥语句,将𝑦的值更新为新的𝑥的值。
如果每个guarded action G → A是原子操作,那么这个过程就会是原子的,不会出现并发执行的情况。在这种情况下,如果多个进程同时执行这些guarded action,也不会出现数据竞争或数据不一致的问题。
然而,即使guarded action是原子操作,其结果也仍然受到“进程间通信模型”的影响。如果采用不同的进程间通信模型,比如state-reading模型或message-passing模型,执行结果可能是不同的。此外,如果不止两个进程,而是多个进程需要读取其它所有进程的状态,并更新自己,这里的原子性的粒度也值得探讨。
总之,原子性操作可以保证单个操作的执行是原子的,但并不能保证整个过程的原子性,进程间通信模型也会对结果产生影响。硬件可以提供一些原子性保证,如原子操作指令和硬件事务内存等。
阅读全文