在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解AUTOSAR-OS的調度機制

832065824 ? 來源:CSDN-梅爾文.古 ? 2023-11-16 16:43 ? 次閱讀

1. 什么是調度表

1.1 調度表概念

調度表由一系列按時間先后順序排序的終結點組成,其中每個終結點都有自己的任務,有的終結點可能是激活一系列的任務,有的是設置一系列的事件,還有的可能是既激活一系列的任務又設置一系列的事件。

5d14527e-8458-11ee-939d-92fbcf53809c.png

調度表(ScheduleTables) 通過提供一組靜態定義的到期點(expiry points)的封裝來解決同步問題。每個到期點定義:

處理時必須發生的一個或多個動作,其中動作是任務(Task)的激活或事件(event)的設置。

從調度表(ScheduleTable)開始點一個以滴答(Tick)為單位的偏移量(Offset)。

終結點在調度表上是按偏移從小到大有序排列的,因此要保證每個終結點的偏移都是獨一無二的,不能有偏移相同的終結點。

5d2df3dc-8458-11ee-939d-92fbcf53809c.png

每個調度表都有一個持續時間(Duration),即調度表的一次運行時間,度量單位為計數器的計數單位 Tick

5d42debe-8458-11ee-939d-92fbcf53809c.png

從調度表的起點到初始終結點的距離被稱為初始偏移(InitialOffset),相鄰終結點間的距離被稱為延遲(Delay),最后一個終結點到調度表終點的距離稱之為最后延遲(FinalDelay)

InitialOffsetDelayFinalDelay的取值范圍如公式3—1,3—2,3-3所示,其中OsCounterMinCycle是驅動計數器的最小循環值,OsCounterMaxAIIowedValue是驅動計數器的最大計數值。

5d529dfe-8458-11ee-939d-92fbcf53809c.png

5d692646-8458-11ee-939d-92fbcf53809c.png

除此之外,還要區分清楚幾個概念:

驅動計數器:驅動計數器是用于驅動整個調度表運行的計數器,驅動計數器的計數周期通常是固定的,并且要大于調度表中所有任務的最小執行間隔時間,以確保每個任務都能夠被執行到。驅動計數器用于控制任務執行的時間。

驅動計數器模數:就是驅動計數器的最大值,也就是一份調度表運行完,需要多少個counter。驅動計數器的模數被定義為OsCounterMaxAllowedValue + 1;

驅動計數器的模數通常不等于調度表的duration,而是大于調度表的duration。在實際的調度系統中,通常會將驅動計數器的模數設置為調度表的duration的整數倍,以確保調度表中的所有任務都能夠被完全執行。例如,如果調度表的duration為10ms,那么可以將驅動計數器的模數設置為20ms或者30ms等,以確保每個任務都能夠被執行到。

調度表的時間:調度表的持續時間通常是預先定義的,用于確定調度表中所有任務的執行時間范圍。

驅動計數器與調度表持續時間關系:驅動計數器與調度表時間相等嗎通常情況下,驅動計數器的計數周期不等于調度表的時間。驅動計數器是用于驅動整個調度表運行的計數器,它的計數周期通常是固定的,并且要大于調度表的時間,以確保調度表中的所有任務都能夠被執行到。

例如:驅動計數器的計數周期為1,即每個計數周期的時間為1個單位。調度表中有3個任務,分別為Task A、Task B和Task C,它們的執行時間分別為3、5和2個計數周期。

注意:Task A在第一個周期中執行時間為3個計數周期,在第二個周期中執行時間為4個計數周期,在第三個周期中執行時間為2個計數周期,在第四個周期中執行時間為3個計數周期,在第五個周期中執行時間為5個計數周期。在調度表中,每個任務的執行時間和間隔時間是預先定義的。Task A的間隔時間是指Task A完成一次執行后需要等待的時間,在實際的調度系統中,任務的間隔時間可能會受到多種因素的影響,例如任務的優先級、資源的競爭等。在設計和實現調度系統時,需要根據具體的應用場景和需求進行合理的設計和實現。

5d7f54d4-8458-11ee-939d-92fbcf53809c.png

同步計數器:同步計數器是一個軟件計數器,用于同步任務的執行。顯示同步中同步計數器等于驅動計數器,當驅動計數器的計數值等于同步計數器的計數值時,任務調度器會檢查任務隊列中是否有需要執行的任務。如果有,則執行該任務,否則繼續等待下一個同步計數器的計數周期。這樣,就可以實現任務的精確調度和同步,從而保證系統的穩定性和可靠性。

操作系統計數器:操作系統計數器通常由操作系統內核實現,用于記錄系統運行時間和控制系統中各個模塊和任務的執行時間和間隔時間。每個OS Counter都有一個最大計數值(OsCounterMaxAllowedValue),它表示OS Counter的最大計數范圍。同時,每個OS Counter還有一個最小計數值(OsCounterMinCycle),它表示OS Counter的最小計數周期。OS Counter的最大計數值和最小計數周期可以用來確定驅動計數器的模數和調度表的持續時間。具體來說,驅動計數器的模數應該等于OS Counter的最大計數值+1,而調度表的持續時間應該等于OS Counter的最大計數值+1乘以OS Counter的最小計數周期。

5d9ff310-8458-11ee-939d-92fbcf53809c.png

1.2調度表圖示

其實調度表就是一份計劃表,類似于工作計劃,例如下圖:

5d14527e-8458-11ee-939d-92fbcf53809c.png

假如tick是1ms,那么上面的調度表就是50ms要做的事情,做什么事情呢?

4ms要激活TaskA和TaskB,并設置一些Event

12ms不激活task,但是要設置Enent

20ms需要激活TaskA和TaskE

32ms需要激活TaskA和TaskE,并設置Event

40ms需要激活TaskB和TaskF,并設置Event

offset就是每個時間節點都有一個相對于調度表起始點的偏移值

2. 為什么要用調度表

調度表,可以用OS Alarm、OS Counter來實現,相當于到時間了就去激活task、設置Event,那么為什么要搞一個調度表的概念呢?

因為要同步:使在OSEK OS中,可以利用一個OSEK計數器和一組附屬于該計數器的自啟動報警器來實現靜態定義的任務激活機制。在簡單情況下,可以通過設置報警器一旦啟動就不能更改來實現。然而,如果在運行時對某個報警器進行修改,就很難保證報警器之間的相對同步。為此,AUTOSAR OS規范引入了調度表(ScheduleTable,ST)。

5dc22c32-8458-11ee-939d-92fbcf53809c.png

在AUTOSAR中,調度表是用于描述任務的執行順序和時間間隔的一種數據結構。Alarm是一種定時器,用于在指定的時間點或時間間隔觸發事件。當Alarm與調度表結合使用時,調度表可以保障Alarm的同步。

3. 調度表是如何用的

3.1.操作系統允許并發處理多個調度表

一個調度表只能被一個計數器驅動,而一個計數器能驅動多個調度表

驅動計數器的一個Tick與調度表的一個Tick的分辨率一致;操作系統使用一個迭代器遍歷調度表上的所有終結點,按照offset的大小從初始終結點(InitialExpiryPoint)開始遍歷,直到最后一個終結點IFinaIExpiryPoint)為止。在處理終結點上的操作時,操作系統必須先激活完所有的任務后,才能設置事件。由于在一個終結點上很有可能對一個任務同時進行激活和設置事件的操作,如果先激活一個處于掛起態的任務,再對它設置事件,操作會成功執行,而如果順序相反則會導致操作失敗。因此,操作系統對終結點上操作的處理順序進行了嚴格的限制。

3.2. 調度表根據具體需求可配置為單次執行或重復執行

單次執行是調度表處理完最后一個終結點后進入停止狀態,不再繼續執行,主要用于對某個觸發進行響應:循環執行是調度表處理完最后一個終結點后再返回到第一個終結點,繼續執行,主要用于執行重復操作的特定應用。

重復執行,由于調度表的持續時間不一定等于驅動計數器的模數,因此不能保證同一個終結點在不同次執行時都在同一個絕對計數值上執行,而在某些情況下這是必需的,例如校正發動機的角旋轉度數,故需要同步機制來解決。

一個未使用同步策略的調度表在任意時刻總是處于下述三個狀態中的一個,詳細的狀態轉換模型如下圖所示。在任何時刻,都可以使用系統服務GetScheduleTableStatus0來獲取調度表的狀態。對于未使用同步策略的調度表來說,調度表的持續時間和驅動計數器的模數沒有潛在的關聯,但各終結點的偏移和延遲需要按照公式3-1、3-2、3-3設置。

5dd829b0-8458-11ee-939d-92fbcf53809c.png

5de996c8-8458-11ee-939d-92fbcf53809c.png

3.3. 調度表有兩種類型的啟動方式

絕對啟動 StartScheduleTableAbs()和相對啟動StartScheduleTableRel0。調度表在被啟動后,將進入運行態。

絕對啟動是提供一個啟動值(Start),當驅動計數器的計數值與Start匹配時,操作系統將啟動調度表,該調度表的第一個終結點將在驅動計數器的計數值等于(Start+Initial Offset)時被處理。

5e09ef18-8458-11ee-939d-92fbcf53809c.png

5e1d6ac0-8458-11ee-939d-92fbcf53809c.png

5e302a7a-8458-11ee-939d-92fbcf53809c.png

相對啟動是提供一個偏移(Offset),當驅動計數器的計數值相對于現在(Now)增加了Offset個Tick后,操作系統將啟動調度表,該調度表上的第一個終結點將在驅動計數器的計數值與(Now +Offset+lnitial Offset)匹配時會被處理。

5e461cb8-8458-11ee-939d-92fbcf53809c.png

5e571c20-8458-11ee-939d-92fbcf53809c.png

用戶能在任意時刻調用系統服務StopScheduleTable()立即終止一個正在處于運行態的調度表,被終止后,調度表將進入停止態。無論調度表被終止時處理到了哪個終結點,下次啟動時都將會從第一個終結點開始處理。此外,調度表在正常運行結束后,也會進入停止態。

當用戶調用NextScheduleTable0發出切換調度表的請求時,操作系統將繼續處理當前調度表,把被切換入的調度表的狀態修改為下一個,直至處理完當前調度表的最后一個終結點后,才會去啟動被切換入的調度表。

4. 調度表的同步

處理調度表上的初始終結點的絕對時間是用戶可控的。然后,如果調度表的運行模式是重復執行,將不能保證每次執行初始終結點的時間是一樣的

5e7247c0-8458-11ee-939d-92fbcf53809c.png

該問題的產生,可能是由于調度表的持續時間不一定等于驅動計數器的模數導致的。

5e8584de-8458-11ee-939d-92fbcf53809c.png

舉例:注:驅動計數器通常是用于驅動整個調度表的計數器。它的作用是根據預定的時間間隔來觸發調度表中各個任務的執行,從而實現任務的協調和調度

假設調度表中有三個任務,任務A、任務B和任務C,它們的執行時間分別為2秒、3秒和4秒,也就是如果想要完整的執行三個任務需要9秒的時間。然而驅動計數器的模數為5秒,即當計數器達到5秒時會重新從0開始計數。也就是說任務C一直處于不執行的狀態。

5ea1ce1e-8458-11ee-939d-92fbcf53809c.png

5. AUTOSAR 操作系統規范提供了 2 種同步方式

隱式同步

5eb31214-8458-11ee-939d-92fbcf53809c.png

在隱式同步的情況下,調度表的更新和OS模塊的調度是隱式地同步的。即當調度表中的任務時間到達時,OS模塊不會立即調度該任務,而是等待下一個系統節拍時再調度該任務。因此,在隱式同步的情況下,任務的執行時間可能存在一定的誤差,并且無法保證任務的正確執行順序和時間間隔。

對于隱式同步而言,調度表的驅動計數器就是同步計數器,即調度表上的時間和驅動計數器上的時間保持一致

5ec7f06c-8458-11ee-939d-92fbcf53809c.png

隱式同步的調度表不需要操作系統的額外支持,但為了使調度表上的時間和驅動計數器的計數值一致,做了一些限制:調度表的持續時間必須等于驅動計數器的模數。如公式3-4所示:

也就是隱式同步的操作系統模塊的調度表(ScheduleTable)(每個調度表都有一個持續時間(Duration))應具有等于其關聯 OSEK OS 計數器的 OsCounterMaxAllowedValue + 1 的持續時間。

注意:驅動計數器的模數被定義為OsCounterMaxAllowedValue + 1。其中,OsCounterMaxAllowedValue是一個常數,表示驅動計數器的最大計數值。而+1是因為計數器從0開始計數,因此最大計數值需要加上1才能得到模數。

5efa31bc-8458-11ee-939d-92fbcf53809c.png

5f094030-8458-11ee-939d-92fbcf53809c.png

為了使調度表達到同步,操作系統需要在一個己知的計數值啟動調度表,這意味著調度表使用隱式同步策略時,只能使用絕對啟動,不能使用相對啟動在調度表被絕對啟動后,若終結點的偏移與驅動計數器的計數值匹配時,該終結點將會被處理。為了保證調度表和驅動計數器同步,通常的做法是在驅動計數器的計數值為0時啟動調度表,即使用StartScheduleTableAbs(Tbl,0),如圖所示:StartScheduleTableAbs(Tbl,0)是一個API函數,用絕對啟動啟動一個調度表,并將其絕對時間點設置為0。它的作用是將調度表的執行時間點設置為系統啟動的時間點,從而讓調度表從頭開始執行。

其實說白了隱式同步就是在running和SYNC開始的節點,用絕對啟動StartScheduleTableAbs(Tbl,0)使調度表 OS Counter的計數周期應該等于任務調度表的持續時間。讓兩者運行一致。從而實現調度表的周期性執行。

5f1f4650-8458-11ee-939d-92fbcf53809c.png

顯示同步

在顯示同步的情況下,調度表的更新和OS模塊的調度是顯式地同步的。即當調度表中的任務時間到達時,OS模塊會立即調度該任務,并執行該任務的任務函數。因此,在顯示同步的情況下,任務的執行時間是準確的,并且可以保證任務的正確執行順序和時間間隔。

顯式同步是指調度表的驅動計數器和同步計數器不是同一個計數器,但是這 2 個計數器 tick 的周期是一樣的。

5f364882-8458-11ee-939d-92fbcf53809c.png

顯式同步的調度表(ScheduleTable)需要操作系統模塊的額外支持。調度表(ScheduleTable)正常情況下,由操作系統模塊的計數器驅動,被稱為驅動計數器(drive Counter)。但處理過程需要與不屬于操作系統模塊的計數器對象的另一種計數器進行同步,此類進行同步的計數器被稱為同步計數器(synchronization Counter)。

在調度表(ScheduleTable)、操作系統模塊的計數器和同步計數器之間必須強制執行以下約束:

約束1:顯式同步的調度表(ScheduleTable)的持續時間不應大于驅動計數器(drive Counter)的模數。

約束2:顯式同步的調度表(ScheduleTable)的持續時間應等于同步計數器(synchronization Counter)的模數。

約束3:同步計數器(synchronization Counter)應與調度表(ScheduleTable)相關聯的驅動計數器drive Counter)具有相同的分辨率。這意味著調度表(ScheduleTable)上的滴答與同步計數器(synchronization Counter)上的滴答具有相同的持續時間。

5f518412-8458-11ee-939d-92fbcf53809c.png

5f770c1e-8458-11ee-939d-92fbcf53809c.png

如上圖所示:初始時調度表處于狀態 STOPPED,調用函數 StartScheduleTableSync()后,進入狀態 WAITING。WAITING 狀態一直持續到用戶調用 SyncScheduleTable(),

對每一個調度表初次調用 SyncScheduleTable()之后,調度表進入 RUNNING_AND_SYNCHRONOUS 狀態。如果用戶對一個周期調度表沒有再次調用 SyncScheduleTable(),那么調度表將一直處在 RUNNING_AND_SYNCHRONOUS 狀態,但是當用戶由于某種原因再次調用 SyncScheduleTable()后,系統會進行調度表與同步計數器之間的偏移值計算。如果計算出的偏移值大于調度表偏移的容忍度,那么調度表就會進入 RUNNING 狀態,并且系統會進行調度表同步,直到調度表的偏移值小于等于調度表的偏移容忍度之后停止同步,調度表再次進入 RUNNING_ AND_SYNCHRONOUS 狀態。

5f8ef518-8458-11ee-939d-92fbcf53809c.png

5fa38cee-8458-11ee-939d-92fbcf53809c.png

5fb79d9c-8458-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    126

    文章

    7901

    瀏覽量

    142966
  • 計數器
    +關注

    關注

    32

    文章

    2256

    瀏覽量

    94575
  • AUTOSAR
    +關注

    關注

    10

    文章

    362

    瀏覽量

    21588
  • 調度機制
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6786

原文標題:AUTOSAR-OS的調度機制-調度表

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    uc/os任務調度機制

    uc/os任務調度機制uc/OS 任務調度機制 內核的核心任務是任務調度機制,為了對uC/OS
    發表于 07-07 09:46

    UCOS之任務調度機制

    UCOS之任務調度機制
    發表于 05-30 07:56

    求藍牙協議棧初始化和調度機制資料?

    青云NRF51822/NRF52832藍牙4.x詳解第二講:藍牙協議棧初始化和調度機制對應藍牙協議棧的初始化一直是大家關注的問題,Nordic的協議棧如何運行,如何處理成為關鍵。本文并且通過
    發表于 06-19 09:00

    VxWorks系統的任務調度機制

    針對多任務系統而言,調度是指根據一定的算法.將CPU 分配給符合條件的任務使用,不同的系統任務調度機制不同。本文介紹VxWorks系統的任務調度策略和算法.分析優先級倒置產
    發表于 12-16 14:11 ?10次下載

    Linux與VxWorks任務調度機制分析

    Linux與VxWorks任務調度機制分析
    發表于 03-28 09:52 ?19次下載

    嵌入式實時操作系統VxWorks內核調度機制研究

    嵌入式實時操作系統VxWorks內核調度機制研究
    發表于 03-29 12:26 ?13次下載

    μC/OS-II 任務調度機制的改進

    介紹μC/OS-II 任務調度機制,并提出一種改進方法,使μC/OS-II變成一個兼備實時與分時任務調度機制的操作系統; 論述改進后系統的特點和要注意的問題,給出部分源代碼。
    發表于 04-15 11:21 ?14次下載

    基于輪循機制和RED的語音流調度機制

           本文提出了一種新的VoIP業務流調度機制(RR-RED),通過隨機早期檢測(RED)和輪循機制(Round Robin)控制主動丟包。該機制很好的繼承了R
    發表于 09-03 08:58 ?7次下載

    Li nux與VxWorks任務調度機制分析

    分析了Linux和VxWorks兩種多任務操作系統任務調度機制的異同,從任務控制塊、調度的時機、調度的優先級和調度的策略方面進行了詳細的分析和對比。分析了VxWorks和Linux在P
    發表于 11-13 17:54 ?10次下載

    VxWorks系統的任務調度機制

    針對多任務系統而言,調度是指根據一定的算法.將CPU 分配給符合條件的任務使用,不同的系統任務調度機制不同。本文介紹VxWorks系統的任務調度策略和算法.分析優先級倒置產生
    發表于 11-27 16:26 ?13次下載

    Windows CE陷阱調度機制

     一.什么是陷阱調度機制?        一般來說,嵌入式操作系統主要由兩部分組成:運行在核心態的內核系統和運行在用戶態的環境子系統組成。因
    發表于 08-27 14:38 ?640次閱讀

    基于動態概率休眠調度機制的WSNs拓撲控制算法_韓瑞艷

    基于動態概率休眠調度機制的WSNs拓撲控制算法_韓瑞艷
    發表于 03-19 19:19 ?0次下載

    虛擬計算資源調度機制研究

    針對基于Xen的vCPU調度機制對虛擬機網絡性能的影響進行了深入研究和分析。提出一種高效、準確、輕量級的網絡排隊敏感類型虛擬機(NSVM)識別方法,可根據當前虛擬機I/O傳輸特征將容易受到影響
    發表于 02-08 17:08 ?0次下載
    虛擬計算資源<b class='flag-5'>調度機制</b>研究

    NB―IoT物理控制信道NB―PDCCH及資源調度機制

    NB―IoT物理控制信道NB―PDCCH及資源調度機制(現代電源技術試題及答案)-NB―IoT物理控制信道NB―PDCCH及資源調度機制 ? ? ? ? ?
    發表于 08-31 19:56 ?13次下載
    NB―IoT物理控制信道NB―PDCCH及資源<b class='flag-5'>調度機制</b>

    AUTOSAR調度表可調度性的形式化分析

    作為車載操作系統,實時性對于AUTOSAR OS的重要性不言而喻,如何保證操作系統中的計算單元在截止時間內完成是極其重要的。而AUTOSAR OS提供的
    的頭像 發表于 12-16 14:01 ?1497次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>調度</b>表可<b class='flag-5'>調度</b>性的形式化分析
    主站蜘蛛池模板: 日本黄色免费观看| 久视频在线观看久视频| 黄色软件入口| 欧美丝妇| 精品国产免费观看久久久| 色操网| 在线观看深夜观看网站免费| 寡妇影院首页亚洲图片| 一区二区三区四区在线视频| 久久久久99精品成人片三人毛片 | 好男人午夜| 国产美女一级高清免费观看| 在线观看中文字幕第一页| 黄色一级日本| 国产手机在线看片| 亚洲v视频| 777色淫网站女女| 一区二区高清在线| 欧美精品1| 国产亚洲片| 婷婷激情亚洲| 午夜视频播放| 国产尤物在线视频 | www.色.com| 丁香激情六月天| 欧美日韩性猛交xxxxx免费看| 失禁h啪肉尿出来高h| 国产69久久精品成人看| 九九九精品| 2022天天操| 日本人的色道www免费一区| 日韩在线影院| 午夜老司机永久免费看片| aaaa级日本片免费视频| 亚洲国产网| 狠狠五月婷婷| 在线免费看黄视频| 黄页网站在线播放| zsvdy午夜片| 免费特黄| 免费看啪|