• 大小: 192KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: 两级调度  

资源简介

两道批处理系统的两级调度,自己做的简单的课设内容,可以运行

资源截图

代码片段和文件信息

#include “stdio.h“ 
#include  
#include  
#define getpch(type) (type*)malloc(sizeof(type)) 
#define NULL0

struct time  //定义时间结构体
{
int hour; //时
int min;  //分
};

struct time systime;  //定义系统时间
int nstate=0;    //定义一个变量记录内存内作业数
struct pcb           /* 定义进程控制块PCB */
{  
 char name[10];  //进程名
 char state;  //状态 state为“N“为就绪,“W“为后备,“S“为还处于输入井状态“F“为完成
 int super;  //优先数
 int ntime;   //需要运行时间
 int rtime;  //运行时间
 struct time ctime;   //提交时间
 struct time stime;  //开始时间
 struct time ftime;  //完成时间
 int  ttime;  //周转时间
 float  dtime;  //带权周转时间
 struct pcb* link; 
}*ready=NULL*one=NULL*p*q=NULL; 
typedef struct pcb PCB; 

int numnum2;

int time_cmp(struct time astruct time b)   //时间比较 ab返回1;
{
    if(a.hour    else if(a.hour==b.hour&&a.min else if(a.hour==b.hour&&a.min==b.min)    return 0;
    return 1;
}



int time_j(struct time cstruct time d)  //计算时间的差
{  int s;
s=c.hour*60+c.min-d.hour*60-d.min;//把小时*60化为分钟之后再相减
return s;
}

void sort() /* 建立对进程先来先服务排列函数*/ 

  PCB *first *second; 
  int insert=0; 
  if((ready==NULL)||time_cmp(p->ctimeready->ctime)==-1) /*提交时间最小者插入队首*/ 
   { 
p->link=ready;
ready=p; 
   } 
  else /* 进程比较提交时间插入适当的位置中*/ 
  { 
first=ready; 
second=first->link; 
while(second!=NULL) 
 { 
    if(time_cmp(p->ctimesecond->ctime)==-1) /*若插入进程比当前进程提交时间小*/ 
     {                                       /*插入到当前进程前面*/ 
p->link=second; 
first->link=p; 
second=NULL; 
insert=1; 
 } 
    else /* 插入进程提交时间最大则插入到队尾*/ 
         { 
first=first->link; 
second=second->link; 
  } 
      } 
if(insert==0) first->link=p;
  } 




void input() /* 建立进程控制块函数*/ 

  int i; 
  printf(“\n 请输入进程数:“); 
  scanf(“%d“&num);
  num2=num;
 if(num>0)
  for(i=1;i<=num;i++) 
 { 
printf(“\n 进程No.%d:\n“i); 
p=getpch(PCB); 
printf(“\n 输入进程名:“); 
scanf(“%s“p->name); 
    p->ctime.hour=0p->ctime.min=0;
printf(“\n 输入提交时间(时:分):“); 
scanf(“%d:%d“&p->ctime.hour&p->ctime.min);
    printf(“\n 输入进程需要运行时间:“); 
scanf(“%d“&p->ntime);
    printf(“\n 输入进程优先数:“); 
scanf(“%d“&p->super);
printf(“\n“);
p->state=‘S‘;
p->rtime=0;
p->stime.hour=0p->stime.min=0;
p->link=0;
sort(); /* 调用sort函数*/ 
  } 
 else
 { printf(“\n 输入错误!请重新输入\n“);
  input(); 
 }

//建立完成顺序的链表
void change1()               
{ if(one==NULL) {one=p;q=one;}
  else
    {  q->link=p;
   q=p;
     }
  p=q->link; 
  q->link=NULL;
  q->ftime.hour=systime.hour;
  q->ftime.min=systime.min;
  nstate--;
  num2--;
  q->state=‘F‘;
}

void change2()
{ if(one==NULL) {one=p->link;q=one;}
  else
    { q->link=p->link;
      q=p->link;
    }
  p->link=q->link;
  q->link=NULL;     
  q->ftime.hour=systime.hour;
  q->ftime.min=systime.min;
  nstate--;
  num2--;
  q->state=‘F‘;
}

//选中优先数小的作业,记录开始时间,已运行时间
void run()
{
printf(“---选中作业

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     486400  2014-01-09 18:49  两道批处理系统的两级调度\两道批处理系统的两级调度.ncb

     文件        973  2014-01-07 19:06  两道批处理系统的两级调度\两道批处理系统的两级调度.sln

    ..A..H.     13824  2014-01-09 18:49  两道批处理系统的两级调度\两道批处理系统的两级调度.suo

     文件      45056  2014-01-09 18:34  两道批处理系统的两级调度\debug\两道批处理系统的两级调度.exe

     文件     319180  2014-01-09 18:34  两道批处理系统的两级调度\debug\两道批处理系统的两级调度.ilk

     文件     322560  2014-01-09 18:34  两道批处理系统的两级调度\debug\两道批处理系统的两级调度.pdb

     文件       7203  2014-01-09 18:49  两道批处理系统的两级调度\两道批处理系统的两级调度\两道批处理系统的两级调度.cpp

     文件       4022  2014-01-09 04:00  两道批处理系统的两级调度\两道批处理系统的两级调度\两道批处理系统的两级调度.vcproj

     文件       1407  2014-01-09 18:49  两道批处理系统的两级调度\两道批处理系统的两级调度\两道批处理系统的两级调度.vcproj.CFENG.Administrator.user

     文件      13996  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\BuildLog.htm

     文件         63  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\mt.dep

     文件      44032  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\vc80.idb

     文件      53248  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\vc80.pdb

     文件        406  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\两道批处理系统的两级调度.exe.embed.manifest

     文件        472  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\两道批处理系统的两级调度.exe.embed.manifest.res

     文件        388  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\两道批处理系统的两级调度.exe.intermediate.manifest

     文件      26521  2014-01-09 18:34  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug\两道批处理系统的两级调度.obj

     目录          0  2014-01-09 19:21  两道批处理系统的两级调度\两道批处理系统的两级调度\Debug

     目录          0  2014-01-09 19:21  两道批处理系统的两级调度\debug

     目录          0  2014-01-09 19:21  两道批处理系统的两级调度\两道批处理系统的两级调度

     目录          0  2014-01-09 19:21  两道批处理系统的两级调度

----------- ---------  ---------- -----  ----

              1339751                    21


评论

共有 条评论