實驗三 程序排程模擬實驗
物聯網工程 張學玲 201306104140
一、實驗目的
用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。
二、實驗內容和要求
實驗內容
完成兩個演算法(簡單時間片輪轉法、多級反饋佇列排程演算法)的設計、編碼和除錯工作,完成實驗報告。
1) 每個程序有乙個程序控制塊(pcb)表示。程序控制塊包含如下資訊:程序名、優先順序、到達時間、需要執行時間、已用cpu時間、程序狀態等等。
2) 每個程序的狀態可以是就緒 r(ready)、執行r(running)、或完成f(finished)三種狀態之一。
3) 就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。
4) 如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,應把它插入就緒佇列等待下一次排程。
5) 每進行一次排程,程式都列印一次執行程序、就緒佇列中各個程序的 pcb,以便進行檢查。
6) 重複以上過程,直到所要程序都完成為止。
實驗要求
設計乙個有 n(n不小於5)個程序併發執行的程序排程模擬程式。
程序排程演算法:「時間片輪轉法」排程演算法對n個程序進行排程。
三、實驗方法、步驟及結果測試
1.源程式名:壓縮包檔案(rar或zip)中源程式名:zxl3.c
可執行程式名:zxl3.exe
2.原理分析及流程圖
主要總體設計問題(包括儲存結構,主要演算法,關鍵函式的實現等)
1.設定乙個程序控制塊(pcb)以儲存程序的資訊,包括程序名、優先順序、到達時間、需要執行時間、已用時間以及程序狀態;
2.用於輸入程序的函式input(),當輸入程序不足5個時會要求繼續輸入;
3.用於對輸入完成的程序排序的函式sort(),先按照程序的優先順序進行排序;
4.用於列印程序的函式print(),將已經排序完的程序列印出來;
5.用於處理程序的函式attemper(),將優先順序較高的程序先處理乙個時間片,然後按照順序繼續執行;
6.用於選擇功能的函式select();
7.main()函式。
3.主要程式段及其解釋:
實現主要功能的程式段,重要的是程式的注釋解釋。
#include
#define max 50
typedef struct job
pcb;
int n=0;
pcb pcb[max];
int ptime; //時間片
void input()
while(ch!='y'&&ch!='n'&&ch!='y'&&ch!='n');
}while(ch=='y'||ch=='y');
}while(n<5);
}void sort()}}
if(pcb[0].state!='f')
}void print()
else //已完成的程序
print();
}while(pcb[0].state!='f');
}char select()
while(select!='0'&&select!='1'&&select!='2');
return select;
}void main()
if(choose=='1')
if(choose=='2')
choose=select();
}while(1);
}4.執行結果及分析
一般必須配執行結果截圖,結果是否符合預期及其分析。
當程序不足5個時自動繼續要求輸入:
當程序滿5個後,可以退出也可以繼續輸入:
排序:
程序處理:
四、實驗總結
在實驗過程中,我想用乙個確定的值來迴圈輸入程序的有關資料,但是這樣顯示不出程序名和狀態,而且程序的顯示也會出錯,所以用do-while來邊輸入邊確定值。這個程式是借鑑其他的程式來完成的,最重要的是要理解簡單時間片輪轉法、多級反饋佇列排程演算法的思想。
實驗三 程序模擬排程
實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。實驗要求 設計乙個有 n n不小於5 個程序併發執行的程序排程模擬程式。程序排程演算法 時間片輪轉法 排程演算法對n個程序進行排程。完成兩個演算法 簡單時間片輪轉法 多級反饋佇列排程演算法 的設計 編碼和除錯工作,完...
實驗三 程序排程模擬程式實驗
1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序相同 演算法。1...
1203《作業系統教程》實驗三 程序排程模擬程式
實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。實驗要求 設計乙個有 n n不小於5 個程序併發執行的程序排程模擬程式。程序排程演算法 時間片輪轉法 排程演算法對n個程序進行排程。完成兩個演算法 簡單時間片輪轉法 多級反饋佇列排程演算法 的設計 編碼和除錯工作,完...