新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式操作系統(tǒng)UC/OSII的內核結構及介紹

嵌入式操作系統(tǒng)UC/OSII的內核結構及介紹

作者: 時間:2010-12-12 來源:網絡 收藏

  
是多任務的,任務切換是其核心技術,由匯編語言編寫。任務切換函數OS_TASK_SW( )被設置成中斷函數,調用時使用的是軟件中斷指令,這樣在進入中斷程序之前,當前任務的代碼地址和狀態(tài)字就自動保存在當前任務的堆棧頂部。下面用8086的程序舉例切換函數:
  
(1) _OS_TASK_SW(或_OSIntCtxSw)PROC FAR中斷程序。
  
(2) PUSH指令該指令針對_OS_TASK_SW,保存當前任務寄存器到該任務的堆棧,代碼地址已經保存。
  
(3) ADD SP,n該指令針對_OSIntCtxSw,因為該函數由中斷程序調用,運行他之前曾調用一些函數,堆棧發(fā)生變化,所以需要調整,去掉前幾個函數的保存地址和參數,而代碼地址在發(fā)生中斷時就已經保存。

(4) 保存該任務的當前堆棧地址到該任務控制塊OS_TCB,即保存SS和SP。
  
(5) 調入已就緒最高優(yōu)先級任務控制塊,取出其原來保存的任務堆棧地址,即賦值給SS和SP。
  
(6) POP指令恢復新任務的寄存器。
  
(7) IRET中斷指令返回時,CPU從堆棧頂部即SS:SP指向的位置取出以前所保存的代碼地址和狀態(tài)字,并從此地址恢復原來任務的運行。
  
5 程序舉例
  
一個最簡單的8086程序例子:在主程序運行完畢后,各任務開始輪流執(zhí)行。


  
6 結語
  
還有時間管理、內存分配的功能,并且使用了信號量、郵箱和信息隊列,使各任務之間可以互相通訊,協(xié)調對各種事務的管理,適用于小型的高端CPU。已經有許多公司以其為核心,進行功能擴展,從而開發(fā)自己的,并且由于其代碼簡練,JEAN J.LABROSSE專門寫書對其講解,也可以非常好地用于教學。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉