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

📄 djf.txt

📁 CPU多级反馈队列_模拟--大三下学期操作系统课程设计 /* 作为自己写的第一个比较长的程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:

      s=(linklist)malloc(sizeof(struct node));
      s->j=e;           
      s->t=m;
      s->h=h;
      s->z=z;

      s->dd=0;
      if(e=='a') s->ys=13;/*这个数据量没有用,但是给程序本身的升级有一定的好处*/
      else if (e=='b') s->ys=14;
      else if (e=='c') s->ys=15;

      if(e=='a') s->wz=j;
      else if (e=='b') s->wz=j1;/*当有任务完成时要另外想办法实现‘减’操作*/
      else if (e=='c') s->wz=j2;

      if(e=='a')   
           { 
             lingxing(z,h); 
             delay(DELAY);
           }/*if not you shouldd't see the graphics */
      else if (e=='b')
           {
             tuyuan(z,h);
             delay(DELAY);
           }
      else if (e=='c') 
           { 
             juxing(z,h);
             delay(DELAY); 
           }
      s->next=p->next;/*数据结点的插入*/
      p->next=s;
    }
}


gethz(linklist l,int i,int *h,int *z) /* 取得第i个结点的横纵坐标*/
{
    int j=1;
    linklist p=l->next;
    while(p&&j<i)
    {
      p=p->next;
      j++;
    }
    if(!p||j>i)
      return 0;
    *h=p->h;
    *z=p->z;
}

gett(linklist l,int i)/*取得第i个结点的时间*/
{
    int j=1;
    linklist p=l->next;
    while(p&&j<i)
    {
      p=p->next;
      j++;
    }
    if(!p||j>i)
      return 0;
    return(p->t);
}

shuaz(linklist l,char e)/*刷新删除结点后,结点的横纵坐标的更新,但并未在图形上画出*/
{  
   int h1,z1;
   int j=1;
   linklist p=l->next;
    while(p)
    {
      if(e=='a')      {if(j<=5)       
                              {
                               h1=75; 
                               z1=(480-40*j);
                              }
        else if(j>=6)  
                              {
                               h1=45; 
                               z1=(240+40*(j-5));
                              }
         }
      else if(e=='b'){ if(j<=5)      
                              {
                               h1=195; 
                               z1=(480-40*j);
                              }
        else if(j>=6)  
                              {
                               h1=165; 
                               z1=(240+40*(j-5));
                              }
        }
      else if(e=='c'){if(j<=5)       
                              {
                               h1=315; 
                               z1=(480-40*j);
                              }
        else if(j>=6)  
                              {
                               h1=285; 
                               z1=(240+40*(j-5));
                              }
        }
      p->h=h1;
      p->z=z1;
    /*   printf("-%d",p->dd);*/
      p=p->next;
      j++;
     }
}


biaozhun(linklist l,int n)/*消影后图形的移动,N代表是第几列*/
{ 
   int i,h,h1;
   char j;
   if(n==1) 
            {
             j='a';
             h=75;
             h1=45;
            }
   if(n==2) 
            {
             j='b';
             h=195;
             h1=165;
             }
   if(n==3) 
            {
             j='c';
             h=315;
             h1=285;
            }
   if(length(l)<=4)
                  {   for(i=1;i<=length(l);i++)
                           {
                            hmove(j,440-40*i,h,480-40*i,10);
                           }
                   }
   if(length(l)>4){   for(i=1;i<=4;i++)
                           {
                            hmove(j,440-40*i,h,480-40*i,10);
                           }
                      lmove(j,280,h1,h,10);
                      for(i=1;i<=length(l)-5;i++)
                           {
                            nhmove(j,280+40*i,h1,240+40*i,10);
                           }
                       }

}

wbiaozhun(linklist l,int n)/*轮转后图形的移动,N代表是第几列*/
{ 
int i,h,h1;
char j;
if(n==1) 
        {
         j='a';
         h=75;
         h1=45;
        }
if(n==2) 
       {
        j='b';
        h=195;
        h1=165;
       }
if(n==3) 
      {
       j='c';
       h=315;
       h1=285;
      }
   if(length(l)<=4)
                  {for(i=1;i<=length(l)-1;i++)
                     {
                      hmove(j,440-40*i,h,480-40*i,10);
                     }
                   }
   if(length(l)>4){   for(i=1;i<=4;i++)
                     {
                      hmove(j,440-40*i,h,480-40*i,10);
                     }
       lmove(j,280,h1,h,10);/*the fifth */
                     for(i=1;i<=length(l)-6;i++)
                     {
                       nhmove(j,280+40*i,h1,240+40*i,10);}
                      }

}


luntu(linklist l,int n)/*轮转后图形的标准化*/
{    char j;   int h,h1;
      if(n==1) 
            {
             j='a';
             h=75;
             h1=45;
            }
      if(n==2) 
            {
             j='b';
             h=195;
             h1=165;
            }
      if(n==3) 
            {
             j='c';
             h=315;
             h1=285;
             }
      if(length(l)<=4){
                       nlmove(j,520,h,h1,10);
                       famen(n,0,0);
                       nhmove(j,520,h1,480,10);
                       famen(n,1,0);
                       wbiaozhun(l,n);
         gethz(l,length(l),&h,&z);
                       nhmove(j,480,h1,z,10);
                       lmove(j,z,h1,h,10);
                       }

      if(length(l)>4){  
                        nlmove(j,520,h,h1,10);
                        famen(n,0,0);
                        nhmove(j,520,h1,480,10);
                        famen(n,1,0);
                        wbiaozhun(l,n);
          gethz(l,length(l),&h,&z);
                        nhmove(j,480,h1,z,10);
                       }


}


lunz(linklist l)/*轮转算法中的数据结构表示部分:当第一个任务完成后把它排到队列的最后一个*/
{
   linklist p=l;
   linklist q;
   if(!p->next)
      return 0;
    q=p->next;
    p->next=q->next;
    while(p->next)
          {
           p=p->next;
          }
    q->next=0;
    p->next=q;

}
randi()
{
int k;
j=(rand()%800+10)/100;
if(j==1){
           k=(rand()%800+10)/100;
           if(k!=0)
           insert(a,'a',k);
           }
if(j==2){
           k=(rand()%600+70)/100;
           k=k+4;
           insert(b,'b',k);
           }
if(j==3){
           k=(rand()%1000+100)/60;
           insert(c,'c',k);
           }
}


pan()/*判断是否要把B中的任务升级*/
{
linklist p;
p=c->next;

j=0;

for(i=1;i<=length(c);i++)
     { 
      if((p->dd)>=CHAOSHI) 
             {
              j=1;
              break;
              }
      /*printf("pan(%d)=%d",i,p->dd);*/
      p=p->next;
     }
   return (j);
}

/*删除l的第i个结点,加到l1的中.(l,i,l1,n),n代表:n=1,队列l1的最前面,n=0的最后面*/
 
yic()/*移动B中的任务*/
{   int m;int i;
    linklist p;

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

    p=c->next;

    for(i=1;i<=length(c);i++)
       {
        if((p->dd)>=CHAOSHI)   break;
        p=p->next;
        }
     /*printf("yic>>>>>>>>%d\n",i);*/
     yicsj();
    /* ying gai shan chu jie dian */
     if(i<=5)
      { k=480-40*i;m=500-40*i;
     /* printf("yic xiamian %d",i);   */
        for(j=1;j<=40;j++)
                       {
                        setcolor(0);
                        line(500-40*i-1,330,500-40*i-j,330);
                        delay(DELAY);
                        }
        lmove('c',480-40*i,315,345,10);
        for(j=1;j<=40;j++)
                        {
                        setcolor(10);
                        line(m,330,m-j,330);
                        delay(DELAY);
                        }
   nhmove('c',k,345,220,10);
    if(length(b)<=5)
   {
                  nlmove('c',220,345,195,10);/*向上移动图形*/

    for(j=1;j<=28;j++)
                              {
                               setcolor(0);
                               line(240,181,240,181+j);
                               delay(DELAY);
                              }
    m=480-40*length(b);
    hmove('c',220,195,m,10);
    for(j=1;j<=28;j++)
                               {
                                setcolor(10);
                                line(240,181,240,181+j);
                                delay(DELAY);
                                }
    biaozhun(c,3);
    }/*打开门让任务进来*/


         else if((length(b)<=10)&&(length(b)>=6))/*只有b中少于十个任务时才能c从移动任务*/


            {nlmove('c',220,345,135,10);
       for(j=1;j<=30;j++)
                   {
                           setcolor(0);
                           line(240,149,240,149-j);
                           delay(DELAY);
                           }
      hmove('c',220,135,280+(length(b)-6)*40,10);
      for(j=1;j<=30;j++)
                  {
                          setcolor(10);
                          line(240,149,240,149-j);
                          delay(DELAY);
                          }
      for(j=1;j<=39;j++)
                          {
                           setcolor(0);
                           line(261+(length(b)-6)*40,150,261+(length(b)-6)*40+j,150);
                           delay(DELAY);
                           }
      lmove('c',280+(length(b)-6)*40,135,165,10);
      for(j=1;j<=39;j++)
                          {
                           setcolor(10);
                           line(261+(length(b)-6)*40,150,261+(length(b)-6)*40+j,150);
                           delay(DELAY);
                           }
      biaozhun(c,3);

    }
        }
else if(i>5) /* hai xu yao   ji xu xie */
   {
           for(j=1;j<=40;j++)
                {
                 setcolor(0); 
                 line(261+(i-6)*40,270,261+(i-6)*40+j,270);
                 delay(DELAY);
                }
           nlmove('c',280+(i-6)*40,285,255,10);
           for(j=1;j<=40;j++)
               {
                setcolor(10); 
                line(261+(i-6)*40,270,261+(i-6)*40+j,270);
                delay(DELAY);
               }
    for(j=1;j<=30;j++)
                   {
                    setcolor(0); 
                    line(240,271,240,271+j);
                    delay(DELAY);
                   }
           nhmove('c',280+(i-6)*40,255,220,10);
    for(j=1;j<=30;j++)
                 {
                  setcolor(10); 
                  line(240,271,240,271+j);
                  delay(DELAY);
                 }
              if(length(b)<=5)
                      {
                       nlmove('c',220,255,195,10);/*向上移动图形*/
                       for(j=1;j<=28;j++)
                              {
                               setcolor(0); 
                               line(240,181,240,181+j);  
                               delay(DELAY);
                              }
                       hmove('c',220,195,480-40*length(b),10);
                       for(j=1;j<=28;j++)
                              {
                               setcolor(0);
                               line(240,181,240,181+j);  
                               delay(DELAY);
                              }
                       biaozhun(c,3);

                       }

              else if((length(b)<=10)&&(length(b)>=6))/*只有b中少于十个任务时才能c从移动任务*/
                      {
                       nlmove('c',220,255,135,10);/*向上移动图形*/
                       for(j=1;j<=30;j++)
                    {
                            setcolor(0);
                            line(240,149,240,149-j);
                            delay(DELAY);
                           }
                       hmove('c',220,135,280+(length(b)-6)*40,10);
                       for(j=1;j<=30;j++)
                    {
                            setcolor(10);
                            line(240,149,240,149-j);
                            delay(DELAY);
                           }

                        for(j=1;j<=39;j++)
                             {
                              setcolor(0);
                              line(261+(length(b)-6)*40,150,261+(length(b)-6)*40+j,150);
                              delay(DELAY);
                             }
                lmove('c',280+(length(b)-6)*40,135,165,10);
                for(j=1;j<=39;j++)
                            {
                             setcolor(10);
                             line(261+(length(b)-6)*40,150,261+(length(b)-6)*40+j,150);
                             delay(DELAY);
                            }
                biaozhun(c,3);

                      }


           }
setcolor(0);
outtextxy(515,349,"job:updating..");

}

yicsj()/*在移动C中结点时,B,C中数据结构中的变化*/
{ 
    int i=0;
    linklist p,q,q1;
    p=c->next;  

⌨️ 快捷键说明

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