iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1
Arm Platforms

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

Day 9 任務的形式

今天想發ARM的文章時,居然一直遇到這個畫面:
https://ithelp.ithome.com.tw/upload/images/20210923/201074826Kuh0XknJP.png

雖然不確定是不是被攻擊了,但後來還好可以連上主頁了,這感覺的確是有些驚險! 資安越來越重要,如果因此而無法準時發文,應該會徒呼負負吧!


我們討論一下任務(task)的結構形式,最典型的任務分成兩種,一種是執行到完成(run-to-completion);另一種的就是無限循環。

最常見的執行到完成的任務,就是用在初始化階段,這也是最常見的一種樣態,這種任務形態比較不會有搶占的問題,我們也可以在後面附加,如果執行完畢就自行刪除或中止。

虛擬碼的表達方式如下:

RunToCompletionTask()           執行到完成任務
{
   Initialize application           初始化應用
   Create ‘endless loop tasks’      創立’無限循環的任務’
   Create kernel objects          創立核心物件
   Delete or suspend this task     刪除或中止這個任務
}

無限循環,簡單說,就是僅在初始化時,任務被執行,之後就一直重複,虛擬碼表達方式如下:

EndlessLoopTask()
{
  Initialization code
  Loop Forever
  {
    Body of loop
    Make one or more blocking calls
   }
}

上述的Make one or more blocking calls,意思是呼叫一個或多個凍結,就是可以凍結到任務,讓優先權較低任務可以執行的意思。

以上就大致簡略說明一下任務的兩種典型的模式。


上一篇
Day 8 中斷服務處理機制與分配器
下一篇
Day 10 號誌的作用
系列文
ARM 組合語言:30天學習心得分享30

尚未有邦友留言

立即登入留言