環境切換-FreeRTOS是如何工作的

來源:互聯網
上載者:User

FreeRTOS是如何工作的--環境切換

作者:Gavin Lee   來源:upsdn.net    更新日期:2006-04-13

環境切換

跟任何其他程式一樣,一個任務執行時,它使用 處理器/微控制器 的寄存器,訪問RAM ROM。這些資源(處理器的寄存器,stack等)一起組成任務的執行內容(the task execution context).

一個任務是一個連續有序的代碼片斷。它並不知道它將何時被核心掛起或者恢複,甚至不知道這些事情(掛起或者恢複)在什麼時候已經發生了。下面考查(Consider)的這個例子是用來求兩個處理器中的寄存器值之和,該任務在執行1條指令後就立即被掛起。


-->任務將要執行ADD指令時,被掛起

-->先前的指令已經把數取到寄存器(Reg1,Reg2)中了,而這些寄存器(Reg1,Reg2)將要被ADD指令用到。當這個任務被恢複後,ADD就是要執行的第1條指令。這個任務不知道是否有另一個的任務會在中間時期 修改 Reg1或者Reg2)

 

當這個任務掛起時,其他任務繼續執行,可能會修改處理器寄存器的值。在恢複之後,這個任務也不知道處理器的寄存器被修改過(altered).如果它使用這個修改過的值,就會導致計算的和的結果不正確。

為了避免這類錯誤,必須保證,在恢複一個任務之後,其上下文環境跟 即將掛起前是一樣的。作業系統核心有責任 通過在任務掛起前儲存其上下文 來確保這種狀況。當任務恢複時,儲存的上下文 就被 作業系統核心恢複到先前的執行情況。儲存一個被掛起的任務的上下文 並在 任務恢複時 恢複其內容相關的這個處理過程就叫做環境切換(context switching)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.