程序排程(程序優先順序和nice值)

2021-07-16 05:57:07 字數 1592 閱讀 7134

基本概念:

程序優先順序是乙個數值,它通過動態的優先順序和靜態的優先順序來決定程序被cpu處理的順序。乙個擁有更高程序優先順序的程序擁有更大的機率得到處理器的處理。

核心根據程序的行為和特性使用試探演算法,動態地調整調高或調低動態優先順序。乙個使用者程序可以通過使用程序的nice值間接改變靜態優先順序。乙個擁有更高靜態優先順序的程序將會擁有更長的時間片(程序能在處理上執行多長時間)。

linux支援從19(最低優先順序)到-20(最高優先順序)的nice值。預設值為0。

程序可以通過調整nice值選擇以更低優先順序執行。

getpriority(2)                                           linux programmer's manual                                           getpriority(2)

name

getpriority, setpriority - get/set program scheduling priority

synopsis

#include #include int getpriority(int which, int who);

int setpriority(int which, int who, int prio);

例子,調整nic值,比較相同的任務兩個程序的耗時。gcc nice.c

#include #include #include #include #include int main()

{    time_t t1, t2, t3;

time(&t1);

int i = 0;

int num = 10000;

pid_t pid = fork();

if (pid == 0) {

int nice = getpriority(prio_process, 0);

printf("parent nice = %d\n", nice);

for (i; i0) {

setpriority(prio_process, 0, 19);

int nice = getpriority(prio_process, 0);

printf("child nice = %d\n", nice);

for (i; i在centos 7執行,有效:

在unubtu 14執行,有效:

通過top命令可以看到當前程序的nice值:

程序優先順序和程序nice值?

程序優先順序和程序nice值?首先,我想用乙個簡單的命令來引起這個議題。無論在linux或者unix系統中,用ps l命令則會類似輸出以下幾個內容 root dbbak root ps l 這裡用的是linux測試 f s uid pid ppid c pri ni addr sz wchan tt...

程序優先順序,程序nice值和 nice的解釋

用top或者ps命令會輸出pri pr ni ni nice這三種指標值,這些到底是什麼東西?先給出大概的解釋如下 pri 程序優先權,代表這個程序可被執行的優先順序,其值越小,優先順序就越高,越早被執行 ni 程序nice值,代表這個程序的優先值 nice 改變過優先順序的程序的占用cpu的百分比...

Linux程序優先順序和nice值

在學習了linux的完全公平排程演算法 cfs 後,記錄下學習軌跡 這篇文章主要講述,完全公平排程演算法的工作方式,和一些排程知識 我們可以通過ps l看到當前正在執行的程序的詳細資訊其中 pid 程序號 ppid 該程序父程序的程序好 c cpu是用百分比 pri 優先順序 ni nice值 ad...