freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

ucos2嵌入式實時操作系統(tǒng)(編輯修改稿)

2025-06-20 00:56 本頁面
 

【文章內容簡介】 ? 利用信號量使某個任務與中斷服務同步或與另一個無數(shù)據(jù)交換的任務同步 。 ISR TASK TASK POST POST PEND PEND TASK A Free sample background from Slide 55 ? 雙向同步 (bilateral rendezvous) ? 2個任務可以用 2個信號量同步它們的行為 ,如圖: TASK TASK PEND POST POST PEND A Free sample background from Slide 56 ? 說明 ? 雙向同步不可能在任務與 ISR之間實施 因為 ISR不可能等待一個信號量。 A Free sample background from Slide 57 事件標志 (Event Flags) ? 當某任務要與多個事件同步時,要使用事件標志。 若任務需要與任何事件之一發(fā)生同步,可稱為獨 立型同步 (OR)。 任務也可以與若干事件都發(fā)生了 同步,稱之為關聯(lián)型同步 (AND)。 ? 可以用多個事件的組合發(fā)信號給多個任務。 ? 通過任務和中斷服務給每一位置位或復位,確定任 務執(zhí)行與否。 A Free sample background from Slide 58 ISR TASK TASK TASK POST POST PEND PEND 事件 (8,16 或 32bit) OR AND 事件 信號量 信號量 事件 A Free sample background from Slide 59 任務間通信 ? 定義 ? 任務間或中斷服務與任務間的信息傳遞稱為任務間的通信 。 ( intertask munication) 。 ? 任務間信息傳遞有兩個途徑: ? 全程變量或共享內存 ? 用全程變量時,必須保證每個任務或中斷服務程序獨享該變量。 ? 中斷服務中保證獨享的唯一辦法是關中斷。如果兩個任務共享某變量,各任務實現(xiàn)獨享該變量的辦法可以是關中斷再開中斷,或使用信號量。 A Free sample background from Slide 60 ? 注意: 任務只能通過全程變量與中斷服務程序通信 , 而任務并不知道什么時候全程變量被中斷服務程序修改了 , 除非中斷程序以信號量方式向任務發(fā)信號或者是該任務以查詢方式不斷周期性地查詢變量的值 。 要避免這種情況 , 用戶可以考慮使用郵箱或消息隊列 。 ? 郵箱或消息隊列 A Free sample background from Slide 61 消息郵箱 (Message Mail boxes) ? 定義 ? 通過內核服務可以給任務發(fā)送消息 。 典型的消息郵箱也稱作交換消息 , 即用一個指針型變量。 一個任務或一個中斷服務程序通過內核服務, 可以把一則消息 (即一個指針 )放到郵箱里去。 同樣 , 一個或多個任務可以通過內核服務接收這則消息 。 ? 發(fā)送消息和接收消息的任務約定 , 該指針指向的內容就是那則消息 。 A Free sample background from Slide 62 ? 下圖示意把消息放入郵箱 TASK Mailbox TASK POST PEND 10 A Free sample background from Slide 63 ? 內核一般提供以下郵箱服務 ? 郵箱內消息內容的初始化 ,郵箱里最初可以有 ,也可以沒有消息 。 ? 將消息放入郵箱 (POST)。 ? 等待有消息進入郵箱 (PEND)。 ? 從郵箱中得到消息 。 如果郵箱內有消息 , 就接收這則消息 。 如果郵箱里沒有消息 , 則任務并不被掛起 (ACCEPT),用返回代碼表示調用結果 。 ? 說明 ? 消息郵箱也可以當作只取兩個值的信號量來用:郵箱里有消息 , 表示資源可以使用;而空郵箱表示資源已被其它任務占用 。 A Free sample background from Slide 64 消息隊列 (Message Queue) ? 定義 ? 消息隊列用于給任務發(fā)消息 。 消息隊列實際上是郵箱陣列 。 通過內核提供的服務 , 任務或中斷服務子程序可以將一條消息 (該消息的指針 )放入消息隊列 。 同樣 , 一個或多個任務可以通過內核服務從消息隊列中得到消息 。 發(fā)送和接收消息的任務約定 , 傳遞的消息實際上是傳遞的指針指向的內容 。 通常 , 先進入消息隊列的消息先傳給任務 , 也就是說 , 任務先得到的是最先進入消息隊列的消息 , 即基于先進先出原則 (FIFO)。 ? 每個消息隊列有一張等待消息任務的等待列表(Waiting List)。 A Free sample background from Slide 65 ? 如圖所示:中斷服務子程序如何將消息放入消息隊列。圖中 表示消息隊列, “ 10” 表示消息隊列最多可以放 10條消息,沙漏旁邊的 0表示任務沒有定義超時,將永遠等下去,直至消息的到來。 TASK Queue 0 POST ISR Interrupt PEND 10 A Free sample background from Slide 66 ? 內核提供的消息隊列服務如下: ? 消息隊列初始化 , 隊列初始化時總是清為空 。 ? 放一則消息到隊列中去 (Post)。 ? 等待一則消息的到來 (Pend)。 ? 如果隊列中有消息 , 則任務可以得到消息 , 但如果此時隊列為空 , 內核并不將該任務掛起(Accept), 則用特別的返回代碼通知調用者 。 A Free sample background from Slide 67 中斷 ? 在實時系統(tǒng)中 , 中斷用于通知 CPU “ 有異常事件發(fā)生了 ” 。 中斷一旦被識別 , CPU保存部分(或全部 )現(xiàn)場 (Context),即部分或全部寄存器的值 , 跳轉到中斷服務子程序 (ISR)。 中斷服務子程序進行事件處理 , 處理完成后 , 程序回到: ? 在前 /后臺系統(tǒng)中 , 程序回到后臺程序; ? 對不可剝奪型內核而言 , 程序回到被中斷了的任務; ? 對可剝奪型內核而言 , 讓進入就緒態(tài)的優(yōu)先級最高的任務開始運行 。 A Free sample background from Slide 68 ? 通過兩條特殊指令: 關中斷 (Disable interrupt)和開中斷 (Enable interrupt), 可以讓微處理器不響應或響應中斷 。微處理器一般允許中斷嵌套。 A Free sample background from Slide 69 ? 中斷延遲 ? 實時系統(tǒng)最重要的指標就是關中斷的時間長短。 所有實時系統(tǒng)在進入臨界區(qū)代碼段之前都要關中斷;執(zhí)行完臨界代碼段之后再開中斷 。 關中斷的時間越長 , 中斷延遲就越長 。 ? 中斷延遲由表達式給出: 中斷延遲 = 關中斷的最長時間 + 開始執(zhí)行中 斷服務子程序的第 1條指令的時間 A Free sample background from Slide 70 ? 中斷響應 ? 中斷響應為從中斷發(fā)生到開始執(zhí)行用戶的中斷服務子程序代碼來處理這個中斷的時間 。 ? 對前 /后臺系統(tǒng) , 保存寄存器以后立即執(zhí)行用戶代碼 , ? 中斷響應時間 = 中斷延遲 + 保存 CPU內部 寄存器的時間 ? 對于不可剝奪型內核 , 微處理器保存內部寄存器以后 , 立即執(zhí)行中斷服務子程序代碼 : ? 中斷響應時間 = 中斷延遲 + 保存 CPU內部 寄存器的時間 A Free sample background from Slide 71 ? 對于可剝奪型內核 , 則要先調用一個特定的函數(shù) , 該函數(shù)通知內核即將進行中斷服務 , 使得內核可以跟蹤中斷的嵌套 。 ? 中斷響應 = 中斷延遲 + 保存 CPU內部寄存 器的時間 + 內核進入中斷服 務函數(shù)的執(zhí)行時間 A Free sample background from Slide 72 ? 中斷恢復時間 (Interrupt Recovery) ? 中斷恢復時間定義為微處理器返回到被中斷了的程序代碼所需要的時間 。 ? 在前 /后臺系統(tǒng)中 , 中斷恢復時間 = 恢復 CPU內部寄存器值的時間 + 執(zhí)行中斷返回指令的時間 ? 不可剝奪型內核的中斷恢復時間與前 /后臺系統(tǒng)一樣 。 中斷恢復時間 = 恢復 CPU內部寄存器值的時間 + 執(zhí)行中斷返回指令的時間 A Free sample background from Slide 73 ? 對于可剝奪型內核 , 在中斷服務子程序的末尾要調用一個由實時內核提供的函數(shù) 。 該函數(shù)用于判斷中斷是否脫離了所有的中斷嵌套 。 如果脫離了嵌套 , 內核要判斷是否使得一個優(yōu)先級更高得任務進入就緒態(tài) 。 如果是 , 則讓優(yōu)先級更高的任務開始運行 。 中斷恢復時間 = 判定是否有優(yōu)先級更高的任 務進入了就緒態(tài)的時間 + 恢 復優(yōu)先級更高任務的 CPU內部 寄存器的時間 + 執(zhí)行中斷返 回指令的時間 A Free sample background from Slide 74 ? 中斷處理 雖然中斷服務的處理時間應該盡可能的短,但是對處理時間并沒有絕對的限制,根據(jù)實際應用要求時間而定。 A Free sample background from Slide 75 時鐘節(jié)拍 (Clock Tick) ? 定義 ? 時鐘節(jié)拍是特定的周期性中斷 。 這個中斷可以看作是系統(tǒng)心臟的脈動 。 中斷之間的時間間隔取決于不同的應用 , 一般在 10ms~ 200ms之間 。 ? 說明 ? 時鐘的節(jié)拍式中斷使得內核可以將任務延時若干個整數(shù)時鐘節(jié)拍 , 以及當任務等待事件發(fā)生時 , 提供等待超時的依據(jù) 。 ? 時鐘節(jié)拍率越快 , 系統(tǒng)的額外開銷就越大 。 ? 各種實時內核都有將任務延時若干個時鐘節(jié)拍的功能 。 一般來說 , 延時精度是 177。 1個時鐘節(jié)拍。 A Free sample background from Slide 76 對存儲器的要求 ? 對于前 /后臺系統(tǒng) , 對存儲器容量的需求僅僅取決于應用程序代碼;而使用多任務內核時 , 內核本身就需要額外的代碼空間 (ROM)。 內核的大小取決于多種因素 , 取決于內核的特性 , 從 1K~ 100K字節(jié)都是可能的 。 ? 總代碼量 = 應用程序代碼 + 內核代碼 A Free sample background from Slide 77 ? 因為每個任務都是獨立運行的 , 必須給每個任務提供單獨的??臻g (RAM)。 決定??臻g的大小, 不僅須計算任務本身的需求 (局部變量 、 函數(shù)調用等等 ), 還需要計算最多中斷嵌套層數(shù) 。 ? 若內核不支持單獨的中斷用棧 ? RAM總需求 = 應用程序的 RAM需求 + (任務 棧需求 + 最多中斷嵌套棧需 求 ) * 任務數(shù) ? 若內核支持中斷用棧分離 ? RAM總需求 = 應用程序的 RAM需求 + 內核數(shù) 據(jù)區(qū)的 RAM需求 + 各任務棧需 求之總和 + 最多中斷嵌套棧 需求 A Free sample background from Slide 78 ? 說明 ? 為減少應用程序需要的 RAM空間 , 對每個任務棧空間的使用都要非常小心 , 特別要注意以下幾點: ? 定義函數(shù)和中斷服務子程序中的局部變量 ,特別是定義大型數(shù)組和數(shù)據(jù)結構; ? 函數(shù) (子程序 )的嵌套; ? 中斷嵌套; ? 庫函數(shù)需要的??臻g; ? 多變元的函數(shù)調用 。 A Free sample background from Slide 79 ? 綜上所述 , 多任務系統(tǒng)比前 /后臺系統(tǒng)需要更多的代碼空間 (ROM)和數(shù)據(jù)空間 (RAM)。 額外的代碼空間取決于內核的大小 ,
點擊復制文檔內容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1