實驗要求:
模擬作業系統運轉, 設定時間片輪,程序執行一次,所需執行時間減去時間片**小(設為2),優先順序減去2,等待系統呼叫。
時間片輪排程演算法中,每個程序被分配乙個時間段,稱作它的時間片,即該程序允許執行的時間。如果在時間片結束時程序還在執行,則cpu將被剝奪並分配給另乙個程序實現過程。
動態優先順序排程演算法是指在建立程序之初,先賦予其乙個優先順序,然後其值隨著程序的推進或等待時間的增加而改變,以便獲得更好的排程效能。例如,可以規定在就緒佇列中的程序隨其等待的時間的正常,使其優先順序相應提高。若所有的程序都具有相同的優先順序初值,則最先進入就緒佇列的程序會因為其優先順序變得最高,而優先獲得處理機,這相當於fcfs演算法。若所有的就緒程序具有各不相同的優先順序初值,那麼對於優先順序初值低的程序,在等待了足夠的時間後,也可以獲得處理機。
實現過程:
1、定義結構體
typedef struct pcb
pcb;
2、建立頭指標
pcb* init_circular_linkedlist(pcb * head)
3、建立程序模擬佇列
pcb * creat(int count, pcb *head)
p->next = null;
return head;
}
4、鍊錶按優先順序排序(priority越小,優先順序越高)
void sort1(pcb *head)
p = p->next;
q = q->next;
}tail = p;}}
5、程序排程演算法
pcb * sch(pcb * head)else
ptr->time = ptr->time - m;
if(ptr->time >= -1)else
ptr = head->next; //作業系統執行的一直是head->next
}return head;
}
6、列印函式
void print(pcb *head)
}
7、主函式
int main(void)
結果展示:
此處顯示的time為程序開始時間,優先順序為程序開始時。
過程:
後續過程類似(以上優先順序和時間顯示的是程序當前時間片執行結束後)
Linux優先順序時間片排程
程序的優先順序有2種度量方法,一種是nice值,一種是實時優先順序 rtprio nice值的範圍是 20 19,值越大優先順序越低,也就是說nice值為 20的程序優先順序最大。實時優先順序 rtprio 的範圍是0 99,與nice值的定義相反,實時優先順序是值越大優先順序越高。實時程序都是一些...
程序時間片的分配(優先順序設定)
系統對不同程序所分配的cpu時間的多少主要由程序的優先順序決定。每乙個程序都有自己的優先順序都有自己的優先順序。靜態優先順序高的程序會搶占低的程序。對優先順序為0的程序將依照其動態優先順序來分配執行時間,優先順序的值越小,優先權越高。但是對程序執行一定的操作就可以改變其動態優先順序。其操作如下 in...
C C 算符優先順序的問題
算符優先順序首先決定了,一些括號是可加可不加,還是必須加 移位運算子 大於比較運算子 cout boolalpha a b endl 是會報錯的 cout boolalpha a b endl 相等性比較運算 的優先順序要高於賦值運算 dir dp struct dirent dirp if dp ...