亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 23.c

?? 進程調度算法!
?? C
字號:
#define NULL 0
#include 
#include 
#include 
#include 
//定義一個pcb的結構體

FILE *GroupFile[10];

typedef struct index{ 
char name; //指令
int time; //指令執行時間
}index;

struct pcb {
char filename[10]; //進程名
int id; //作業編號
int exetoIndex; //當前正在執行指令
char status; //當前狀態
int wtime; //等待時間
};

struct pcb jobpcb[100]; //pcb表


typedef struct job{
index idx[100]; //指令集
int pcbnum; //pcb編號 對應
}job;

job jobtab[100]; //作業表

char jobp[3][50]; //作業
//隊列
struct Qnode
{
int pcbnum[100]; //pcb編號 
int head,tail; 
};

struct Qnode Queue[5]; //5個隊列 0E 1R 2I 3O 4W 

void initqueue(struct Qnode *l);

//延遲
void delay( ){

long begin,end;
time(&begin);
do {
time(&end);
} while((end-begin)<=1);
}

//字符轉化為數值
int change(char *m){ 
int i,j=0;
int len=strlen(m);
for(i=0;i j=j*10+m[i]-'0';
return j;
}

//申請 pcb

int AllocPCB(){
int i;
for(i=0;i<3;i++)
if(jobpcb[i].id ==-1) break;
if(i<3)
return i;
return -1;
}
//申請job
int AllocJob(){

int i;

for(i=0;i<3;i++)
if(jobtab[i].pcbnum == -1) break;
if(i<3)
return i;
return -1;

}
//顯示指令
void displayIndex(){
int i,j;

for(i=0;i<3;i++){
printf(" Job % d \n",i+1);
for(j=0;j<10;j++)
printf(" %d %c % d \n",j+1, jobtab[i].idx[j].name,jobtab[i].idx[j].time);
}

}

//創建進程程序
int creatpcbline(){
char line[10];
inti,ll,jnum, pnum, ln=0, bpos, pos=0;
char buff[50];
char name [20];
char ch;

for(i=0;i<3;i++){
ln=0;
jnum=AllocJob();
if(jnum == -1) return 0;
pnum=AllocPCB();
if(pnum == -1) return 0;
jobtab[jnum].pcbnum=pnum;
strcpy(jobpcb[pnum].filename," "); 
jobpcb[pnum].status='r';
jobpcb[pnum].exetoIndex=0;
jobpcb[pnum].id=jnum;
jobpcb[pnum].wtime=0;
int ln=strlen(jobp[i]);
pos=0;
while(pos while(jobp[i][pos]==' ') pos++;

jobtab[jnum].idx[ln].name=jobp[i][pos++];///

while(jobp[i][pos]==' ') pos++;

bpos=0;

while(jobp[i][pos]!=' ')

buff[bpos++]=jobp[i][pos++];

buff[bpos]='\0';

jobtab[jnum].idx[ln].time=change(buff);/////

if(pos}
}
}
displayIndex();
}
/*初始化隊列
void initqueue(struct Qnode *l){ 
l->head=0;
l->tail=0;
}


//插進入隊列/
void insertqueue(struct Qnode *l,int pcbnum){
l->pcbnum[l->tail++]=pcbnum;

}

//隊列是否為空


int EmptyQueue( struct Qnode l){
if(l.head==l.tail) return 1;
return 0;
}

//刪除隊列
void outqueue(struct Qnode *l,int *pcbnum)
{
if (l->head>=l->tail ) *pcbnum=-1;
else
*pcbnum=l->pcbnum[l->head++];



}
//顯示作業
void display(){
int i,j;

for(i=0;i<5;i++){

printf(" 隊列 %d ",i); 
for(j=Queue[i].head;j 

printf("pcb 編號 %d \n\n ",Queue[i].pcbnum[j]); 




}

}






//作業入隊列
void JobEnQueueInit( int * total){

int i,num ,Index=0;

char cmd;

for( i=0;i<3;i++){

if(jobpcb[i].id>=0){
cmd=jobtab[ jobpcb[i].id ].idx[ Index ].name;

switch(cmd){
case 'c': insertqueue(&Queue[1],i); jobpcb[i].status='r'; break;
case 'i': insertqueue(& Queue[2],i);jobpcb[i].status='i'; break;

case 'o': insertqueue(& Queue[3],i);jobpcb[i].status='o'; break;
case 'w': insertqueue(& Queue[4],i);jobpcb[i].status='w'; break;
case 'h': jobpcb[i].status='h'; num=jobpcb[i].id;jobtab[num].pcbnum=-1;jobpcb[i].id=-1;
}
if(cmd== 'h') {jobpcb[i].wtime=0; total--;}
jobpcb[i].wtime=jobtab [ jobpcb[i].id ].idx[Index].time;

(*total)++;




}
}


}



void save (){


FILE *fp;

int i;
fp=fopen("pcbtable.txt","a");


fprintf(fp," 文件名 作業編號 執行到指令數 所處狀態 等待時間 \n" );

for(i=0;i<3;i++)

fprintf(fp," \t %s \t %d \t %d \t %c \t %d \n" ,
jobpcb[i].filename,jobpcb[i].id,jobpcb[i].exetoIndex,
jobpcb[i].status,jobpcb[i].wtime );

fclose(fp);



}






//作業入隊列
void JobEnQueue( int pcbnum,int Index ,int *total){

int num;
char cmd;


if(jobpcb[pcbnum].id>=0){
cmd=jobtab[ jobpcb[pcbnum].id ].idx[ Index ].name;

switch(cmd){
case 'c': insertqueue(&Queue[1],pcbnum); jobpcb[pcbnum].status='r'; break;
case 'i': insertqueue(& Queue[2],pcbnum);jobpcb[pcbnum].status='i'; break;

case 'o': insertqueue(& Queue[3],pcbnum);jobpcb[pcbnum].status='o'; break;
case 'w': insertqueue(& Queue[4],pcbnum);jobpcb[pcbnum].status='w'; break;
case 'h': jobpcb[pcbnum].status='h'; num=jobpcb[pcbnum].id;jobtab[num].pcbnum=-1;jobpcb[pcbnum].id=-1;
}
if(cmd== 'h') {
jobpcb[pcbnum].wtime=0; 
printf(" \n\t\t作業 %d 完成\n", pcbnum+1, jobpcb[ pcbnum].status);
(*total)--;
}
else jobpcb[pcbnum].wtime=jobtab [ jobpcb[pcbnum].id ].idx[Index].time;

printf(" \n\t\t作業 %d \n ", pcbnum+1);
printf("\t\t\t\t所處狀態 : %c \n",jobpcb[ pcbnum].status);
printf("\t\t還需要時間 %d 秒\n",jobpcb[ pcbnum].wtime);



}



}

//得到隊列的首元素

int GetHead(struct Qnode l){
return l.pcbnum[l.head];
}
//執行
void run (){

int i, flag=0, time=10, pcbnum, Index=0, exenum, num, quenum;
char cmd;
int j,m,n;
int total=0;


JobEnQueueInit( &total );


save();
while( total!=0 ){ 
if(!EmptyQueue( Queue[1]) ){


outqueue(&Queue[1],&pcbnum);
insertqueue(&Queue[0], pcbnum); 



}
else pcbnum=GetHead(Queue[0]);

delay();
jobpcb[ pcbnum].status='e'; 
printf(" \n\t\t作業 %d \n",pcbnum+1);

printf(" \t\t\t所處狀態: %c \t執行了 %d 秒\n", jobpcb[ pcbnum].status, time);


for(i=0;i<3;i++){ 

if(jobpcb[i].id>=0){



//所有的作業除在就緒隊列獲執行結束的外等待時間 都間時間片 
if( jobpcb[i].status!='r'&&jobpcb[i].status!='h') jobpcb[i].wtime=jobpcb[i].wtime-time;


if(jobpcb[i].wtime<=0){ //查找所有的隊列 所在位置
for(j=0;j<5;j++){ 
for(m=Queue[j].head;m 

if(Queue[j].pcbnum[m]==i) {flag=1;break;}
}
if(flag==1) break;
}

if(flag==1){//刪除該指令

for(n=m;n Queue[j].tail--; 
jobpcb[i].exetoIndex++;
Index=jobpcb[i].exetoIndex;
JobEnQueue( i,Index,&total );

} 



}


}
}


if(!EmptyQueue( Queue[1]) ){


outqueue(&Queue[0],&pcbnum);
if(jobpcb[pcbnum].wtime>0){
insertqueue(&Queue[1], pcbnum); 
jobpcb[pcbnum].status='r';
}

}






printf(" \n\n\t\t 還有\t %d 個作業沒有完成 \n",total ); 
save();
} 


}



//初始化
void InitFile(){

int i;


strcpy (jobp[0]," c 20 i 20 o 15 h 0 ");////////////////////////改
strcpy (jobp[1]," i 10 c 20 c 10 h 0 ");
strcpy (jobp[2]," c 30 i 20 c 5 h 0 ");
for(i=0;i<100;i++){
jobpcb[i].exetoIndex=0;
strcpy(jobpcb[i].filename," ");
jobpcb[i].id=-1;
jobpcb[i].status='r';
jobpcb[i].wtime=0;
}

for(i=0;i<100;i++)
jobtab[i].pcbnum=-1;


for(i=0;i<5;i++)

initqueue(&Queue[i]);


//GroupFile[0]=fopen("1.txt","r");


//GroupFile[1]=fopen("2.txt","r");

//GroupFile[2]=fopen("3.txt","r");

}


void main(){

InitFile();
creatpcbline();
run ();

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲性图库| 久久嫩草精品久久久精品一| 国产日本亚洲高清| 婷婷久久综合九色综合伊人色| 国产1区2区3区精品美女| 欧美高清视频在线高清观看mv色露露十八 | 激情另类小说区图片区视频区| 色综合久久66| 国产精品无遮挡| 国产一区二区精品久久91| 91精品国产综合久久久久| 亚洲美女免费在线| 成人夜色视频网站在线观看| 日韩一级二级三级精品视频| 亚洲va国产天堂va久久en| 91蝌蚪porny| 中文字幕一区二区三区在线播放| 国产精品一二一区| 欧美精品一区二| 久久精品国产第一区二区三区| 欧美日韩免费在线视频| 一级精品视频在线观看宜春院 | 精品一区二区三区影院在线午夜| 欧美亚洲国产一卡| 亚洲精品美腿丝袜| 91美女片黄在线| 中文字幕欧美一| 高清av一区二区| 欧美高清在线精品一区| 国产91清纯白嫩初高中在线观看| 久久久五月婷婷| 国产精选一区二区三区| 久久婷婷成人综合色| 黄色资源网久久资源365| 欧美一区二区久久| 日本aⅴ亚洲精品中文乱码| 欧美日韩激情一区二区| 亚洲高清免费在线| 欧美美女喷水视频| 日韩精品一二区| 日韩一区二区视频在线观看| 日韩制服丝袜av| 日韩一区二区视频在线观看| 美国一区二区三区在线播放| 欧美成人综合网站| 国内精品免费在线观看| 国产三级精品三级在线专区| 国产成人综合视频| 国产精品视频yy9299一区| 成人白浆超碰人人人人| 亚洲免费观看高清完整版在线观看| 97aⅴ精品视频一二三区| 亚洲理论在线观看| 欧美婷婷六月丁香综合色| 亚洲va欧美va人人爽| 欧美一区二区三区四区高清| 理论电影国产精品| 久久久www成人免费无遮挡大片 | 五月激情丁香一区二区三区| 欧美一卡二卡三卡四卡| 久久99国产精品成人| 国产日韩欧美不卡在线| 99久久精品国产一区二区三区 | 久久综合九色综合97婷婷女人| 国产一区二区成人久久免费影院| 国产欧美一区二区精品忘忧草| 成人18精品视频| 一区二区三区四区在线免费观看| 在线91免费看| 国产91综合一区在线观看| 亚洲日本乱码在线观看| 欧美美女一区二区| 国产精品一区二区三区四区| 亚洲人123区| 欧美一级一级性生活免费录像| 国产麻豆精品95视频| 国产精品久久久久久福利一牛影视| 欧美最新大片在线看| 免费xxxx性欧美18vr| 国产精品三级av| 欧美日韩精品一区二区三区四区 | 午夜视频在线观看一区| 精品国产成人在线影院| 99久久国产综合精品女不卡| 日韩精品久久理论片| 国产日韩三级在线| 欧美日韩精品专区| 国产乱国产乱300精品| 亚洲欧美激情一区二区| 日韩欧美一级精品久久| 91美女在线视频| 伦理电影国产精品| 亚洲精品乱码久久久久久日本蜜臀| 日韩欧美一二区| 一本一道久久a久久精品综合蜜臀| 免费观看在线综合| 亚洲男女一区二区三区| 欧美精品一区二区三区四区 | 91小视频免费看| 免费av成人在线| 亚洲视频中文字幕| 精品成a人在线观看| 欧美亚洲高清一区| 风间由美性色一区二区三区| 日韩激情在线观看| 成人免费小视频| 欧美成人精品高清在线播放| 色婷婷激情综合| 国产成人av网站| 日本亚洲三级在线| 一区二区三区欧美久久| 国产三级欧美三级日产三级99| 欧美日韩国产综合一区二区三区| 国产成人免费在线观看不卡| 婷婷综合五月天| 自拍偷拍国产精品| 久久麻豆一区二区| 日韩三级av在线播放| 在线亚洲+欧美+日本专区| 成人听书哪个软件好| 美国毛片一区二区| 亚洲韩国一区二区三区| 欧美极品美女视频| 欧美videos大乳护士334| 欧美日精品一区视频| 色综合天天综合狠狠| 国产91露脸合集magnet| 玖玖九九国产精品| 日韩精品91亚洲二区在线观看 | 久久毛片高清国产| 日韩三级在线免费观看| 欧美久久久久免费| 欧美亚一区二区| 97se亚洲国产综合在线| a在线播放不卡| 国产成人精品免费网站| 国产一区二区三区在线观看精品 | 久久国产欧美日韩精品| 成人激情校园春色| 毛片av中文字幕一区二区| 亚洲成av人片在线观看无码| 一区二区在线观看视频| 亚洲蜜臀av乱码久久精品蜜桃| 一区在线中文字幕| 欧美激情一区二区三区全黄| 国产午夜精品一区二区三区四区| 26uuu色噜噜精品一区| 精品福利一二区| 精品88久久久久88久久久| 欧美精品一区二区三| 精品播放一区二区| 久久久久久99精品| 国产三级久久久| 国产精品视频线看| **欧美大码日韩| 亚洲免费在线视频一区 二区| 亚洲男人的天堂在线观看| 亚洲精品免费在线播放| 亚洲午夜久久久久久久久电影院| 亚洲国产精品自拍| 午夜私人影院久久久久| 日本视频在线一区| 国内外精品视频| 国产成人夜色高潮福利影视| 国产不卡在线一区| 97超碰欧美中文字幕| 91成人在线精品| 欧美日韩国产欧美日美国产精品| 欧美日韩国产美女| 欧美一区二区久久久| 久久色视频免费观看| 国产精品天美传媒| 亚洲欧美日韩国产成人精品影院| 亚洲一区在线电影| 日韩av二区在线播放| 国内偷窥港台综合视频在线播放| 国产精品中文有码| av电影天堂一区二区在线| 色婷婷综合久久久中文一区二区| 欧美日韩视频在线观看一区二区三区 | 91在线视频官网| 欧洲一区二区三区在线| 在线播放91灌醉迷j高跟美女 | 欧美性大战久久久久久久蜜臀| 777a∨成人精品桃花网| 久久综合色鬼综合色| 国产精品福利一区二区三区| 一区二区欧美视频| 欧美aaa在线| 成人性生交大片免费看视频在线| 一本久久a久久免费精品不卡| 777午夜精品视频在线播放| 久久综合久久久久88| 自拍偷在线精品自拍偷无码专区| 亚洲第一福利视频在线| 国产乱国产乱300精品| 91国产免费看| 欧美刺激脚交jootjob| 国产精品第四页| 日本成人在线电影网|