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

正文內(nèi)容

tornadovxworks培訓(xùn)(留存版)

2024-10-31 14:26上一頁面

下一頁面
  

【正文】 間表示搶占 表示任務(wù)完成t1t2t3t2t1嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 時間片輪轉(zhuǎn)調(diào)度 A B C D A B C D Time Slice Period (Constant Programmable) 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 混合調(diào)度策略 時間片t4t2 t3t2t1t3t2t1高低時 間先優(yōu)級注: 表示搶占, 表示任務(wù)完成。 ? Vxwork、 pSOS、 Neculeus和 Windowss CE 是嵌入式實時操作系統(tǒng) 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 一、實時多任務(wù) 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 任務(wù)狀態(tài) ? 實時系統(tǒng)的一個任務(wù)可有多種狀態(tài) , 其中最基本的狀態(tài)有四種: – 就緒態(tài):任務(wù)只等待系統(tǒng)分配 CPU資源; – 懸置態(tài):任務(wù)需等待某些不可利用的資源而被阻塞; – 休眠態(tài):如果系統(tǒng)不需要某一個任務(wù)工作 ,則這個任務(wù)處于休眠狀態(tài); – 延遲態(tài):任務(wù)被延遲時所處狀態(tài); 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 任務(wù)狀態(tài)遷移 就 緒 態(tài) 延 遲 態(tài)懸 置 態(tài)休 眠 態(tài)最高優(yōu)先級任務(wù)正執(zhí)行t a s k I n i t ( )嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 任務(wù)狀態(tài)遷移函數(shù)(一) ? 就緒態(tài) 懸置態(tài) semTake()/msgQReceive() ? 就緒態(tài) 延遲態(tài) taskDelay() ? 就緒態(tài) 休眠態(tài) taskSuspend() ? 懸置態(tài) 就緒態(tài) semGive()/msgQSend() ? 懸置態(tài) 休眠態(tài) taskSuspend() 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 任務(wù)狀態(tài)遷移函數(shù)(二) ? 延遲態(tài) 就緒態(tài) expired delay ? 延遲態(tài) 休眠態(tài) taskSuspend() ? 休眠態(tài) 就緒態(tài) taskResume()/taskActivate() ? 休眠態(tài) 懸置態(tài) taskResume() ? 休眠態(tài) 延遲態(tài) taskResume() 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 多任務(wù)內(nèi)核 ? 進行任務(wù)管理 – 任務(wù)是競爭系統(tǒng)資源的最小運行單元。低優(yōu)先級的任務(wù)在高優(yōu)先級的任務(wù)運行時不能搶先; CPU由高優(yōu)先級進程獨占。 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 實時進程調(diào)度算法 (一 ) ? 靜態(tài)的周期性調(diào)度 – 這種調(diào)度算法的基本思想是將處理器的時間分為 幀 。另外,實時操作系統(tǒng)的重要特點是具有系統(tǒng)的可確定性,即系統(tǒng)能對運行情況的最好和最壞等的情況能做出精確的估計。這兩類系統(tǒng)的區(qū)別在于調(diào)度算法。而且對低優(yōu)先級的任務(wù)來說等待的時間是無法預(yù)知的。 – 3)可擴展的處理器結(jié)構(gòu),以能最迅速地開展出滿足應(yīng)用的最高性能的嵌入式微處理器。 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 任務(wù)控制快 (TCB) ? 任務(wù)控制塊用來描述一個任務(wù),每一任務(wù)都與一個TCB關(guān)聯(lián)。 ? 任務(wù)能快速共享系統(tǒng)的絕大部分資源,同時有自己獨立的上下文 ? 所有的任務(wù)都運行在特權(quán)模式下 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 共享代碼和重入(一) ? VxWorks提倡單個子程序或子程序庫被多個不同的任務(wù)調(diào)用。然而,如果任務(wù)被阻塞或是懸置時,調(diào)度器從就緒隊列中取出最高優(yōu)先級的任務(wù)運行。 case S_rctorLib_TEMP_CRITICAL_ZONE: logMsg (“Run!”)。 { =+1。 3. repeat (3, semGive, semId)。 ? 我們設(shè)想下面的情況:一個任務(wù)獲得一些數(shù)據(jù)結(jié)構(gòu)的互斥訪問權(quán),當(dāng)它正在臨界區(qū)內(nèi)執(zhí)行時被另一個任務(wù)刪除。這防止了 T3,間接地防止 T1,被 T2搶占。畢竟資源是不可被搶占的。 13 } 14 15 void myBufPut (char ch) 16 { 17 semTake(mySemId, WAIT_OREVER)。 waitForData ()。 end。 ... } STATUS taskDelay (ticks) Use sysClkRateSet() to change the clock rate. Accurate only if clock rate is a multiple of seven ticks / seconds. Can suffer from “drift.” 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Reentrancy and Task Variables If tasks access the same global or static variables, the resource can bee corrupted (called a race condition). Possible Solutions: Task Variables cause a 32bit value to be saved and restored on context switchs, like a register. Use only stack variables in applications. Protect the resource with a semaphore. Use task variables to make the variable private to a task Caveat: task variables increase context switch times. See the taskVarLib manual pages for details. 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Task Hooks Userdefined code can be executed on every context switch, at task creation, or at task deletion: taskSwitchHookAdd () taskCreateHookAdd () taskDeleteHookAdd () VxWorks uses a switch hook to implement task variables. See manual pages on taskHookLib for details. 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Task Information Like i(), but also displays: Can also use show (): show (tNetTask, 1) Stack information Task options CPU registers FPU registers (if the VX_FP_TASK option bit is set) ti (taskNameOrId) 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Task Browser To obtain information about a specific task, click on the task?s summary line in the main target browser. 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 What is POSIX ? Originally, an IEEE mittee convened to create a standard interface to UNIX for: VxWors supports almost all of the POSIX Realtime Extensions. Increased portability. Convenience. Context switch times are very fast. Text, data, and bss are stored in a mon, global address space. The POSIX realtime extensions are based on implicit assumptions about the UNIX process model which do not always hold in VxWorks. In VxWorks, 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 What does VxWorks support ? Library Description aioPxLib Asynchornous I/O semPxLib POSIX Semaphores mqPxLib POSIX Message Queues mmanPxLib POSIX Memory Management schedPxLib POSIX Scheduler Interface sigLib POSIX Signals timerLib, clockLib POSIX Timer/Clock Interface dirLib File/Directory Information 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 RealTime Multitasking Introduction Task Basics Task Control Error Status System Tasks 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Error Status ? VxWorks里使用一個全局整型變量 errno來描述錯誤信息 – 程序執(zhí)行過程中我們可以設(shè)置并調(diào)用一些函數(shù)例程來檢測錯誤信息,并針對錯誤信息設(shè)置相應(yīng)的錯誤號 – 然后調(diào)用一些函數(shù)例程檢測錯誤號,當(dāng)程序執(zhí)行異常時可以根據(jù)錯誤號發(fā)現(xiàn)相應(yīng)的錯誤 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Errno and Context Switches At each context switch, the kernel saves and restores the value of errno. TCB errorStatus errno 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Setting Errno Lowest level routine to detect an error sets errno and returns ERROR: STATUS myRoutine () { ... if (myNumFlurbishes = MAX_FLURBISH) { errno = s_myLib_TOO_MANY_FLURBISHES。 – 由信號量保護的全局或靜態(tài)變量 ? VxWorks的一些庫封裝對公共數(shù)據(jù)的訪問。 – 當(dāng)更高優(yōu)先級的任務(wù)由就緒態(tài)進入運行時,系統(tǒng)內(nèi)核立即保存當(dāng)前任務(wù)的上下文,切換到更高優(yōu)先級的任務(wù)。其實,多數(shù)嵌入式系統(tǒng)并不需要實時性 ? Linux是嵌入式操作系統(tǒng),并非實時操作系統(tǒng)。也就是系統(tǒng)首先調(diào)度高優(yōu)先級的任務(wù)運行。 – – 。 ? 實時操作系統(tǒng),主要任務(wù)是對事件進行實時的處理,雖然事件可能在無法預(yù)知的時刻到達,但是軟件上必須在事件發(fā)生時能夠在嚴格的時限內(nèi)作出響應(yīng)(系統(tǒng)響應(yīng)時間),即使是在尖峰負荷下,也應(yīng)如此,系統(tǒng)時間響應(yīng)的超時就意味著致命的失敗。 ? 實時操作系統(tǒng)是保證在一定時間限制內(nèi)完成特定功能的操作系統(tǒng)。 ? 以上的調(diào)度算法都是獨占的 – 即任務(wù)運行時,不允許別的任務(wù)搶先。 – 4)嵌入式微處理器必須功耗很低,尤其是用于便攜式的無線及移動的計算和通信設(shè)備中靠電池供電的嵌入式系統(tǒng)更是如此,如需要功耗只有 mW甚至 μ W級。 ? 任務(wù)控制塊里面包含了: – 當(dāng)前狀態(tài)、優(yōu)先級、要等待的事件或資源、任務(wù)程序碼的起始地址、初始堆棧指針 – 任務(wù)的 “ 上下文 ” ( context)。例如 printf。當(dāng)設(shè)置搶占禁止的任務(wù)解除阻塞,再次開始運行時,搶占又被禁止。 break。 if (=0) wakeup()。 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 釋放信號量圖示 信號量可用? 有任務(wù)阻塞? 任務(wù)繼續(xù) 信號量變?yōu)榭捎? 任務(wù)繼續(xù) 信號量保持不變 等待該信號量的 任務(wù)隊列的任務(wù) 就緒,信號量不 可用 Yes No No Yes 嵌入式培訓(xùn)專題 微迪軟件培訓(xùn)中心 Synchronizing Multiple Tasks STATUS semFlush (semId) Unblocks all tasks waiting for semaphore. Does not affect the state of a semaphore. Useful for
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1