程序排程演算法

2022-08-21 15:57:14 字數 2375 閱讀 3374

一、實驗目的

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

二、實驗要求

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

1.模擬程序資料的生成

允許使用者指定作業的個數(2-24),預設值為5。

允許使用者選擇輸入每個程序的到達時間,所需執行時間,程序的執行時間以時間片為單位。

2. 模擬排程程式的功能

2.1 按照模擬資料的到達時間和所需執行時間,能分別執行以下排程演算法。

fcfs

sjhrrn

rr2.2 顯示每種演算法下各程序的排程執行順序。

2.3計算各程序的開始執行時間,各作業的完成時間,周轉時間和帶權周轉時間(周轉係數)。

2.4模擬資料結果分析:對同一組模擬資料,比較各演算法的平均周轉時間,周轉係數。

三、實驗說明

1)  先來先服務(fcfs)排程演算法,即按作業到達的先後次序進行排程。總是首先排程在系統中等待時間最長的作業。

2)  短作業優先 (sjf) 排程演算法,優先排程要求執行時間最短的作業。

4)  時間片輪轉(rr)排程演算法:排程程式每次把cpu分配給就緒佇列首程序使用乙個時間片,就緒佇列中的每個程序輪流地執行乙個時間片。當這個時間片結束時,強迫乙個程序讓出處理器,讓它排列到就緒佇列的尾部,等候下一輪排程。

四、實驗環境

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

五.實驗內容

#include

#define time int

#define max 100

typedef struct process  pcb;                            //程序控制塊  

int n;                               //標示程序的總數

pcb pcb[max]; 

int ptime;

//時間片大小

void addprocess() while(ch!='y'&&ch!='n'&&ch!='y'&&ch!='n');        

}while (ch=='y'||ch=='y'); 

void addprocess4() while(ch!='y'&&ch!='n'&&ch!='y'&&ch!='n');        

}while (ch=='y'||ch=='y'); 

// 排序函式,將最先執行的程序放在最先即pcb[0]

void sort() 

while(pcb[0].state!='f');

void attemper1()                           //排程 

dowhile(pcb[0].state!='f');

void attemper4()                           //排程 

dowhile(pcb[0].state!='f');

char face()

char choose;     

printf("\n增加程序並排程程序,請按1");    

printf("\n列印程序,請按2");    

printf("\n任務結束, 請按0");    

printf("\n請選擇:");    

do while(choose!='1'&&choose!='2'&&choose!='0');       

return choose; 

void main()

char choose;     

n=0;                                 //初始化程序數為0    

printf("設定時間片的大小:");    

scanf("%d",&ptime);    

choose=face();    

do     

if (choose=='1')    

addprocess4();

//sort2();

sort4();

print4();

sort5();

print4();

sort6();

print5();

sort7();

print5();

//attemper1();    

if (choose=='2')    

print1();    

if (choose=='0')    

return;    

choose=face();    

} while(1);

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...

程序排程演算法

先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...