導航:首頁 > 操作系統 > 查看linux進程優先順序

查看linux進程優先順序

發布時間:2022-12-28 08:48:08

『壹』 淺析linux下進程的調度策略與優先順序

在 Linux 中,線程是由進程來實現的,可以認為線程就是一個輕量級的進程,因此,線程調度是按照進程調度的方式來進行的。這樣設計,線程調度流程可以直接復用進程調度流程,沒必要再設計一個進程內的線程調度器了。

在 Linux 中,進程調度器是基於進程的調度策略與調度優先順序來決定調度哪個進程運行。

調度策略主要包括:

調度優先順序的范圍是 0~99,數值越大,表示優先順序越高。

其中,SCHED_OTHER、SCHED_IDLE、SCHED_BACH 為非實時調度策略,其調度優先順序為 0。而 SCHED_FIFO、SCHED_RR 是實時調度策略,其調度優先順序范圍為 1~99。

實時調度策略的進程總是比非實時調度策略的進程優先順序高。

在 Linux 內部實現中,調度器會為每個可能的調度優先順序維護一個可運行的進程列表,以最高優先順序列表頭部的進程作為下一次調度的進程,所有的調度都是搶占式的,如果一個具有更高調度優先順序的進程轉換為可運行狀態,那麼當前運行的進程將被強制進入其等待的隊列中。

SCHED_OTHER

該調度策略是默認的 Linux 分時調度策略,該調度策略為非實時的,其調度優先順序總是為 0。

對於該調度策略類型的進程,調度器是基於動態優先順序來調度的。動態優先順序跟屬性 nice 有關,nice 的值會隨著進程的運行時間而動態改變,以確保所有具有 SCHED_OTHER 策略的進程公平地得到調度。

在 Linux 中,nice 的值范圍為-20 ~ +19,默認值為 0。nice 值越大,則優先順序越低,因此相對較低 nice 值的進程可以獲得更多的處理器時間。

通過命令 ps -el 查看系統中的進程列表,其中 NI 列就是進程對應的 nice 值。

使用 top 命令,看到的 NI 列也是進程的 nice 值。

調整 nice 值,可以通過 shell 命令 nice ,該命令可以按照指定的 nice 值運行 cmd ,命令的幫助信息為:

重新調整已運行進程的 nice 值,可通過 renice 命令實現,命令的幫助信息為:

另外,可以執行 top 命令,輸入 r ,根據提示輸入進程的 pid ,再輸入 nice 數值,也可以調整進程的 nice 值。

SCHED_FIFO

該調度策略為先入先出調度策略,簡單概括,就是一旦進程佔用了 CPU,則一直運行,直到有更高優先順序的任務搶占,或者進程自己放棄佔用 CPU。

SCHED_RR

該調度策略為時間片輪轉調度策略,該調度策略是基於 SCHED_FIFO 策略的演進,其在每個進程上增加一個時間片限制,當時間片使用完成後,調度器將該進程置於隊列的尾端,放在尾端保證了所有具有相同調度優先順序的進程的調度公平。

使用 top 命令,如果 PR 列的值為 RT ,則說明該進程採用的是實時調度策略,其調度策略為 SCHED_FIFO 或者 SCHED_RR,而對於非實時調度策略的進程,該列的值為 NI + 20 。

可以通過命令 ps -eo state,uid,pid,ppid,rtprio,time,comm 來查看進程對應的實時優先順序,實時優先順序位於 RTPRIO 列下,如果進程對應的列顯示為 - ,說明該進程不是實時進程。

chrt 命令可以用來很簡單地更改進程的調度策略與調度優先順序。在 Linux 下查看 chrt 命令的幫助信息:

比如,獲取某個進程的調度策略,使用如下命令:

在比如,設置某個進程的調度策略為 SCHED_FIFO,調度優先順序為 70,使用如下命令:

『貳』 linux系統中,程序有若干個優先順序,最低的優先順序是什麼

linux系統中,程序有若干個優先順序,最低的優先順序是19。

Linux為一套免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年第一次釋出,它主要受到Minix和Unix思想的啟發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體

(2)查看linux進程優先順序擴展閱讀:

普通用戶只能在0~19之間調整應用程序的優先權值,只有超級用戶有權調整更高的優先權值(從-20~19)。linux系統屬於這種數值越小優先順序越高,數值越大優先順序越低的系統。windows屬於那種優先數值大的優先順序高的系統。

在linux系統中,使用ifconfig命令給網口配置ip,系統會自動生成這個網卡的相關路由信息,可以使用命令route –n查看系統所有的路由信息,參數-n是不進行地址解析,如果不添加-n選項,route命令會根據/etc/resolv文件中配置的DNS伺服器進行地址解析。

『叄』 linux 下查看進程用什麼命令

linux 下查看進程可以使用的命令:

1、ps命令查找與進程相關的PID號:

2、ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。

3、ps -A 顯示所有程序。

4、ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。

5、ps -e 此參數的效果和指定"A"參數相同。

6、ps e 列出程序時,顯示每個程序所使用的環境變數。

7、ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。

8、ps -H 顯示樹狀結構,表示程序間的相互關系。

9、ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。

10、ps s 採用程序信號的格式顯示程序狀況。

11、ps S 列出程序時,包括已中斷的子程序資料。

12、ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。

13、ps u 以用戶為主的格式來顯示程序狀況。

14、ps x 顯示所有程序,不以終端機來區分。

『肆』 Linux - 進程調度

進程調度演算法也稱 CPU 調度演算法,畢竟進程是由 CPU 調度的。

當 CPU 空閑時,操作系統就選擇內存中的某個「就緒狀態」的進程,並給其分配 CPU。

什麼時候會發生 CPU 調度呢?通常有以下情況:

其中發生在 1 和 4 兩種情況下的調度稱為「非搶占式調度」,2 和 3 兩種情況下發生的調度稱為「搶占式調度」。

非搶占式的意思就是,當進程正在運行時,它就會一直運行,直到該進程完成或發生某個事件而被阻塞時,才會把 CPU 讓給其他進程。

而搶占式調度,顧名思義就是進程正在運行的時候,可以被打斷,使其把 CPU 讓給其他進程。那搶占的原則一般有三種,分別是時間片原則、優先權原則、短作業優先原則。

你可能會好奇為什麼第 3 種情況也會發生 CPU 調度呢?假設有一個進程是處於等待狀態的,但是它的優先順序比較高,如果該進程等待的事件發生了,它就會轉到就緒狀態,一旦它轉到就緒狀態,如果我們的調度演算法是以優先順序來進行調度的,那麼它就會立馬搶占正在運行的進程,所以這個時候就會發生 CPU 調度。

那第 2 種狀態通常是時間片到的情況,因為時間片到了就會發生中斷,於是就會搶占正在運行的進程,從而佔用 CPU。

調度演算法影響的是等待時間(進程在就緒隊列中等待調度的時間總和),而不能影響進程真在使用 CPU 的時間和 I/O 時間。

最簡單的一個調度演算法,就是非搶占式的先來先服務(First Come First Severd, FCFS)演算法了。

顧名思義,先來後到,每次從就緒隊列選擇最先進入隊列的進程,然後一直運行,直到進程退出或被阻塞,才會繼續從隊列中選擇第一個進程接著運行。

這似乎很公平,但是當一個長作業先運行了,那麼後面的短作業等待的時間就會很長,不利於短作業。

FCFS 對長作業有利,適用於 CPU 繁忙型作業的系統,而不適用於 I/O 繁忙型作業的系統。

最短作業優先(Shortest Job First, SJF)調度演算法同樣也是顧名思義,它會優先選擇運行時間最短的進程來運行,這有助於提高系統的吞吐量。

這顯然對長作業不利,很容易造成一種極端現象。

比如,一個長作業在就緒隊列等待運行,而這個就緒隊列有非常多的短作業,那麼就會使得長作業不斷的往後推,周轉時間變長,致使長作業長期不會被運行。

前面的「先來先服務調度演算法」和「最短作業優先調度演算法」都沒有很好的權衡短作業和長作業。

那麼,高響應比優先 (Highest Response Ratio Next, HRRN)調度演算法主要是權衡了短作業和長作業。

每次進行進程調度時,先計算「響應比優先順序」,然後把「響應比優先順序」最高的進程投入運行,「響應比優先順序」的計算公式:

從上面的公式,可以發現:

最古老、最簡單、最公平且使用最廣的演算法就是時間片輪轉(Round Robin, RR)調度演算法。

每個進程被分配一個時間段,稱為時間片(Quantum),即允許該進程在該時間段中運行。

另外,時間片的長度就是一個很關鍵的點:

通常時間片設為 20ms~50ms 通常是一個比較合理的折中值。

前面的「時間片輪轉演算法」做了個假設,即讓所有的進程同等重要,也不偏袒誰,大家的運行時間都一樣。

但是,對於多用戶計算機系統就有不同的看法了,它們希望調度是有優先順序的,即希望調度程序能從就緒隊列中選擇最高優先順序的進程進行運行,這稱為最高優先順序(Highest Priority First,HPF)調度演算法。

進程的優先順序可以分為,靜態優先順序或動態優先順序:

該演算法也有兩種處理優先順序高的方法,非搶占式和搶占式:

但是依然有缺點,可能會導致低優先順序的進程永遠不會運行。

多級反饋隊列(Multilevel Feedback Queue)調度演算法是「時間片輪轉演算法」和「最高優先順序演算法」的綜合和發展。

顧名思義:

工作原理:

設置了多個隊列,賦予每個隊列不同的優先順序,每個隊列優先順序從高到低,同時優先順序越高時間片越短;

新的進程會被放入到第一級隊列的末尾,按先來先服務的原則排隊等待被調度,如果在第一級隊列規定的時間片沒運行完成,則將其轉入到第二級隊列的末尾,以此類推,直至完成;

當較高優先順序的隊列為空,才調度較低優先順序的隊列中的進程運行。如果進程運行時,有新進程進入較高優先順序的隊列,則停止當前運行的進程並將其移入到原隊列末尾,接著讓較高優先順序的進程運行;

可以發現,對於短作業可能可以在第一級隊列很快被處理完。對於長作業,如果在第一級隊列處理不完,可以移入下次隊列等待被執行,雖然等待的時間變長了,但是運行時間也會更長了,所以該演算法很好的兼顧了長短作業,同時有較好的響應時間。

整體架構如下,即調度策略是模塊化設計的,調度器根據不同的進程依次遍歷不同的調度策略,找到進程對應的調度策略,調度的結果即為選出一個可運行的進程指針,並將其加入到進程可運行隊列中。

以一棵紅黑樹管理所有需要調度的進程,
紅黑樹,左邊節點小於右邊節點的值,運行到目前為止vruntime最小的進程,同時考慮了CPU/IO和nice,總是找vruntime最小的線程調度。
vruntime = pruntime/weight × 1024;
vruntime是虛擬運行時間,pruntime是物理運行時間,weight權重由nice值決定(nice越低權重越高),則運行時間少、nice值低的的線程vruntime小,將得到優先調度。這是一個隨運行而動態變化的過程。

『伍』 linux 設置進程優先順序

你所說的linux系統的優先順序數確實是這樣的。需要注意的是普通用戶只能在0~19之間調整應用程序的優先權值,只有超級用戶有權調整更高的優先權值(從-20~19)。linux系統屬於這種數值越小優先順序越高,數值越大優先順序越低的系統。windows屬於那種優先數值大的優先順序高的系統。其他的就不大清楚

閱讀全文

與查看linux進程優先順序相關的資料

熱點內容
考駕照怎麼找伺服器 瀏覽:882
阿里雲伺服器如何更換地區 瀏覽:968
手機app調音器怎麼調古箏 瀏覽:501
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:17
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:274
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:793
命令序列錯 瀏覽:259
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:748
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:762