資源簡介
1.進程調度算法:采用最高優先數優先的調度算法(即把處理機分配給優先數最高的進程)。
2.每個進程有一個進程控制塊( PCB)表示。進程控制塊可以包含如下信息:進程名、優先數、到達時間、需要運行時間、已用CPU時間、進程狀態等等。
3.進程的優先數及需要的運行時間可以事先人為地指定(也可以由隨機數產生)。進程的到達時間為進程輸入的時間。
4.進程的運行時間以時間片為單位進行計算。
5.每個進程的狀態可以是就緒 W(Wait)、運行R(Run)、或完成F(Finish)三種狀態之一。
6.就緒進程獲得 CPU后都只能運行一個時間片。用已占用CPU時間加1來表示。如果運行一個
代碼片段和文件信息
#include?“stdio.h“?
#include??
#include??
#define?getpch(type)?(type*)malloc(sizeof(type))?
#define?NULL?0?
struct?pcb?{?/*?定義進程控制塊PCB?*/?
char?name[10];?
char?state;?
int?super;?
int?ntime;?
int?rtime;?
struct?pcb*?link;?
}*ready=NULL*p;?
typedef?struct?pcb?PCB;?
??
??
void?sort()?/*?建立對進程進行優先級排列函數*/?
{?
PCB?*first?*second;?
int?insert=0;?
if((ready==NULL)||((p->super)>(ready->super)))?/*優先級最大者插入隊首*/?
{?
p->link=ready;?
ready=p;?
}?
else?/*?進程比較優先級插入適當的位置中*/?
{?
first=ready;?
second=first->link;?
while(second!=NULL)?
{?
if((p->super)>(second->super))?/*若插入進程比當前進程優先數大*/?
{?/*插入到當前進程前面*/?
p->link=second;?
first->link=p;?
second=NULL;?
insert=1;?
}?
else?/
評論
共有 條評論