優先數排程演算法分為搶占式和非搶占式。
非搶占式:程序按優先數大小進行排列,優先數高的程式先執行。直到發生某種情況或執行完成才結束。
搶占式:程序按優先數大小進行排列,優先數高的程式先執行。每執行一次(優先數-1),即重新判斷程序序列的優先數大小。只要有優先數更大的,便進行新的最大的優先數的程序
#include #include #include #include using namespace std;
struct pcb//定義pcb結構體
; void time_random(int *t)//定義取時間隨機數 }
//初始化五個程序
void init_pcb(int number,pcb *p)
; int t[5]=;
time_random(t);
cout<<"開始初始化程序"<\n";
} cout<<"初始化完成!"p[0].next=&p[4];//5,3,1,2,4
p[4].next=&p[1];
p[1].next=&p[3];
p[3].next=&p[2];
p[2].next=null;
break;
case 1:
q->next=&p[4];
p[4].next=&p[3];//3,1,2,4,5
p[3].next=&p[0];
p[0].next=&p[2];
p[2].next=&p[1];
p[1].next=null;
break;
case 2:
q->next=&p[3];
p[3].next=&p[2];//1,2,4,5,3
p[2].next=&p[4];
p[4].next=&p[1];
p[1].next=&p[0];
p[0].next=null;
break;
case 3:
q->next=&p[2];
p[2].next=&p[1];//2,4,5,3,1
p[1].next=&p[3];
p[3].next=&p[0];
p[0].next=&p[4];
p[4].next=null;
break;
case 4:
q->next=&p[1];
p[1].next=&p[0];//4,5,3,1,2
p[0].next=&p[2];
p[2].next=&p[4];
p[4].next=&p[3];
p[3].next=null;
break; }}
void run(pcb *q)
}void print_end(pcb *p)
}int main()
//開始執行
run(c);
return 0;
}
模擬非搶占式優先權排程演算法(C )
非搶占式優先權演算法 在這種方式下,系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成 或因發生某事件使該程序放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的程序。這種排程演算法主要用於批處理系統中 也可用於某些對實時性要求不嚴的實時系統中。include ...
非搶占式優先演算法例題 非搶占式高優先順序排程演算法
v1.0 可編輯可修改 非搶占式高優先順序排程演算法 優先數越大級別越高 演算法思想 在按程序達到時間由小到大的順序輸入程序資訊後,先對其優先數進行排列,將最先到達的程序的到達時間設為開始時間,計算結束時間,然後對後面到達的時間與該程序的結束時間進行比較,如若小於該程序的結束時 間,記錄程序的個數,...
非搶占式優先演算法例題 非搶占式優先順序
非搶占式優先順序 include define max 10 struct process char name 10 float at float st float rt float ft int priority 優先數int order 程序執行次序 int flag 標記程序狀態 p max ...