μc/os-ii 嵌入式實時作業系統的源**可以分成三部分:與硬體無關的核心**、與處理器有關的移植**和使用者配置檔案。
核心**位於source目錄下,提供了4個微小核心。它們分別位於source\source1(包含建立任務和延時功能)、source \source2(增加刪除任務功能)、source\source3(增加訊號量檔案)和source\source4(增加刪除訊號量功能)。它們的 功能依次增強,**也依次增大。
μc/os-ⅱ是通過任務控制塊來管理任務的。任務控制塊是乙個基於鍊錶的資料結構,任務控制塊主要用於記錄任務的堆疊棧頂指標、指向下乙個任務控制塊的指標、任務等待的延遲時間、任務的當前狀態標誌與任務的優先級別等一些與任務管理有關的屬性。
當任務的cpu使用權被剝奪時,μc/os-ⅱ用任務控制塊來儲存該任務的狀態,從而保證任務重新獲得cpu使用權時從斷點處執行。
μc/os-ii必須通過函式osinit()初始化後才可以使用,該僅呼叫os_initmisc()、os_initrdylist()、os_inittcblist()和os_inittaskidle() 4個函式。
ostaskcreate()呼叫了ostaskstkinit()任務堆疊初始化函式和os_tcbinit()函式獲得並初始化乙個os_tcb。
任務排程小結:
可重入的**指的是一段**可以被多個任務同時呼叫,而不必擔心資料被破壞。即就是說,可重入型函式在任何時候都可以被打斷,一段時間以後又可以繼續執行,而相應資料卻不會丟失。可重入型函式或者只使用區域性變數,即變數儲存在cpu暫存器或堆疊中。如果使用全域性變數,則要對全域性變數予以保護。由此可見,**的可重入性是保證完成多工的基礎。
μc/os-ⅱ為了處理臨界區**需要禁止中斷,處理完畢後再允許中斷,這使得μc/os-ⅱ能夠避免同時有其它任務或中斷服務進入臨界段**,兩個巨集os_enter_critical()和os_exit_critical()來禁止中斷和允許中斷。
µc/os-ii將訊號量、互斥訊號量、訊息郵箱、訊息佇列等統稱為「事件」,然後通過乙個稱為「事件控制塊(ecb)」的資料結構來管理事件,也就是說,任務和中斷服務程式可以通過ecb向另外的任務程傳送訊號,任務也可以等待另乙個任務或者中斷服務程式給它傳送訊號。
在使用事件控制塊之前,需要將所有事件控制塊鏈結成乙個空閒事件控制塊鍊錶。每當建立乙個訊號量、互斥訊號量、訊息郵箱、訊息佇列時,就從該鍊錶中取出一 個空閒事件控制塊,並對它進行初始化。當訊號量、互斥訊號量、訊息郵箱、訊息佇列被刪除時,對應的事件控制塊也需要放回到空閒事件控制塊鍊錶中。
μc/os-ii支援對訊號量的3種操作:建立訊號量ossemcreate()、傳送訊號量ossempost()和等待訊號量ossempend()。
C OS II的實時效能分析
引 言 1 嵌入式實時作業系統和 c os ii 嵌入式作業系統eos embedded operating system 主要負責嵌入式系統的全部軟 硬體資源的分配 排程 控制 協調併發活動 它必須體現其所在系統的特徵,能夠通過裝卸某些模組來達到系統所要求的功能 1 c os ii是專門為計算機的...
mysql核心分析文件 mysql 核心分析
mysql從功能上來講,並不完善,適用於oltp,不適用於olap,在開源資料庫而言,對於重要的資料儲存的話,而是建議採用postgresql 下面把mysql和postgresql從核心級做一些對比分析,找出mysql快,但功能不足的方面.估計要很長時間才能寫完,每天看到哪寫到哪.1.mysql是...
Windows NT核心分析
0x00000000 0x0000ffff 不可訪問,null指標檢測 0x7ffde000 0x7ffdefff teb 0x7ffdf000 0x7ffdffff peb 0x7ffe0000 0x7ffe0fff 共享資料區 0x80000000 0x9fffffff 系統 hal和ntosk...