實驗三程序排程模擬程式

2022-09-03 20:30:10 字數 2570 閱讀 3670

1.1.實驗目的

用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。

1.2.實驗要求

1.2.1例題:設計乙個有 n個程序併發執行的程序排程模擬程式。

程序排程演算法:採用最高優先順序優先的排程演算法(即把處理機分配給優先順序最高的程序)和先來先服務(若優先順序相同)演算法。

(1).  每個程序有乙個程序控制塊(pcb)表示。程序控制塊包含如下資訊:程序名、優先順序、到達時間、需要執行時間、已用cpu時間、程序狀態等等。

(2).  程序的優先順序及需要的執行時間可以事先人為地指定,程序的執行時間以時間片為單位進行計算。

(3).  每個程序的狀態可以是就緒 r(ready)、執行r(running)、或完成f(finished)三種狀態之一。

(4).  就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。

(5).  如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,此時應將程序的優先數減1(即降低一級),然後把它插入就緒佇列等待排程。

(6).  每進行一次排程程式都列印一次執行程序、就緒佇列中各個程序的 pcb,以便進行檢查。   

(7).  重複以上過程,直到所要程序都完成為止。

1.2.2實驗題a:編寫並除錯乙個模擬的程序排程程式,採用「最高優先數優先」排程演算法對n(n不小於5)個程序進行排程。

「最高優先順序優先」排程演算法的基本思想是把cpu分配給就緒佇列中優先數最高的程序。

(2). 動態優先數是指程序的優先數在建立程序時可以給定乙個初始值,並且可以按一定規則修改優先數。例如:在程序獲得一次cpu後就將其優先數減少1,並且程序等待的時間超過某一時限(2個時間片時間)時增加其優先數等。

根據指定的實驗課題:a(1),a(2),b(1)和b(2)

完成設計、編碼和除錯工作,完成實驗報告。

注:帶**號的條目表示選做內容。

可以選用turbo c作為開發環境。也可以選用windows下的vb,cb等視覺化環境,利用各種控制項較為方便。自主選擇實驗環境。

#include#include

#include

#include

//定義作業控制塊pcb

struct

process ;

struct process pcb[24]=;

int intput(process *pcb,int n);//

初始化void output(process *pcb,int

n);void algorithm(process *pcb,int n,int onetime);//

演算法int isfinshed(process *pcb,int n);//

判斷是否全部作業都排程完成

int find(process *pcb,int n,int runtime);//

找最高優先順序且沒執行完的程序

intmain()

void algorithm(process *pcb,int n,int

onetime)

if(pcb[k].usecputime*onetime>=pcb[k].runningtime)

for(i=0;i)

if(i!=k&&pcb[i].arrivetime<=runtime&&pcb[i].statu[0]!='f'

) }}

output(pcb, n);

runtime++;

}while(isfinshed(pcb, n)!=1

);

}int isfinshed(process *pcb,int n)//

判斷是否全部作業都排程完成

if(count==n)

return0;

}int find(process *pcb,int n,int runtime)//

找最高優先順序且沒執行完的程序

}return

k;

}int intput(process *pcb,int n)//

初始化

這個實驗和上一次的實驗有相似之處,不過我上一次的實驗演算法沒有用到資料結構,所以這次實驗要重新編寫演算法。一開始對資料結構不太熟悉,問了同學,參考了別人的**,終於寫出來了,非常高興。通過這次實驗,使我對資料結構更加的熟悉,對程序的執行過程也有了深刻的體會。

實驗三 程序排程模擬程式實驗

1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序相同 演算法。1...

實驗三 程序排程模擬程式

實驗三 程序排程模擬程式 專業 商軟2班 姓名 郭明茵 學號 201406114204 一 實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。二 實驗內容和要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排...

實驗三 程序排程模擬程式

實驗三程序排程模擬程式 1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若...