资源简介

操作系统课程设计 多道批处理系统两级调度的模拟

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#define null 0
#define len sizeof(struct jnote)
struct jcb//定义了两个结构体
{           //定义了七个变量和一个数组
 int state;//状态
 int num;//编号
 int in;//系统时间
 int run;//运行时间
 int pri;//优先级
 int mem;//内存
 int tape;//磁盘需求
}job[50];//数组
struct jnote
{
 int id; //编号
 int in; //系统时间
 int start;//开始时间
 int run;//运行时间
 int end;//结束时间
 int pri;//优先级
 int size;//大小
 int tape;//磁盘需求
 int *maddr;//地址
 struct jnote *next;
};
int rest=4memory[101]*mh=memorylogo=0fid=0;
struct jcb *p=job;
struct jnote *jh=null*rp=null*jp=null;

txt()//从txt文件中作业流
{
 FILE *fp;
 char pt;//单个字符
 int ispace=0j=0data[100]hkcount;
 char str[10];//字符数组
 for(i=0;i<100;i++) data[i]=-1; //用循环定义变量
 for(i=0;i<20;i++)
{
 job[i].num=-1;
 job[i].tape=-1;
 job[i].state=-1;
}
i=0;
fp=fopen(“job.txt““r+“);//打开文件,r+是表示可以写入和读出
if(fp==NULL)
{
 printf(“Cann‘t the file\n“);
 exit(0);//退出
}
while((pt=getc(fp))!=EOF)//如果指针在文件尾
{
 if(pt>=‘0‘&&pt<=‘9‘)//如果数字在0到6之间时
 {
  str[i]=pt; //用数组保存这个字符
  i++;
  space=0;
 }
  else
  {
   if(pt==‘ ‘||pt==‘\n‘) //如果字符是空格和回车的时候
  {
   if(space==1) continue;//直接跳出
   else
   {
    str[i]=‘\0‘;
    data[j]=atoi(str);//将字符转化为数据
    j++;
    i=0;
    space=1;
   }
  }
 }
}
for(h=0k=0;data[k]!=-1;k++h++)//各个数据代表不同的意思
{
 job[h].num=data[k];k++; //编号
 job[h].in=data[k];k++;  // 系统时间
 job[h].run=data[k];k++; // 运行时间
 job[h].pri=data[k];k++; // 优先级
 job[h].mem=data[k];k++; // 内存
 job[h].tape=data[k];  //磁盘大小
}
if(job[h-1].tape==-1)
 {
  str[i]=‘\0‘;
  job[h-1].tape=atoi(str);
 }
  system(“cls“);//清屏
  for(i=0;job[i].num!=-1;i++);//判断进程数
  return(i);
 }
rpend(startrun) //计算进程的结束时间
int start run;
{
  int end=0;
  int i=start%100+run;
  end=(start/100+i/60)*100+i%60;
  return(end);
}
time_time(endin)//计算周转时间或计算剩余的运行时间
int inend;
{
 int time;
 time=end/100*60+end%100-(in/100*60+in%100);
 return(time);
}
 int *m_pd(int size)//内存判断
 {
  int *mp*cp;
  int i=0;
  mp=cp=mh;
  while(*mp!=-1)
  {
   while(*cp==0)
   {
    cp++;i++;
   }
   if(i>=size) return(mp);
   while(*cp==1) cp++;
   mp=cp;
   }return(null);
}
zy_div_free(mpmsizetapeh)//资源分配与释放
int *mpmsizetapeh;
{
 int *cpi=msize;
 cp=mp;
 if(h==1)
 {
  for(;i>0;i--)
  {
   *cp=1; cp++;
  }rest=rest-tape;
  return (1);
 }if(h==2)
  {
   for(;i>0;i--)
   {
    *cp=0;cp++;
   }rest=rest+tape;
   return (2);
  }
}
selectrp(plogotime)//选择当前运行进程
int plogotime;
{
 struct jnote *newj; //定义结构体变量
 struct jnote *temp;
 if(jh==null&&rp==null)//当都为空时
 {
  p=job;
  for(;p->state==0;) p++;
  zy_div_free(mhp->memp->tape1);//重新进行资源分配
  p->state=0;
  newj=(struct jnote *)malloc(len);//分配地址
  rp=newj; //传递变量
  rp->id=p->num; rp->in=p->in; rp->start=p->in; rp->run=p->run; rp->end=0; rp->pri=p->pri;
  rp->size=p->mem; rp->tape=p->tape;
  rp->maddr=mh; rp->next=null;
  return (0);
  }
  else
  {

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

     文件     137728  2010-06-30 13:08  操作系统课程设计实验报告.doc

     文件       7395  2010-06-30 13:05  源代码\design.c

     文件          0  2010-01-12 00:36  源代码\design.cpp

     文件         77  2010-01-12 03:28  源代码\job.txt

     文件       4238  2010-01-12 00:39  源代码\OS.dsp

     文件        512  2010-01-12 00:39  源代码\OS.dsw

     文件      50176  2010-06-30 13:07  源代码\OS.ncb

     文件       1531  2010-06-30 13:05  源代码\OS.plg

     文件      17905  2010-06-30 13:05  源代码\Debug\design.obj

     文件     196698  2010-06-30 13:05  源代码\Debug\OS.exe

     文件     234304  2010-06-30 13:05  源代码\Debug\OS.ilk

     文件     206920  2010-06-30 13:05  源代码\Debug\OS.pch

     文件     517120  2010-06-30 13:05  源代码\Debug\OS.pdb

     文件      33792  2010-06-30 13:06  源代码\Debug\vc60.idb

     文件      53248  2010-06-30 13:05  源代码\Debug\vc60.pdb

     文件      48640  2010-06-30 13:07  源代码\OS.opt

     目录          0  2010-06-30 13:07  源代码\Debug

     目录          0  2010-06-30 13:07  源代码

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

              1510284                    18


评论

共有 条评论