課設 模擬優先數排程演算法 非搶占式

2021-07-12 07:20:26 字數 1529 閱讀 2216

優先數排程演算法分為搶占式和非搶占式。

非搶占式:程序按優先數大小進行排列,優先數高的程式先執行。直到發生某種情況或執行完成才結束。

搶占式:程序按優先數大小進行排列,優先數高的程式先執行。每執行一次(優先數-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 ...