新聞中心

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

        嵌入式操作系統UC/OSII的內核結構及介紹

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

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

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


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

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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 隆子县| 寻乌县| 扶风县| 磴口县| 中西区| 马尔康县| 汝南县| 南涧| 大连市| 江门市| 房产| 乐陵市| 林州市| 黑水县| 内江市| 焉耆| 二连浩特市| 乐业县| 无棣县| 肇东市| 屏东市| 当雄县| 巴东县| 九江县| 专栏| 汉寿县| 怀远县| 长子县| 潮州市| 阿巴嘎旗| 迭部县| 柘城县| 杂多县| 吉林省| 阳春市| 都兰县| 大港区| 樟树市| 梅州市| 遵义县| 措美县|