程序管理是作業系統中的重要功能,用來建立程序、撤消程序、實現程序狀態轉換,它提供了在可執行的程序之間復用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...