iT邦幫忙

2021 iThome 鐵人賽

DAY 11
1
Arm Platforms

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

Day 11 號誌如何使用-等待與號誌同步

號誌的操作主要分成四種,我們就做個簡單的說明:

1.創建跟刪除號誌:主要分成create/delete兩種操作模式。
2.取得跟釋放號誌:主要分成aquire/release兩種操作模式。
3.沖洗任務等待列表的所有任務:flush為主要操作模式。
4.獲取號誌的資訊:show info顯示號誌的一般訊息/show blocked tasks 顯示訊號被凍結的任務ID列表

號誌有用的地方,我們後續會陸續的說明,我們先舉例在等待與號誌同步,號誌會如何處理,大家可以先設想,如果火車要從台北南下,到了竹南分山線跟海線時,此時,在竹南站時,就會出現一個號誌燈,讓火車暫停,如果是快車,例如自強號,他從台北出發時,就很確定要走山線,此時,慢車例如區間車,有可能從新竹出發才獲取走海線,相對的優先權就在快車自強號所取得。 我們就從這個邏輯思維來思考,

A.等待與號誌同步

tWaitTask()                          自強號列車到竹南站取得優先行使權力
{
    :
    Acquire binary semaphore token    號誌燈會讓自強號先行,是早已經取得的權利
    :
}
    :
tSingalTask()                         區間車到竹南站取得一個通行的機會
{
    :
    Release binary semaphore token    號誌會視狀況,如果自強號還未到,就有機會讓區間車先行,反之則需先停止,讓自強號先行
    :
}

以上列舉其中一種,號誌其實很重要的一個觀念,我們從排程一直講到號誌,其實思考方式,是可以用生活上找到的東西來做詮釋,相信會比較好理解。明天我們繼續討論第二種號誌的使用模式。


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

尚未有邦友留言

立即登入留言