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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 2.txt

?? 一個(gè)簡單的,用鏈表結(jié)構(gòu)體形式來實(shí)現(xiàn)將進(jìn)程數(shù)據(jù)轉(zhuǎn)化.以便于對進(jìn)程的操作
?? TXT
字號:
#define    NULL 0

#include   <stdio.h>

#include   <string.h>

#include   <malloc.h>

#include   <time.h>

//定義一個(gè)pcb的結(jié)構(gòu)體

 

FILE *GroupFile[10];

 

typedef   struct index{ 

     char    name;   //指令

     int     time;  //指令執(zhí)行時(shí)間

         }index;

 

struct pcb {

    char filename[10];  //進(jìn)程名

       int id;             //作業(yè)編號

       int exetoIndex;     //當(dāng)前正在執(zhí)行指令

       char status;         //當(dāng)前狀態(tài)

       int wtime;           //等待時(shí)間

};

 

struct pcb jobpcb[100];    //pcb表

 

 

typedef  struct job{

     index idx[100];      //指令集

        int pcbnum;          //pcb編號  對應(yīng)

   }job;

 

job   jobtab[100];        //作業(yè)表

 

char jobp[3][50];          //作業(yè)

//隊(duì)列

struct Qnode

{

       int      pcbnum[100];     //pcb編號    

    int     head,tail; 

 };

 

struct  Qnode  Queue[5];    //5個(gè)隊(duì)列  0E 1R  2I 3O  4W 

 

void  initqueue(struct Qnode *l);

 

//延遲

void delay(  ){

     

         long begin,end;

      time(&begin);

       do {

                time(&end);

          } while((end-begin)<=1);

}

 

//字符轉(zhuǎn)化為數(shù)值

int  change(char *m){  

       int i,j=0;

    int len=strlen(m);

    for(i=0;i<len;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);

       }

 

}

 

//創(chuàng)建進(jìn)程程序

int  creatpcbline(){              

           char   line[10];

           int    i,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<len){

                                                  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<len) {pos++;ln++;

                                                 }

                            }

               }

              displayIndex();

}

/*初始化隊(duì)列

void  initqueue(struct Qnode *l){ 

       l->head=0;

          l->tail=0;

 }

 

 

 

//插進(jìn)入隊(duì)列/

void insertqueue(struct Qnode *l,int pcbnum){

      l->pcbnum[l->tail++]=pcbnum;

      

}

 

//隊(duì)列是否為空

 

 

int EmptyQueue( struct Qnode l){

      if(l.head==l.tail) return 1;

      return 0;

}

 

//刪除隊(duì)列

void outqueue(struct Qnode *l,int *pcbnum)

  {

    if (l->head>=l->tail ) *pcbnum=-1;

       else

           *pcbnum=l->pcbnum[l->head++];

       

       

 

}

//顯示作業(yè)

void  display(){

       int i,j;

   

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

 

                                printf(" 隊(duì)列       %d         ",i); 

                 for(j=Queue[i].head;j<Queue[i].tail;j++)

 

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

                

               

 

 

          }

 

}

//作業(yè)入隊(duì)列

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,"  文件名    作業(yè)編號     執(zhí)行到指令數(shù)      所處狀態(tài)       等待時(shí)間 \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);

}

 

//作業(yè)入隊(duì)列

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作業(yè)    %d      完成\n", pcbnum+1, jobpcb[ pcbnum].status);

                                                 (*total)--;

                             }

                             else jobpcb[pcbnum].wtime=jobtab [ jobpcb[pcbnum].id   ].idx[Index].time;

     

                             printf(" \n\t\t作業(yè)      %d  \n ", pcbnum+1);

                             printf("\t\t\t\t所處狀態(tài)  :    %c  \n",jobpcb[ pcbnum].status);

                       printf("\t\t還需要時(shí)間   %d  秒\n",jobpcb[ pcbnum].wtime);

 

          }

          

}

//得到隊(duì)列的首元素

 

int  GetHead(struct Qnode l){

       return l.pcbnum[l.head];

}

//執(zhí)行

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作業(yè)    %d    \n",pcbnum+1);

                            

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

           

              

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

 

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

                                //所有的作業(yè)除在就緒隊(duì)列獲執(zhí)行結(jié)束的外等待時(shí)間 都間時(shí)間片           

                                      if( jobpcb[i].status!='r'&&jobpcb[i].status!='h')   jobpcb[i].wtime=jobpcb[i].wtime-time;

                     if(jobpcb[i].wtime<=0){  //查找所有的隊(duì)列 所在位置

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

                                                                      for(m=Queue[j].head;m<Queue[j].tail;m++){

 

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

                                                                                                         }

                                                                   if(flag==1) break;

                                                        }

                                   

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

 

                                                                 for(n=m;n<Queue[j].tail;n++) Queue[j].pcbnum[n]=Queue[j].pcbnum[n+1];

                                                                 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 還有\(zhòng)t %d  個(gè)作業(yè)沒有完成  \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 ();

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美猛男超大videosgay| 欧美日韩国产大片| 狠狠久久亚洲欧美| 免费观看在线综合| 日韩有码一区二区三区| 亚洲二区在线视频| 天天综合网 天天综合色| 亚洲国产美女搞黄色| 亚洲曰韩产成在线| 亚洲不卡av一区二区三区| 亚洲成人精品一区二区| 日韩在线一区二区| 麻豆精品久久精品色综合| 久久成人免费网站| 丰满少妇在线播放bd日韩电影| 国产精品一二三四区| 欧美精品亚洲二区| 日韩一区二区三区在线视频| 欧美一区二区三区免费视频 | 欧美高清激情brazzers| 欧美一级淫片007| 欧美精品一区在线观看| 久久精品综合网| 亚洲人成伊人成综合网小说| 亚洲精品国产精品乱码不99| 天堂va蜜桃一区二区三区漫画版| 免费的成人av| 国产91精品一区二区麻豆网站 | 91精品中文字幕一区二区三区| 91精品福利在线一区二区三区| 欧美成人精品1314www| 国产亚洲成年网址在线观看| 国产精品国产三级国产专播品爱网 | 成人综合婷婷国产精品久久| 91美女在线观看| 欧美精品在线观看播放| 国产亚洲精品超碰| 亚洲黄色小视频| 久久国产精品色| 99视频精品在线| 在线电影欧美成精品| 国产亚洲欧美在线| 亚洲一二三区视频在线观看| 麻豆成人免费电影| 99免费精品视频| 欧美一区二区在线不卡| 国产精品免费视频观看| 亚洲mv在线观看| 国产91精品欧美| 欧美精品亚洲二区| 亚洲国产精品av| 天天综合色天天| av中文字幕亚洲| 欧美一区二区三区婷婷月色| 国产精品美女www爽爽爽| 天天综合网天天综合色| a美女胸又www黄视频久久| 欧美一级理论性理论a| 中文字幕不卡在线观看| 日本欧美一区二区在线观看| 成人丝袜视频网| 日韩欧美黄色影院| 亚洲永久免费视频| 岛国av在线一区| 91精品国产综合久久久久久久久久| 亚洲国产成人在线| 久久爱另类一区二区小说| 一本到一区二区三区| 久久精品视频一区二区三区| 亚洲午夜激情av| 国产成人在线视频网址| 777xxx欧美| 一区二区三区四区在线免费观看| 狠狠色丁香久久婷婷综合_中| 欧美色图天堂网| 中文字幕av一区二区三区免费看| 蜜臀av一区二区| 欧美日本一区二区三区四区| 中文字幕一区二区三区乱码在线| 国产在线视频一区二区三区| 欧美日韩亚州综合| 亚洲精品国产高清久久伦理二区| 国产在线精品一区二区夜色| 欧美放荡的少妇| 一区二区三区视频在线观看| 成人短视频下载| 久久午夜国产精品| 久久精品国产久精国产| 在线成人免费观看| 无吗不卡中文字幕| 欧美日韩一级片网站| 一区二区三区欧美激情| 9人人澡人人爽人人精品| 国产亚洲成aⅴ人片在线观看| 精品亚洲欧美一区| 日韩欧美国产一区二区在线播放| 亚洲va欧美va人人爽| 色香色香欲天天天影视综合网| 国产精品三级av| 成人激情免费电影网址| 国产精品色呦呦| 成人免费视频caoporn| 国产亚洲人成网站| 成人久久18免费网站麻豆 | 一区二区国产视频| 91久久精品一区二区| 亚洲精品久久久蜜桃| 欧美亚洲一区二区在线| 亚洲一区二区视频在线观看| 欧美日韩一区二区三区高清| 午夜精品久久久| 欧美一区午夜精品| 久久国产精品免费| 久久精品视频一区二区| av激情综合网| 一区二区三区在线观看欧美| 欧美色偷偷大香| 青青草视频一区| 精品国产91亚洲一区二区三区婷婷 | 日本成人超碰在线观看| 欧美一级xxx| 国产一区二区三区av电影 | 五月激情六月综合| 91精品国产一区二区三区香蕉| 免费看欧美美女黄的网站| 日韩亚洲欧美成人一区| 国模大尺度一区二区三区| 欧美国产一区二区在线观看| 91婷婷韩国欧美一区二区| 一区二区三区四区精品在线视频| 欧美三片在线视频观看| 久久国产尿小便嘘嘘| 欧美国产精品一区二区| 欧美在线免费观看视频| 毛片不卡一区二区| 国产亚洲一本大道中文在线| 91麻豆精品在线观看| 天天亚洲美女在线视频| 久久久国产精品午夜一区ai换脸| 91视频免费看| 日韩高清在线不卡| 国产日韩欧美精品电影三级在线| 99久久综合狠狠综合久久| 午夜私人影院久久久久| 久久综合成人精品亚洲另类欧美| 99精品视频中文字幕| 日韩二区三区在线观看| 久久精品视频网| 欧美日韩大陆一区二区| 国产乱人伦偷精品视频不卡| 亚洲老妇xxxxxx| 久久午夜老司机| 精品视频在线免费观看| 国产乱国产乱300精品| 亚洲精品免费在线观看| 久久品道一品道久久精品| 在线观看视频一区| 国产一区二区在线免费观看| 一区二区三区在线免费视频| 久久久久久久网| 欧美日韩在线精品一区二区三区激情 | 国产亚洲欧美一级| 欧美日韩免费一区二区三区视频| 精品在线视频一区| 亚洲成va人在线观看| 国产欧美一区二区三区鸳鸯浴| 欧美日韩在线播放三区四区| 国产精品91一区二区| 日日摸夜夜添夜夜添精品视频 | 亚洲欧美日韩成人高清在线一区| 欧美一级生活片| 在线视频一区二区三区| 国产剧情一区二区| 日本成人超碰在线观看| 亚洲综合免费观看高清完整版在线| 精品久久久久久久久久久久包黑料| 色网站国产精品| 福利一区二区在线观看| 日本女人一区二区三区| 亚洲综合免费观看高清完整版在线 | 一区二区三区影院| 国产女同性恋一区二区| 亚洲精品一线二线三线无人区| 欧美日韩国产在线播放网站| 99re视频这里只有精品| 国产sm精品调教视频网站| 久久精品国产亚洲aⅴ| 日韩精品国产精品| 一区二区欧美在线观看| 综合激情成人伊人| 国产亚洲一二三区| 国产亚洲午夜高清国产拍精品| 日韩欧美中文字幕一区| 精品视频1区2区| 在线免费一区三区| 91网站在线观看视频| 99免费精品视频| 91在线视频免费观看| 成a人片国产精品| 福利一区二区在线|