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個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若...