實驗二作業排程模擬程式實驗報告

2022-08-10 23:24:18 字數 3342 閱讀 4193

網路工程專業   姓名:蔡利聰  學號: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 4

#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 }

4.執行結果fcfs

結果符合預期

實驗總結

通過本次實驗,感覺自己對之前資料結構的演算法和語法掌握得不是很好,雖然會定義結構體比較熟練,但是對於在程式中呼叫結構體就不太理解,導致多次出錯,並通過查閱相關資料,然後不斷修改,由於之前的資料結構學得不紮實,所以寫**遇到很多困難,往後要多回顧舊知識,特別是語法結構和新接觸的幾種作業排程的演算法思想

實驗二 作業排程模擬程式

實驗二作業排程模擬程式 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 實驗要求 用高階語言編寫乙個或多個作業排程的模擬程式。單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必...