资源简介
用C语言编写的模拟实现的多道批处理系统的两级调度,可供选择的作业调度算法有:先来先服务算法、最小作业优先算法、短作业优先算法。可供选择的进程调度算法有:先来先服务、最短进程优先算法、高响应比者优先算法。

代码片段和文件信息
#include “stdio.h“
#include
#include
#include
#define getpch(type) (type*)malloc(sizeof(type))
/* 定义作业控制块JCB */
struct jcb {
char name[10]; //作业名
char state; //作业状态就绪or执行or完成
float super; //优先数
int ntime; //作业运行总共需要的时间
int rtime; //作业已经执行的时间
int atime; //Arrival time作业到达时间
int wtime; //wait time作业等待的时间
int size; //作业请求分配的内存空间长度
int ntape; //作业需要的磁带机数量
int startAddress; //首址
//int startTime; //开始时间
int endTime; //结束时间
struct jcb* link; //下一个指针
}*ready=NULL*j*p*readyP=NULL; //ready指针指向链表的第一个jcb
/*
*空间分区表
*/
struct freeArea{
int length; //空闲分区的大小(长度)
int startAddress; //空闲分区的首址
int state; //该分区的状态,1为分配出去,0为未分配
struct freeArea *next; //后继
}*f;
typedef struct jcb JCB ;
typedef struct freeArea freeArea ;
freeArea F; //链头
int tapeNumber; //磁带机数量
int algorithmJob=0; //记录用户选择了哪种作业调度的算法
int algorithmProcess=0; //记录用户选择了哪种进程调度算法
int ctime = 0; //CPU时间
struct jcb J[20]; //记录已完成的作业的信息
int count = 0; //记录就绪队列中的作业数
/*
*初始化一片可用内存空间大小为(length)KB的内存空间
*/
void initMainStore(int length)
{
f = (freeArea*)malloc(sizeof(freeArea));
f->length = length;
f->startAddress = 0;
f->state = 0;
f->next = NULL;
F.next = f;
F.length = 0;
}
/*
*初始化磁带机的数量
*/
void initTape(int tapeN)
{
tapeNumber = tapeN;
}
/*
*打印输入井的作业表信息
*/
void printInputShaft(int flag)
{
JCB *pr = ready;
while(pr!=NULL&&pr->state==‘w‘)
{
pr = pr->link;
}
//pr指向当前输入井第一个
printf(“***当前输入井作业信息如下:\n“);
//printf(“\n name \t state \t needtime \t runtime\t arrivaltime\t waittime\t cputime \n“);
printf(“作业名 \t 到达时间 \t 服务时间 \t 等待时间 \t 内存需要 \t 磁带机需要 \n“);
while(pr!=NULL)
{
printf(“|%s\t“pr->name);
printf(“|%d\t\t“pr->atime);
printf(“|%d\t\t“pr->ntime);
if(flag==2)
{
if(pr->atime {
pr->wtime++;
}
}
printf(“|%d\t\t“pr->wtime);
printf(“|%d\t\t“pr->size);
printf(“|%d\t\t“pr->ntape);
printf(“\n“);
pr = pr->link;
}
}
/*
*先来先服务算法的作业排序
*/
void FCFSJob(int tag JCB *jr)
{
JCB *first *second *readyJ;
JCB *jj*jjr=NULL;
int insert=0;
if(tag==1)
{
readyJ = ready;
}
else
{
jj = ready;
while(jj!=NULL&&jj->state==‘w‘)
{
jjr = jj;
jj = jj->link;
}
//jj指向输入井第一个jjr指向就绪队列第一个
readyJ = jj;
}
if(readyJ==NULL)
{ //队列为空,插入队首
if(tag==1||jjr==NULL)
{
j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 58 2018-01-14 02:07 代码\input.txt
文件 0 2018-01-15 21:56 代码\output.txt
文件 66141 2018-01-15 21:01 代码\TLS.c
文件 1142 2018-01-13 00:07 代码\TwoLevelScheduling.cbp
文件 56085 2018-01-15 21:01 代码\TwoLevelScheduling.exe
目录 0 2018-01-15 21:57 代码
----------- --------- ---------- ----- ----
123426 6
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
评论
共有 条评论