程序排程演算法模擬與實現

2021-09-23 08:11:07 字數 1716 閱讀 3602

程序管理是作業系統中的重要功能,用來建立程序、撤消程序、實現程序狀態轉換,它提供了在可執行的程序之間復用cpu的方法。在程序管理中,程序排程是核心,因為在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態,當就緒程序個數大於處理器數目時,就必須依照某種策略決定哪些程序優先占用處理器。

編寫允許程序並行執行的程序排程程式,在常用的程序(作業)排程演算法:先來先服務演算法、時間片輪轉法、最高響應比優先演算法、高優先權優先演算法等排程演算法中至少選擇2種排程演算法進行模擬,並輸出平均周轉時間和平均帶權周轉時間。

本次模擬的演算法為:先來先服務、非搶占式靜態優先順序演算法

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 100

using namespace std;

typedef struct nodepcb;

pcb pcb[maxn];

bool cmp(node a,node b)

//平均

double t;

double s;

int n;//程序數量

void first()

cout<<"顯示各個程序的引數:"<#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 100

using namespace std;

typedef struct nodepcb;

pcb pcb[maxn];

//平均

double t;

double s;

int n;//程序數量

//根據到達的時間先進行排序一次

bool cmp1(node a,node b)

//根據優先順序進行排序

bool cmp2(node a,node b)

//非搶占 靜態優先順序

void jingtaiyouxianji()

//根據程序的優先順序進行排序

sort(pcb+i,pcb+cnt+i,cmp2);

pcb[i].start = time;

pcb[i].end = time + pcb[i].yunxing;

pcb[i].zhouzhuan = pcb[i].end - pcb[i].daoda;

pcb[i].daiquan = pcb[i].zhouzhuan / pcb[i].yunxing;

//更新一下當前總時間

time += pcb[i].yunxing;

//求兩個和

t += pcb[i].zhouzhuan;

s += pcb[i].daiquan;

}t = t / n;

s = s / n; }

int main()

cout<<"顯示各個程序的引數:"

return 0;

}

程序排程模擬演算法

1.先進先出排程。程序按申請進入記憶體的時間執行。2.優先順序排程。程序按作業系統分配的優先順序,執行。3.時間輪轉排程。程序按申請進入記憶體的時間依次執行乙個時間片。4.分級排程。時間輪轉排程 優先順序排程。先執行優先順序較高的按時間輪轉排程的方法執行,在執行優先順序較低的。a.設計程序控制塊pc...

模擬程序排程演算法

模擬短作業優先演算法 時間片輪轉法和優先數演算法的執 況,並動態畫出其程序執行的gantt圖,計算以上演算法的每個程序的響應時間和周轉時間。name geting time 2014 12 10 includeusing namespace std const int max 100 定義程序結構體...

程序排程演算法模擬

最近學了作業系統的程序排程的各種演算法,手癢實現了一下,僅供參考,若有bug,請指出.v 先到先服務 fcfs 1 先來先服務排程演算法 2 include 3 define time 500 限制最長程序執行時間 4 define n 100 5 define state int 6using n...