⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 djf.txt

📁 CPU多级反馈队列_模拟--大三下学期操作系统课程设计 /* 作为自己写的第一个比较长的程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
    q1=b;
    i=1;
    while(i<=length(c))
    { if((p->dd)>=CHAOSHI)
           {/*printf("yicsj()-i=%d",i);*/
            goto end;
            }
p=p->next;i++; 
    }


end:q=c;
    /* printf("yicsj xia mina %d",i);     */
     for(j=1;j<=i-1;j++)
        {
         q=q->next;
        }

    q->next=p->next; 
    p->next=0;
    shuaw(c); 
    shuaz(c,'c');

    while(q1->next)
    {q1=q1->next;}
    q1->next=p;
    p->z='b';
    shuaw(b);
    shuaz(b,'b');
}


shuadd(int hour,int min,int sec,int hour1,int min1,int sec1)
{ 
int i;
int sj;

   /*时间计算*/
   if((hour1-hour)==0)
     { if((min1-min)==0) 
                 sj=(sec1-sec);
       if((min1-min)==1) 
                 sj=(60-sec)+sec1;
       if((min1-min)>=2) 
                 sj=(abs(min1-min-1))*60+(60-sec)+sec1;
      }
   if((hour1-hour)==1)
    sj=abs(hour1-hour-1)*3600+(59-min)*60+min1*60+(60-sec)+sec1;
   /*printf("sj=%d",sj);*/
   for(i=1;i<=length(a);i++)
      {
       gengdd(a,i,sj);
      }
   for(i=1;i<=length(b);i++)
      {
       gengdd(b,i,sj);
      }
   for(i=1;i<=length(c);i++)
      {
       gengdd(c,i,sj);
      }

}
 
main()
{    int e;/*取结点时间量*/

    Init();/*图形驱动*/
    initer();/*程序主框架的生成*/
    initlist(&a);/*三个级别的链表的初始化*/
    initlist(&b);
    initlist(&c);
    /*insert(a,'a',4);
    insert(a,'a',3);
    insert(a,'a',4);
    insert(a,'a',3);
    insert(a,'a',4);
    insert(a,'a',3);
    insert(a,'a',4);
    insert(a,'a',3);*/
    insert(a,'a',4);
    insert(a,'a',3); 
    insert(b,'b',4);
    insert(b,'b',6);
    insert(b,'b',2);
    insert(b,'b',2);
    insert(b,'b',6);
    insert(b,'b',7);
    insert(b,'b',8);
   /* insert(b,'b',6);
    insert(b,'b',5);
    insert(b,'b',5);
    insert(c,'c',6);
    insert(c,'c',4);
    insert(c,'c',7);
    insert(c,'c',2); */
    insert(c,'c',5);
    insert(c,'c',8);
    insert(c,'c',2);
    insert(c,'c',4);
    insert(c,'c',1);
    insert(c,'c',5);
    while(1)
     {
         while(!kbhit()){
loop:   if(length(a)==0){if(length(b)==0){if(length(c)==0){    randi();             /*弹出消息任务队列为空*/}
           else{    j=0;
            gettime(&t);
            hour=t.ti_hour;
                                                                    min=t.ti_min;
                                                                    sec=t.ti_sec;
           /* printf("%d:%d:%d\n",hour,min,sec);*/
                                                                    gethz(c,1,&h,&z);

                                       setcolor(14);
                                     outtextxy(515,331,"job:swapping..");


                                                                    famen1(3,0);
                                                                    hmove('c',z,h,480,10);
                                                                    famen1(3,1);
                                                                    famen(3,0,1);
                                                                    hmove('c',480,h,520,10);
                                                                    famen(3,1,1);

            setcolor(0);
            outtextxy(515,331,"job:swapping..");
            setcolor(14);
            outtextxy(515,340,"cpu:running...");


            while(gett(c,1)+1)
                                                                          {
                                                                           for(i=1;i<=70;i++)
                                                                           if(j%16!=0){setcolor(j);
                                                                                       line(560+i,31,560+i,329);
                                                                                      }
                                                                           if(j%16!=0)sleep(1);
                                                                           j++;
                                                                           gengt(c,1,gett(c,1)-1);
                                                                           gengdd(c,1,-1);
            if(j%3==0) randi();


                                                                             if((length(a)!=0)||(length(b)!=0))
                                                                               {
                             
                                                                                setcolor(0);
                 outtextxy(515,340,"cpu:running...");
                 setcolor(14);
                 outtextxy(515,331,"job:swapping..");
                                                                                famen(3,0,1);
                                                                                nhmove('c',520,315,480,10);
                                                                                famen(3,1,1);
                 famen1(3,0);
                                                                                nhmove('c',480,315,440,10);
                                                                                famen1(3,1);

                 setcolor(0);
                 outtextxy(515,331,"job:swapping..");
                 goto loop;}


                                                                            }

          setcolor(0);
          outtextxy(515,340,"cpu:running...");
          setcolor(14);
          outtextxy(515,331,"job:swapping..");


                                                                         gettime(&t);
                                                                         hour1=t.ti_hour;
                                                                         min1=t.ti_min;
                                                                         sec1=t.ti_sec;
                /*printf("%d:%d:%d\n",hour1,min1,sec1);*/
           shuadd(hour,min,sec,hour1,min1,sec1);

                                                                          xiaoying();
                                                                          delete(c);
                                                                          delay(DELAY);
                                                                          shuaw(c);
                                                                          shuaz(c,'c');
                                                                          biaozhun(c,3);
           if(length(b)<=9)
           {if(pan())yic();}/*数据结构的更改,图形的移动*/;

           setcolor(0);
           outtextxy(515,331,"job:swapping..");
                                                                  }
                                                            }/*end if(length(c)==0)*/
 /*b yun xing */        else{
                                                gethz(b,1,&h,&z);
             setcolor(14);
             outtextxy(515,331,"job:swapping..");

                                                famen1(2,0);
                                                hmove('b',z,h,480,10);
                                                famen1(2,1);
                                                famen(2,0,1);
                                                hmove('b',480,h,520,10);
                                                famen(2,1,1);

             setcolor(0);
             outtextxy(515,331,"job:swapping..");

                                                 if(gett(b,1)<=B)
           {   gettime(&t);
              hour=t.ti_hour;
                                                        min=t.ti_min;
                                                        sec=t.ti_sec;
       setcolor(14);
        outtextxy(515,340,"cpu:running...");

              while(gett(b,1)+1)
        {for(i=1;i<=70;i++)
         if(j%16!=0){setcolor(j);
                                                                      line(560+i,31,560+i,329);
                                                                      }
          if(j%16!=0)sleep(1);
                                                           j++;
                                                           gengt(b,1,gett(b,1)-1);
                                                           gengdd(b,1,-1);
          if(j%3==0) randi();
          if(length(a)!=0)
          {
                                                    setcolor(0);
           outtextxy(515,340,"cpu:running...");

                                                            famen(2,0,1);
                                                            nhmove('b',520,195,480,10);
                                                            famen(2,1,1);
           famen1(2,0);
                                                            nhmove('b',480,195,440,10);
                                                            famen1(2,1);
           goto loop;
                                                            }
                                                           }


             setcolor(0);
             outtextxy(515,340,"cpu:running...");

             setcolor(14);
             outtextxy(515,331,"job:swapping..");


                                                            gettime(&t);/*取得当前时间*/
                                                            hour1=t.ti_hour;
                                                            min1=t.ti_min;
                                                            sec1=t.ti_sec;
           shuadd(hour,min,sec,hour1,min1,sec1);/*刷新时间*/
                                                            xiaoying();/*把已经完成的任务的图象消掉*/
                                                            delete(b);/*把完成的任务从数据结构中删除*/
                                                            delay(DELAY);
                                                            shuaw(b);/*把已经完成任务从数据结构中删除后,其他任务结点在任务队列中位置的刷新*/
           shuaz(b,'b');/*刷新结点变化后的结点坐标*/
                                                            biaozhun(b,2);/*任务完成后图形的移动*/
           if(length(b)<=9)
           {if(pan()==1)yic();}/*数据结构的更改,图形的移动*/;

           setcolor(0);
           outtextxy(515,331,"job:swapping..");
                                                        }


                                 /*涉及到轮转*/   else
            {     int m=B;/*必须定义一个常量来定义代表,因为作为一个常量不能做加减操作*/
          gettime(&t);
          hour=t.ti_hour;
                                                           min=t.ti_min;
                                                           sec=t.ti_sec;

          setcolor(14);
          outtextxy(515,340,"cpu:running...");

          while(m+1)
                                                            {for(i=1;i<=70;i++)
                                                              if(j%16!=0)
                                                                      {setcolor(j);
                                                                       line(560+i,31,560+i,329);
                                                                      }
             if(j%16!=0)
                                                                        sleep(1);
                                                              j++;
                                                              m=m-1;
                                                              gengt(b,1,gett(b,1)-1);
                                                              gengdd(b,1,-1);
             if(j%3==0) randi();
                                                              if(length(a)!=0)
                                                              {


          setcolor(0);
          outtextxy(515,340,"cpu:running...");
          setcolor(14);
          outtextxy(515,331,"job:swapping..");

              famen(2,0,1);
                                                               nhmove('b',520,195,480,10);
                                                               famen(2,1,1);
                     famen1(2,0);
                                                               nhmove('b',480,195,440,10);
                                                               famen1(2,1);


          setcolor(0);
                                                               outtextxy(515,331,"job:swapping..");


               goto loop;}

 

 }

                                                            setcolor(0);
              outtextxy(515,340,"cpu:running...");

              setcolor(14);
              outtextxy(515,331,"job:swapping..");

                                                             gettime(&t);
                                                             hour1=t.ti_hour;
                                                             min1=t.ti_min;
                                                             sec1=t.ti_sec;
            shuadd(hour,min,sec,hour1,min1,sec1);/*刷新时间*/
                                                             xiaoying();
                                                             lunz(b);/*任务在时间片内没有完成,把他移到数据结构链表的后面结点*/
                                                             delay(DELAY);
                                                             shuaw(b);/*把已经完成任务从数据结构中删除后,其他任务结点在任务队列中位置的刷新*/
            shuaz(b,'b');
                                                             luntu(b,2);/*biaozhun(b,2);   应该是轮回中的把图形移动到任务队列的后面*/
            if(length(b)<=9)
            {if(pan()==1) yic();}/*数据结构的更改,图形的移动*/;

                                                       setcolor(0);
                                                       outtextxy(515,331,"job:swapping..");

                                                       }/*end else */
                                                }/*end else*/

      }/*end if(length(b)==0)*/




              /*a yun xing */    else{  
           gethz(a,1,&h,&z);

         setcolor(14);
         outtextxy(515,331,"job:swapping..");
                                famen1(1,0);
                                hmove('a',z,h,480,10);
                                famen1(1,1);
                                famen(1,0,1);
                                hmove('a',480,h,520,10);
                                famen(1,1,1);

        setcolor(0);
        outtextxy(515,331,"job:swapping..");

                                if(gett(a,1)<=A)
        {      gettime(&t);
       hour=t.ti_hour;
                                          min=t.ti_min;
                                          sec=t.ti_sec;

                                          setcolor(14);
       outtextxy(515,340,"cpu:running...");
                                          while(gett(a,1)+1)
                                               {for(i=1;i<=70;i++)
                                                if(j%16!=0)
                                                        {setcolor(j);
                                                         line(560+i,31,560+i,329);
                                                        }
                    if(j%16!=0)
                                                           sleep(1);
                                                j++;
                                                gengt(a,1,gett(a,1)-1);
                                                gengdd(a,1,-1);
             if(j%3==0) randi();
       }
           setcolor(0);
          outtextxy(515,340,"cpu:running...");
                                             setcolor(14);
          outtextxy(515,331,"job:swapping..");

                                               
                                       gettime(&t);
                                       hour1=t.ti_hour;
                                       min1=t.ti_min;
                                       sec1=t.ti_sec;
                                       shuadd(hour,min,sec,hour1,min1,sec1);
                                       xiaoying();
                                       delete(a);
                                       delay(DELAY);
                                       shuaw(a);
           shuaz(a,'a');
                                       biaozhun(a,1);
           if(length(b)<=9)
           {if(pan()) yic();}/*数据结构的更改,图形的移动*/;

                                      setcolor(0);
          outtextxy(515,331,"job:swapping..");
                                      }

                                 else
         {   int m=A;
                                        gettime(&t);
            hour=t.ti_hour;
                                        min=t.ti_min;
                                        sec=t.ti_sec;

                                       setcolor(14);
           outtextxy(515,340,"cpu:running...");
            while(m+1)
          {for(i=1;i<=70;i++)
           if(j%16!=0)
                                                        {
                                                         setcolor(j);
                                                         line(560+i,31,560+i,329);
                                                        }
           if(j%16!=0)
                                                         sleep(1);
                                              j++;
                                              m=m-1;
                                              gengt(a,1,gett(a,1)-1);
                                              gengdd(a,1,-1);
           if(j%3==0) randi();/*随机生成任务*/

                                                }

                                         setcolor(0);
       outtextxy(515,340,"cpu:running...");

                                          setcolor(14);
             outtextxy(515,331,"job:swapping..");


                                            gettime(&t);
                                            hour1=t.ti_hour;
                                            min1=t.ti_min;
                                            sec1=t.ti_sec;
                                            shuadd(hour,min,sec,hour1,min1,sec1);
                                            xiaoying();
                                            lunz(a);
                                            delay(DELAY);
                                            shuaw(a);
                                     shuaz(a,'a');

                                            luntu(a,1);

        if(length(b)<=9)
       { if(pan()) yic();}/*数据结构的更改,图形的移动*/;
                                          /*   biaozhun(a,1);   应该是轮回中的把图形移动到任务队列的后面*/

                                        }
                                       setcolor(0);
          outtextxy(515,331,"job:swapping..");


                               }/*end of a's else */
                           }/*end length(a)==0)*/

         key=bioskey(0);/*从缓存中返回接收的按键,返回后清空*/
if(key==ENTER)
     {    setcolor(14);
                       for(i=0;i<29;i++)
                       line(501,1+i,630,1+i);
                      {/*一次可以输入多个任务*/
                       {scanf(" %c,%d",&sr1,&sr2);
                       if(sr1=='a') 
                                   insert(a,sr1,sr2);
                       if(sr1=='b') 
                                   insert(b,sr1,sr2);
         if(sr1=='c') 
                                    insert(c,sr1,sr2);}}
         setcolor(0);
                       for(i=0;i<29;i++)line(501,1+i,630,1+i);
                   }
         if(key==ESC) {over();}
      }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -