日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【一、vxWorks6.9】

發布時間:2023/12/31 编程问答 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【一、vxWorks6.9】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、vxWorks6.9

    • 1. 多任務簡介
    • 2. 任務狀態
    • 3. 優先級
      • 3.1 基于優先級的搶占式任務調度
      • 3.2 輪轉式調度
      • 3.3 搶占上鎖
      • 3.4 驅動程序支持的任務優先級
    • 4. 任務控制
      • 4.1 創建和激活任務
      • 4.2 任務堆棧
      • 4.3 任務刪除
      • 4.4 任務控制
      • 4.5 操作系統任務
        • 4.5.1 根任務:tUsrRoot
        • 4.5.2 日志任務:tLogTask
        • 4.5.3 異常處理任務:tExcTask
        • 4.5.4 網絡任務:tNetTask
        • 4.5.5 tShell
        • 4.5.6 目標代理任務:tWdbTask
        • 4.5.5 tTelnetd

1. 多任務簡介

實時系統是在多任務和任務間通信的基礎上建立起來的。一個多任務環境允許將實時應用構成一組獨立的任務,每個任務擁有各自的線程和系統資源。
為了更快的得到中斷響應,vxWorks操作系統里的
中斷服務程序(ISR)在一個專門的上下文中執行,是處于環境的上下文之外。

每個任務有各自的上下文,即各自擁有自己的CPU環境和系統環境(指任務被內核調度執行時所使用的資源)。上下文切換時,任務的上下文保存在任務控制塊(TCB).

2. 任務狀態

狀態描述
就緒(READY)僅等待CPU的資源,不等待其他任務資源
阻塞 (PEND)由于一些資源不可用而被阻塞
睡眠(DELAY)處于睡眠的任務
掛起(SUSPEND)該狀態任務不執行,主要用于調試用

3. 優先級

Wind內核中,默認是基于優先級的搶占式調度,當然也可以使用時間片輪轉,兩種調度都基于優先級。有256種優先級,優先級從0到255,優先級0最高,優先級255最低。

3.1 基于優先級的搶占式任務調度

當一個新任務優先級高于系統當前執行任務的優先級時,它將搶占CPU執行。這意味某個任務比當前任務優先級高,并處于就緒狀態,系統內核會立刻保存當前任務的上下文,并切換到高優先級任務的上下文中。

缺點:當多個任務優先級相同,并且任務永不阻塞,那么它將一直獨占處理器,其他任務將沒機會執行。但輪轉式調度可以解決這一問題。

3.2 輪轉式調度

當所有相同優先級任務處于就緒狀態時,通過時間片獲得相同的CPU處理時間,調動kernelTimeSlice()將啟動輪轉式調度
一般不使用輪轉式調度,除非相同代碼被復制執行多次。

3.3 搶占上鎖

通過調用taskLock()和taskUnLock()函數。當任務調用taskLock()函數時,將禁止使用調度程序,若該任務正在執行時,不會發生基于優先級的搶占。
搶占上鎖只能阻止任務的上下文切換,并不禁止中斷

3.4 驅動程序支持的任務優先級

所有應用程序的優先級應該在100-250之間,但驅動程序支持的任務(與中斷服務程序關聯的任務)優先級一般位于51-99之間。

4. 任務控制

4.1 創建和激活任務

//參數:新任務名、優先級、可選字段、堆棧大小、入口函數、10個函數參數 //返回值:任務ID extern TASK_ID taskSpawn (char * name, int priority, int options, size_t stackSize, FUNCPTR entryPt, _Vx_usr_arg_t arg1, _Vx_usr_arg_t arg2, _Vx_usr_arg_t arg3, _Vx_usr_arg_t arg4, _Vx_usr_arg_t arg5, _Vx_usr_arg_t arg6, _Vx_usr_arg_t arg7, _Vx_usr_arg_t arg8, _Vx_usr_arg_t arg9, _Vx_usr_arg_t arg10);

4.2 任務堆棧

為了避免堆棧溢出和破壞任務堆棧,最初分配堆棧空間時,可以分配大一點的空間,然后周期性的調用checkStack()函數周期性的監控,若可以使用更小的空間,將修改分配空間尺寸。

4.3 任務刪除

調用函數描述
exit()終止任務調用,釋放內存
taskDelete()終止指定任務,釋放內存
taskSafe()保護調用任務免于刪除
taskUnsafe()解除任務刪除保護

任務創建時,如果指定的入口函數返回,任務將隱含調用exit()函數,當調用taskDelete()函數,一個任務能夠刪除自身或另另一個任務。

4.4 任務控制

調用函數描述
taskSuspend()掛起任務
taskResume()恢復任務執行
taskRestart()重新啟動任務
taskDelay()延時任務,延時單位為“tick”
nanosleep()延時任務,延時時間為納秒
sysClkRateGet() //返回系統時鐘的,單位是tick taskDelay(sysClkRateGet() / 2); //延時時間為0,只能調用taskDelay(),nanosleep()禁止為0

4.5 操作系統任務

4.5.1 根任務:tUsrRoot

根任務是內核執行的首個任務,可初始化vxWorks操作系統的大部分程序。正常情況下,根任務在所有初始化結束后,終止任務并且被刪除。

4.5.2 日志任務:tLogTask

當前任務上下文中不執行輸入/輸出操作時,被操作系統用來記錄系統信息

4.5.3 異常處理任務:tExcTask

必須擁有系統的最高優先級,禁止被掛起、刪除、或改變任務。

4.5.4 網絡任務:tNetTask

用于vxWorks網絡任務級程序。通常配置INCLUDE_NET_LIB組件的操作系統可以發起網絡任務

4.5.5 tShell

用INCLUDE_SHELL組件配置vxWorks操作系統關于目標機命令解釋器

4.5.6 目標代理任務:tWdbTask

用INCLUDE_WDB組件配置目標代理任務

4.5.5 tTelnetd

還后臺允許遠程用戶使用telnet登陸到vxWorks操作系統,使用INCLUDE_TELNET組件配置telnet功能

總結

以上是生活随笔為你收集整理的【一、vxWorks6.9】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。