iT邦幫忙

2021 iThome 鐵人賽

DAY 13
1
Arm Platforms

ARM 組合語言:30天學習心得分享系列 第 13

Day 13 同步、多個任務或者迴圈存取同步

本篇我們繼續討論號誌的存取同步的形式。

假設如果有兩個任務同步執行,此時該如何同步處理這類狀況呢?遇到這種狀況,號誌就要給予互斥的號誌,也就是Day 10 號誌作用裡面所提到的互斥號誌的方式來處理,例如說兩個任務A與B,如果B的優先權高於A,但是A又先到的,不得不讓A去執行,但此時B又有優先權,所以最好的方式,就是透過互斥的號誌,先把A給鎖住,讓B先執行,等到B完成結束後,在開鎖讓A把未完成的任務完成。

有兩個任務同步執行,就有可能出現多個任務同時執行,如果多個很容易就出現搶佔資源的情況出現,並且也有可能會出現多個優先權的問題產生,所以此時就得靠號誌來控管了,在這種狀況下,最好就是給予每個任務各自的號誌,也就是給予每個任務一個各自的互斥號誌,藉由互斥號誌的開關方式,讓任務能夠在任務執行時,由號誌來控管開關。

其實不管是兩個或多個任務,甚至於迴圈的狀況下,其實都可以直接給互斥號誌來解決這類問題,但是會不會有時還是會由衝突存在,理論上是不可能在出現衝突,就像多輛莒光號到達竹南站,出發時間如果相同,正常在站台管制人員還是會停止其中一輛,等待另一輛車先行之後,停止的莒光號在跟著行駛,所以有這類的號誌在控管的情況,後續的流程就會很順利的被執行。


上一篇
Day 12 多工等待跟號誌同步與信用追蹤同步
下一篇
Day 14 訊息佇列
系列文
ARM 組合語言:30天學習心得分享30

尚未有邦友留言

立即登入留言