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

📄 cpu调度c语言实现.txt

📁 CPU调度C语言实现 实现1FCFS(先到先服务) 2SJF(最段作业优先调度) 3RR(轮转法) 4PSA(优先权调度)n) 5EXIT          6时间的延迟;          7:屏幕
💻 TXT
字号:
CPU的高调度。

实现1FCFS(先到先服务)      2SJF(最段作业优先调度)
                  3RR(轮转法)            4PSA(优先权调度)n);
                  5EXIT;         6时间的延迟;
         7:屏幕的换色.  

#include stdio.h
#include conio.h
#include string.h
struct JCSJ
 { char name[3];       进程名称
   int t;              CPU区间
   int k;              到达时间
   int m;              优先权,数字小表示优先权高
   struct JCSJ next;
 };
struct JCSJ Creat(struct JCSJ phead);
int choose(void);
struct JCSJ SJF(struct JCSJ phead);
struct JCSJ RR(struct JCSJ phead);
struct JCSJ FCFS(struct JCSJ phead);
struct JCSJ PSA(struct JCSJ phead);
struct JCSJ  head=NULL;
main( )
 {
   Creat(head);
   getch( );
}

struct JCSJ Creat(struct JCSJ phead)
  {
    struct JCSJ ps,pt;
    int n,i;
    printf(请输入进程数n= );
    scanf(%d,&n);
    pt=(struct JCSJ )malloc(sizeof(struct JCSJ));
    phead=pt;
    ps=pt;
    pt-next=NULL;
    for(i=0;in-1;i++)
      {
        pt=(struct JCSJ )malloc(sizeof(struct JCSJ));
        ps-next=pt;
        ps=pt;
        pt-next=NULL;
      }
   {
     printf(***请输入进程的相关名称和数字***:n);
     sleep(1);时间延迟一秒钟
     printf(n);
     printf(进程名称   CPU区间   到达时间   优先权n);
     printf(nnn);
    }
  for(i=0,ps=phead;ps!=NULL;ps=ps-next,i++)
     {
      gotoxy(4,6+i);
      scanf(%s,ps-name);
      gotoxy(15,6+i);
      scanf(%d,&(ps-t));
      gotoxy(25,6+i);
      scanf(%d,&(ps-k));
      gotoxy(35,6+i);
      scanf(%d,&(ps-m));
      }
     head=phead;
     choose();
  }
int choose(void)
{
  int k;
  do
    {
      printf(=================================================n);
      printf(  1FCFS(先到先服务)      2SJF(最段作业优先调度)n);
      printf(  3RR(轮转法)            4PSA(优先权调度)n);
      printf(  5EXITn);
      printf(=================================================n);
      printf(请选择(1-5)=);
      scanf(%d,&k);
     }while(k1&&k4);     k1时继续循环,表示输入有错,重新输入  
   switch(k)
     {
       case 1 FCFS(head);choose();break;
    case 2 SJF(head); choose();break;
       case 3 RR(head);  choose();break;
       case 4 PSA(head); choose();break;
       case 5 break;
      }
   }

struct JCSJ SJF(struct JCSJ phead)
  {
     struct JCSJ p1,p2,ps;
     int n,i;
     char s[3];
     for(p1=phead;p1!=NULL;p1=p1-next)
      for(p2=phead;p2-next!=NULL;p2=p2-next)
        {
          if(p2-tp2-next-t)
            {
              n=p2-t;
              p2-t=p2-next-t;
              p2-next-t=n;
              strcpy(s,p2-name);
              strcpy(p2-name,p2-next-name);
              strcpy(p2-next-name,s);
             }
         }
      printf(=============================n);
      printf(进程名称       CPU区间n);
      for(ps=phead;ps!=NULL;ps=ps-next)
        {
           printf(n   %s          %dn,ps-name,ps-t);
           for(i=1;i8;i++)
        {
         printf(.);
         delay(40000)
        }
         printf(n);
         textbackground(6);
      }
       sleep(5);
       clrscr();
  }

struct JCSJ RR(struct JCSJ phead)
  {
    int a,b,c,i;
    struct JCSJ ps;
    a=b=c=0;
    printf(Please input TIMEa=);
    scanf(%d,&a);
    for(ps=phead;ps!=NULL;ps=ps-next)
        b=b+(ps-t);                   所有进程CPU区间总和
    do
      {
        for(ps=phead;ps!=NULL;ps=ps-next)
          if(ps-t!=0)
            {
              if(ps-t=a)
                {
                  printf(n%s     %dn,ps-name,ps-t);
                  for(i=1;i8;i++)
                  {
                   printf(.);
                   delay(40000);
                  }
                   printf(n);
                }
              else
                {
                  printf(n%s     %dn,ps-name,a);
                  for(i=1;i8;i++)
                  {
                   printf(.);
                   delay(40000);
                  }
                  printf(n)
               }
              ps-t=(ps-t)-a;
              if(ps-t0)
                ps-t=0;
              c=c+a;                 所有已用的时间片总和
            }
          }while(cb);
  }

struct JCSJ FCFS(struct JCSJ phead)
  {
     struct JCSJ p1,p2,ps;
     int n,i;
     char s[3];
     for(p1=phead;p1!=NULL;p1=p1-next)
      for(p2=phead;p2-next!=NULL;p2=p2-next)
        {
          if(p2-kp2-next-k)
            {
              n=p2-k;
              p2-k=p2-next-k;
              p2-next-k=n;
              strcpy(s,p2-name);
              strcpy(p2-name,p2-next-name);
              strcpy(p2-next-name,s);
             }
         }
     head=phead;
     printf(============================n);
     printf(进程名称        到达时间n);
     for(ps=phead;ps!=NULL;ps=ps-next)
       {
         printf(n  %s           %dn,ps-name,ps-k);
         for(i=1;i8;i++)
        {
         printf(.);
         delay(40000);
        }
        printf(n);
        textbackground(4);
       }
        sleep(5);
        clrscr();
     }

struct JCSJ PSA(struct JCSJ phead)
  {
     struct JCSJ p1,p2,ps;
     int n,i;
     char s[3];
     for(p1=phead;p1!=NULL;p1=p1-next)
      for(p2=phead;p2-next!=NULL;p2=p2-next)
        {
          if(p2-mp2-next-m)
            {
              n=p2-m;
              p2-m=p2-next-m;
              p2-next-m=n;
              strcpy(s,p2-name);
              strcpy(p2-name,p2-next-name);
              strcpy(p2-next-name,s);
             }
         }
     printf(n);
     printf(进程名称        优先权n);
     for(ps=phead;ps!=NULL;ps=ps-next)
       {
         printf(n  %s          %dn,ps-name,ps-m);
         for(i=1;i8;i++)
        {
         printf(.);
         delay(40000)
         }
        printf(n);
        textbackground(2);
       }
        sleep(5);
        clrscr();
  }

⌨️ 快捷键说明

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