網路工程專業 姓名:蔡利聰 學號:201306114117
1.實驗目的
(1)加深對作業排程演算法的理解;
(2)進行程式設計的訓練。
2.實驗要求
用高階語言編寫乙個或多個作業排程的模擬程式。
單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必考慮它所需要的資源是否得到滿足,它所執行的時間等因素。
作業排程演算法:
1) 採用先來先服務(fcfs)排程演算法,即按作業到達的先後次序進行排程。總是首先排程在系統中等待時間最長的作業。
2) 短作業優先 (sjf) 排程演算法,優先排程要求執行時間最短的作業。
根據教師指定的實驗課題,完成設計、編碼、測試工作。
三、實驗方法、步驟及結果測試
1. 源程式名:作業排程 - 2簡化.cpp 可執行程式名:作業排程 - 2簡化.exe
2. 原理分析
(1)定義程式控制塊的結構體和程式工作時間的結構體,jcb可以包含以下資訊:作業名、提交(到達)時間、所需的執行時間、所需的資源、作業狀態、鏈指標等等。程式工作時間包括作業執行時刻,作業完成時刻,周轉時間,帶權周轉時間。
(2)主程式預設採用的演算法是先來先服務,當選擇另外兩種演算法時通過主程式去呼叫這種作業排程演算法,分別是sjf,hrn。
(3)通過構造程序輸入input(),程序執行結果輸出output(),disp(),以及使整個程式正常執行的函式塊等,通過主函式呼叫方法函式的想法來實現作業排程。
(4)在對程式控制塊的訪問和呼叫通過鍊錶指標的形式,進行呼叫各種作業排程演算法。在作業輸入後,會顯示輸入的內容,並把每乙個作業執行的狀態都能在程式中體現出來。
3. 主要程式段及其解釋
1 #include2 #include 3 #include 44.執行結果fcfs#define getpch(type) (type*)malloc(sizeof(type)) //
為程序建立乙個空間56
struct
worktime;
1213
struct
jcb *ready=null,*p;
2627 typedef struct jcb jcb;//
重新命名結構體
28float t=0;29
intn;
30 jcb *front,*rear;
3132
void
sort()
3343
else
4456
else
5761}62
if (insert==0) first->link=p;63}
64}6566
void
sjfget()
6781
else
82 rear=rear->link;83}
84if (ipmove==1)85
89 ready=mintime;90}
9192
void
hrnget()
93106
else
107 rear=rear->link;
108if (ipmove==1
)112 ready=mintime;
113}
114115
void creatjcb() //
為每個作業建立乙個jcb並初始化形成乙個迴圈鏈佇列
116146 rear=l;rear->link=front;
147}
148149
void output()//
程序輸出函式
150157 printf("\n"
);158
}159
160int judge(jcb *p) //
判斷所有程序執行結束
161169 p=p->link;
170}
171return
flag;
172}
173174
//作業輸入
175void
input()
176195
}196
197int
space()
198205
return
(l);
206}
207208
void disp(jcb* jr,int
select
)209
222//
printf("\n");
223}
224225
intdestroy()
226230
231void check(int
select
)232
239240
void running(jcb*jr)
241249
250int
main()
251280 printf("
作業已經完成.\n");
281 printf("
",sumti/h);
282 printf("
",sumwi/h);
283getchar();
284 }
結果符合預期
四、實驗總結
通過本次實驗,感覺自己對之前資料結構的演算法和語法掌握得不是很好,雖然會定義結構體比較熟練,但是對於在程式中呼叫結構體就不太理解,導致多次出錯,並通過查閱相關資料,然後不斷修改,由於之前的資料結構學得不紮實,所以寫**遇到很多困難,往後要多回顧舊知識,特別是語法結構和新接觸的幾種作業排程的演算法思想。
實驗二 作業排程模擬程式
實驗二作業排程模擬程式 1.實驗目的 1 加深對作業排程演算法的理解 2 進行程式設計的訓練。2 實驗要求 用高階語言編寫乙個或多個作業排程的模擬程式。單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必考慮它所需要的資源是否得到滿足,它所執行的...
實驗二 作業排程模擬程式
include includetypedef struct process fcfsfcfs fcfs p,q,head null struct process fcfs a 100 fcfs inital struct process fcfs a,int n void print struct ...
實驗二 作業排程模擬程式
專業 網路工程一班 姓名 顏超武 學號 201406114310 1.實驗目的 1 加深對作業排程演算法的理解 2 進行程式設計的訓練。2 實驗要求 用高階語言編寫乙個或多個作業排程的模擬程式。單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必...