linux程序的排程方式(面試題)

2021-10-25 03:16:38 字數 734 閱讀 8560

linux程序分為實時程序(有實時需求的程序)和普通程序兩種,實時程序的優先順序高於普通程序,故優先執行實時程序。

實時程序的排程方式:靜態優先順序策略+先進先出策略/輪轉策略

系統排程時,首先執行靜態優先順序策略,會根據使用者設定的靜態優先順序對實時程序進行排序,先執行優先順序高的程序直到完畢,再執行優先順序低的程序。當有數個實時程序的優先順序相同時,有先進先出策略(sched_fifo)和輪轉策略(sched_rr)供使用者選擇。若為先進先出策略,系統會根據程序出現在佇列上的位置選擇執行的順序;若為輪轉策略,系統會為實時程序分配時間片, 當乙個時間片消耗完畢,就會執行下乙個相同優先順序的程序,如此迴圈往復,直到同優先順序的所有程序執行完畢。

普通程序的排程方式:動態優先順序策略

系統排程時,會關注程序近一段時間內的表現(主要是睡眠時間和執行時間),再根據公式計算動態優先順序,並嚴格按照動態優先順序的高低順序執行程序。其中,動態優先順序是以靜態優先順序為基準進行計算的。若程序為互動式程序(如:桌面程式、伺服器等),由於睡眠時間較長,對應的動態優先順序也應該較高,當輸入到來時能很快地被執行;若程序為批處理程序(如:編譯程式),會較長時間處於可執行狀態,可適當較低動態優先順序,讓系統先執行比較緊急的程序。

注意:程序一般預設為普通程序,將程序的策略設為sched_fifo或sched_rr,可變為實時程序。

參考部落格:

程序相關的面試題

管道 有名無名 訊號,訊號量,訊息佇列,共享記憶體。所謂程序間通訊,就是指乙個程序和另乙個程序有聯絡,不僅僅指傳遞訊息,還包括其他操作,有簡單也有複雜。不過他們使用的方法是基本相同的。訊號和訊號量是兩種不同的方式,他們都可以用來實現同步和互斥,但前者是使用訊號處理器來進行的,後者是使用pv操作來實現...

電梯排程演算法(微軟面試題)

在高峰時間,實習生小飛常常會被電梯每層樓都停弄得很不耐煩,於是他想出了這樣乙個辦法 由於樓層並不高,那麼在繁忙的時間,每次電梯從一層往上走時,我們只允許電梯停在其中的某一層。所有乘客都從一樓上電梯,到達某層樓後,電梯聽下來,所有乘客再從這裡爬樓梯到自己的目的層。在一樓時,每個乘客選擇自己的目的層,電...

面試題 程序 執行緒的區別

程序通訊方式 ipc 管道 訊息佇列 共享記憶體 訊號量 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 namedpipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 sem...