资源简介
操作系统课程设计
多道批处理系统两级调度的模拟
代码片段和文件信息
#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
- 上一篇:RTX二次开发相关的最全面的
- 下一篇:easyfit重现期的计算
相关资源
- 数字逻辑课程设计--彩灯循环显示电路
- pintos操作系统实验27个全pass
- EDA课程设计报告-彩灯控制器
- 操作系统实验——位示图法管理存储
- 数字电子密码锁课程设计
- 数电课程设计交通灯
- wince5.0操作系统的安装文件绝对有用
- 微机原理倒计时器课程设计
- 计算机操作系统教程第三版清华大学
- 校园导航问题 数据结构
- 用51单片机设计的GPS定位系统论文
- 2015广工操作系统实验源代码报告
- 力控锅炉水位水温监控系统课程设计
- 机械设计课程设计——圆柱齿轮减速
- 计算机网络课程设计 小区局域网
- 神反转策略精准操作系统.zip
- 大学课程设计之高校班级管理系统(
- Hilbert曲线的绘制及算法实现课程设计
- 微机原理课程设计作业
- 计算机组成课程设计:简单模型机设
- 磁盘调度算法.docx
- 校内旅游咨询课程设计报告
- 微机原理与接口电子琴课程设计报告
- 交通灯 数字电子课程设计
- 微机原理课程设计秒表的设计
- 微机原理:交通灯课程设计
- 猜数字游戏设计_课程设计报告.docx
- 网络安全课程设计软件+报告网络嗅探
- 操作系统课程复习总结
- 数据结构课程设计--校园最短路径
评论
共有 条评论