在采用多道系統的設計程序中,往往有若干進程同時處于就緒狀態。當就緒狀態進程數大于處理機數時,就必須按照某種策略來決定哪些進程優先占用處理機。本實驗模擬在單處理機情況下處理機調度
處理機調度
一、實驗目的:
1、了解Linux下Emacs編輯器的使用方法,掌握各種常用的鍵盤操作命令;
2、理解并掌握處理機調度算法。
二、實驗內容及要求:
在采用多道系統的設計程序中,往往有若干進程同時處于就緒狀態。當就緒狀態進程數大于處理機數時,就必須按照某種策略來決定哪些進程優先占用處理機。本實驗模擬在單處理機情況下處理機調度。
1、優先調度算法實現處理機的調度:
設計思路:
1)每個進程用一個進程控制塊PCB來代表,進程控制塊包括進程名(進程的標識)、指針(按優先數的大小把進程連成隊列,用指針指出下一個進程的進程控制塊首地址,最后一個進程中的指針為"0")、要求運行時間、優先數、狀態(就緒、結束);
2)每次運行處理機調度程序前,為每個進程確定它的"優先數"和"要求運行時間";
3)把給定的進程按優先數的大小連成隊列,用一單元指出隊首進程;
4)每模擬執行一次進程,優先數減一,要求運行時間減一;
5)如果要求運行的時間>=0,再將它加入隊列(按優先數的大小插入,重置隊首標志);如果要求運行的時間=0,那么把它的狀態修改為結束,且推出隊列;
6)若就緒隊列不為空,重復上述,直到所有的進程都結束;
7)程序有顯示和打印語句,每次運行后顯示變化。
2、按時間片輪轉法實現處理機調度:
設計思路:
1)每個進程用一個進程控制塊PCB來代表,進程控制塊包括進程名(進程的標識)、指針(把進程連成循環隊列,用指針指出下一個進程的進程控制塊首地址,最后一個進程中的指針指出第一個進程的進程控制塊首地址)、已運行時間、狀態(就緒、結束);
2)每次運行處理機調度程序前,為每個進程確定它的"要求運行時間";
3)用指針把給定的進程按順序排成循環隊列,用另一標志單元記錄輪到的進程;
4)每模擬運行一次進程,已運行時間加一;
5)進程運行一次后,把該進程控制塊的指針值送到標志單元,以指示下一個輪到的進程。若該進程要求運行時間≠已運行時間,未執行結束,待到下一輪再執行;若要求運行時間=已運行時間,狀態改為結束,退出隊列;
6)若就緒隊列不為空,重復步驟四和五;
7)程序有顯示和打印語句,每次運行后顯示變化。
三、程序設計:
1、優先數調度算法:
/*我的思路:先主函數輸入要進行調度的進程數,然后調用函數create(),把進程的信息輸入,