作業系統 任務排程方法

2021-07-15 03:47:00 字數 808 閱讀 4210

上次碰到js函式排程的問題,因為那時候不知道有event loop的概念……以為js中的函式也是搶占式的呼叫,然後又想起來上學期ucos中怪的碰撞檢測有問題的情況……所以翻了下作業系統的書……然而之前居然沒有翻到……再見再見

執行緒是最小的任務執行單位,乙個程序可以有多個執行緒。程序排程可以幫助計算機合理分配cpu,提高吞吐率。常見的排程演算法有:

先到先服務

最短作業優先排程(有搶占和非搶占)

優先順序排程(加入老化概念,可以是搶占式的)

輪轉法(rr)(可搶占)=> 維護乙個佇列,每次從佇列中取出乙個任務,然後執行,如果到達時間片還沒有結束任務,就終端任務,加到佇列的尾部,等待下一次的呼叫。這種設計常用於分時作業系統。並且一般來說,時間片的大小要大於上下文切換的時間,不然任務執行時間很大一部分都浪費在上下文切換上

多級任務佇列排程 => 把程序分組,每個分組都有不同的,絕對的優先順序。每個分組中又有自己的排程方法。

多級反饋佇列排程 => 對程序進行分組,但是各個程序可以在不同的分組之間移動。如果乙個程序在分組中使用過多的cpu,就被轉移到更低優先順序的分組的尾部。並且加入老化概念,可以提公升任務到優先順序高的佇列中。這是比較常用,但是比較複雜的方法。

linux中沒有執行緒和程序的概念,只有任務(task)的概念。根據優先順序的不同,分配不同大小的時間片。優先順序越高,時間片越大。

然後說回來,ucos中,採用的是搶占式的優先順序排程。一般在執行任務的時候,很多是用while來維護整個事件。所以在每個任務的while中,都要通過ostimewait這樣的函式來讓出cpu,讓其他優先順序的任務進行操作。然後其他任務帶有while的,也要適當讓出cpu,才能讓多工正常進行。

freertos作業系統 任務排程

一 任務建立 目的 應用程式中如何給各任務分配處理時間 任意時刻,os如何使任務投入執行 優先順序如何影響系統行為 任務狀態 如何實現任務 建立乙個或多個任務的例項 任務引數的使用 right 改變任務優先順序 刪除任務 週期性處理 空閒任務何時執行,可以用來幹什麼 解決 任務實現 任務函式 voi...

freeRTOS作業系統任務排程方式

任務排程的方式 一.搶占式 如果使用者在 freertos 的配置檔案 freertosconfig.h 中禁止使用時間片排程,那麼每個任務必須配置不同的優先順序。當 freertos 多工啟動執行後,基本會按照如下的方式去執行 1.首先執行的最高優先順序的任務 task1,task1 會一直執行直...

ucosii實時作業系統的任務排程

嵌入式作業系統的任務排程演算法好壞在很大程度上決定了該系統的執行效率,由於其執行的頻率極高,所以在任務排程函式的實現上,對於效率的要求可以用苛刻來形容。基於優先順序的任務排程總結下來就是做了兩件事 1 找到優先順序最高的就緒態任務 2 切換任務上下文並開始執行該任務 第二步的切換上下文對個各個rto...