uC/OS-II OS_TASK.C中有關任務管理的函數

函數大致用途

OS_TASK.C是uC/OS-II有關任務管理的文件,它定義了一些函數:建立任務、刪除任務、改變任務的優先級、掛起和恢復任務,以及獲取有關任務的信息。

函數用途
OSTaskCreate()建立任務
OSTaskCreateExt()擴展建立任務
OSTaskStkChk()堆棧檢驗
OSTaskDel()刪除任務
OSTaskDelReq()請求刪除任務
OSTaskChangePrio()改變任務的優先級
OSTaskSuspend()掛起任務
OSTaskResume()恢復任務
OSTaskQuery()獲取有關任務的信息

狀態切換圖

在這里插入圖片描述

OSTaskCreate() and OSTaskCreateExt()

建立任務函數,一旦任務建立就進入就緒態準備運行。
任務可以在多任務開始之前建立,也可以是動態地被一個運行著的任務建立。
如果一個任務是被另一個任務建立的,而這個任務的優先級高于建立它的那個任務,這時,這個剛剛建立的任務將立即得到CPU控制權。

OSTaskDel()

將任務轉入睡眠態。
它可以由本任務執行,也可以由另一個任務調用該函數使本任務進入睡眠態

OSTaskSuspend() and OSTaskResume()

掛起任務和恢復任務:將任務轉入掛起態、將任務從掛起態轉入就緒態。
一些延遲函數和事件函數也可以完成任務到掛起狀態的轉換。

OSTaskChangePrio()

改變任務的優先級。
它本身不改變任務狀態,但是可能會影響任務的狀態。
例:執行任務將就緒任務的優先級改的比自己高,這樣cpu的控制權就會立刻被轉到那個任務手中

OSTaskStkChk()

為了避免為任務分配過多的堆棧空間,從而減少自己的應用程序的代碼所需內存數量。這時就需要獲取任務實際所需的堆棧空間大小。
本函數的操作:順著堆棧的棧底開始計算空閑的堆棧空間大小,具體實現方法是統計存儲值為0的連續堆棧入口的數目,直到發現存儲值不為0的堆棧入口

OSTaskQuery()

該函數通過檢查對應任務的任務控制塊中的內容來得到任務的信息。
可以獲取自身或其他應用任務的信息。

OSTaskIdle()

當所有任務都不在就緒態中,操作系統將執行空閑任務的函數OSTaskIdle()。
這個函數由系統定義,不能刪除、掛起或者改變優先級。

有關中斷

如果中斷沒有被禁止,正在運行的任務是可以被中斷的。任務被中斷后,進入中斷服務態(ISR).響應中斷時,正在執行的任務處于掛起態,中斷服務子程序控制了系統的控制權。
中斷服務程序完成后,不一定返回到被中斷的任務。
因為uC/OS-II總是執行就緒態任務中優先級最高的任務。由于中斷服務程序的執行,可能使被中斷的程序不是就緒態任務中優先級最高的。
例如下面幾個情況:

1、中斷服務程序利用了時間的發生,而使得一個或讀個更高優先級任務進入就緒態
2、中斷服務程序建立或者恢復了一個新的高優先級任務
3、中斷程序掛起了被中斷的任務。
一般來說中斷服務程序不會干涉任務的調度,所以后兩種情況不會經常發生。第一種情況比較常見

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377535.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows下寫的腳本,在linux下執行失敗

Windows中的換行符為CRLF, 即正則表達式的rn(ASCII碼為13和10), 而Unix(或Linux)換行符為LF, 即正則表達式的n. 在Windows和Linux下協同工作的時候, 往往這個細小的差別就導致問題, 如 1)Windows下寫的Shell腳本, 在Linux下運行時往往出現rn是無效參數, 不能執行; 2)vi 等編器下…

Scala中的do ... while循環

做...在Scala循環 (do...while loop in Scala) do...while loop in Scala is used to run a block of code multiple numbers of time. The number of executions is defined by an exit condition. If this condition is TRUE the code will run otherwise it runs the first …

十七、完整神經網絡模型訓練步驟

以CIFAR-10數據集為例,訓練自己搭建的神經網絡模型架構 一、準備CIFAR-10數據集 CIFAR10官網使用文檔 torchvision.datasets.CIFAR10(root"./CIFAR_10",trainTrue,downloadTrue) 參數描述root字符串,指明要下載到的位置,或已有數…

μC/OS-Ⅱ 操作系統內核知識

目錄μC/OS-Ⅱ任務調度1.任務控制塊2.任務管理3.任務狀態μC/OS-Ⅱ時間管理μC/OS-Ⅱ內存管理內存控制塊MCBμC/OS-Ⅱ任務通信1.事件2.事件控制塊ECB3.信號量4.郵箱5.消息隊列操作系統內核:在多任務系統中,提供任務調度與切換、中斷服務 操作系統內核為每…

第二版tapout

先說說上次流回來的芯片的測試情況。 4月23日, 芯片采用裸片直接切片, bond在板子上,外面加了一個小塑料殼來保護,我們就直接拿回來測試了。 測試的主要分為模擬和數字兩部分, 數字部分的模塊基本都工作正常&#xff0…

cd-rom門鎖定什么意思_CD-ROM的完整形式是什么?

cd-rom門鎖定什么意思CD-ROM:光盤只讀存儲器 (CD-ROM: Compact Disc Read-Only Memory) CD-ROM is an abbreviation of "Compact Disc Read-Only Memory". It is a data storage memory in the form of an optical compact disc, which is read by a syst…

遠程工作時的協作工具

遠程工作時的協作工具 Google Hangout 用于日常會議和面對面交談,在國內其實可以用qq來帶起。Campfire 用于一天來的持續對話。Screenhero 用于分享屏幕,一起寫代碼,這個比較有用,可以一起寫代碼。Balsamiq 用于計劃要制作的 UI。Asana 用于管理任務Google Docs 用于…

十八、完整神經網絡模型驗證步驟

網絡訓練好了,需要提供輸入進行驗證網絡模型訓練的效果 一、加載測試數據 創建python測試文件,beyond_test.py 保存在dataset文件夾下a文件夾里的1.jpg小狗圖片 二、讀取測試圖片,重新設置模型所規定的大小(32,32),并轉為tens…

二分法變種小結(leetcode 34、leetcode33、leetcode 81、leetcode 153、leetcode 74)

目錄二分法細節1、leetcode 34 在排序數組中查找元素的第一個和最后一個位置2、不完全有序下的二分查找(leetcode33. 搜索旋轉排序數組)3、含重復元素的不完全有序下的二分查找(81. 搜索旋轉排序數組 II)3、不完全有序下的找最小元素(153. 尋找旋轉排序數組中的最小值)4、二維矩…

ID3D11DeviceContext::Dispatch與numthread筆記

假定——[numthreads(TX, TY, TZ)] // 線程組尺寸。既線程組內有多少個線程。Dispatch(GX, GY, GZ); // 線程組的數量。既有多少個線程組。 那么——SV_GroupThreadID{iTX, iTY, iTZ} // 【線程組內的】線程3D編號SV_GroupID{iGX, iGY, iGZ} // 線程組的3D編號SV_DispatchT…

kotlin 查找id_Kotlin程序查找Square區域

kotlin 查找idFormula to find area of Square: area side*side 查找Square面積的公式: area side * side Given the value of side, we have to find the area of Square. 給定side的值,我們必須找到Square的面積。 Example: 例: Input…

小米手環6解決天氣未同步問題

最近我發現了我的米6手環天氣不同步,打開Zepp Life刷新同步也不行,后來我找了一些網上的解決方法,嘗試了一些也還不行,我這人喜歡瞎搗鼓,無意之間給整好了,后來我開始總結自己操作步驟,就在剛才…

c# datetime._C#| DateTime.Month屬性與示例

c# datetime.DateTime.Month屬性 (DateTime.Month Property) DateTime.Month Property is used to get the month component of this object. Its a GET property of DateTime class. DateTime.Month屬性用于獲取此對象的月份組成部分。 這是DateTime類的GET屬性。 Syntax: 句…

C++ 內存分配層次以及memory primitives的基本用法

分配層次 C memory primitives 分配釋放類型是否可重載mallocfree()C函數不可newdeleteC表達式不可::operator new()::operator delete()C函數可allocator::allocate()allocator::deallocate()C標準庫可自由設計并以之搭配任何容器 分配與釋放的四個用法 1、malloc and delet…

jQuery easyui layout布局自適應瀏覽器大小

首先解釋一下標題的含義,當我們用jQuery easyui layout 進行布局的時候,可能會遇到這樣一個問題,那就是當手工調整瀏覽器大小,或者最大化、還原窗口的時候,layout的某個區域不能填充因為瀏覽器擴大而產 生的空白區域&a…

JAVA 作業:圖形界面

自己動手寫的一個小JAVA 程序: 一個學生管理小系統,雖然很挫,但是這我學JAVA的第一步。學了2天JAVA沒有白費! 1 import java.awt.*;2 import java.awt.event.*;3 import java.util.ArrayList;4 5 import javax.swing.*;6 7 class …

一、Pytorch對自定義表達式自動求導

例如:y ax bx c,分別對a,b,c求導 若當a3,b4,c5,x1時 import torch from torch import autogradx torch.tensor(1.) a torch.tensor(3.,requires_gradTrue) b torch.tensor(4.,requires…

css菜單下拉菜單_在CSS中創建下拉菜單

css菜單下拉菜單CSS | 創建下拉菜單 (CSS | Creating Dropdown) Trivia: 瑣事: We know the importance of navigation bar on our webpage, we know the importance of a list of items too on our webpage but what is the importance of dropdown in web pages?…

C++ 內存基本構件new/delete的意義、運用方式以及重載方式

目錄一、對new的理解1、new做了什么2、new被編譯器轉為了什么3、operate_new源代碼長啥樣二、對delete的理解1、delete做了什么2、delete被編譯器轉為了什么3、operator delete源代碼長啥樣三、構造函數與析構函數的直接調用參考一、對new的理解 1、new做了什么 C告訴我們&am…

二、線性代數

一、張量 張量表示由一個數值組成的數組,這個數組可能有多個維度 import torchx torch.arange(15) x # tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])1,shape shape屬性可以訪問張量的形狀 x.shape # torch.Size([15])2&a…