操作系统源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio、h>
#include<time、h〉
#include
int memoryStartAddress= -1;
int memorySize =—1;
struct jobList
{
int id;/*作业ID */
intsize;/*作业大小(需要得存储空间大小)*/
intstatus;
/*作业状态0: newjob ,1 :in the memory ,2:finished、*/
structjobList *next;/* 作业链表指针*/
};
structfreeList
{
intstartAddress; /*分区起始地址*/
ﻩintsize;/* 分区大小*/
struct freeList *next;/* 分区链表指针*/
};
struct usedList
{
int startAddress;/* 分区起始地址*/
int jobID; /*分区中存放作业ID*/
structusedList *next;/*分区链表指针*/
};
void errorMessage(void)/*出现严重错误时显示信息并结束程序*/
{
ﻩprintf("\n\tError !\a”);
printf(”\nPress any keyto exit !”);
ﻩgetch();
ﻩexit(1);
}
void open **fp,char* *mode)
/*以要求得方式打开文件*/ {
ﻩif((*fp=fopen())==NULL)
ﻩprintf(”\nCan't open%s in mode %s、",);
ﻩerrorMessage();
}
}
void makeFreeNode(structfreeList **empty,int startAddress,in tsize)
/*根据参数startAddress、size创建空闲节点,由empty指针返回*/
{
ﻩif((*empty= malloc(sizeof(struct freeList)))== NULL)
ﻩ{
ﻩprintf("\nNot enough toallocatefor the freenode 、”); ﻩﻩerrorMessage();
}
ﻩ(*empty)—>startAddress =startAddress;
ﻩ(*empty)-〉size= size;
(*empty)-〉next = NULL;
}
void iniMemory(void) /*初始化存储空间起始地址、大小*/
{
ﻩchar MSA[10],MS[10];
ﻩprintf(”\nPlease input the start address ofthe memory!");ﻩscanf(”%s”,MSA);
ﻩmemoryStartAddress= atoi(MSA);
ﻩprintf(”\nPleaseinputthesize ofthe memory !”);
scanf(”%s",MS);
memorySize= atoi(MS);
}
char selectFitMethod(void) /*选择适应算法*/
{
ﻩFILE*fp;
char fitMethod;
ﻩdo{
ﻩprintf(”\n\nPlease input a char as fallow toselect the fit method!\
ﻩﻩﻩ\n 1(Best fit)\
ﻩ\n 2 (Worst fit) \
ﻩ\n 3 (First fit) \
ﻩ\n 4 (Last fit)\n");
}while(fitMethod < '1'||fitMethod >'4’);
open,”d:\\result、cl","a");
ﻩswitch(fitMethod)
{
case ’1’:
ﻩﻩfprintf(fp,”\n\n\n\n\tBest fit”);
ﻩfprintf(fp,"\n**********************************************”);
ﻩbreak;
ﻩﻩcase'2’:
ﻩﻩfprintf(fp,”\n\n\n\n\tWorstfit”);
fprintf(fp,"\n**********************************************");
ﻩbreak;
ﻩ case’3':
fprintf(fp,”\n\n\n\n\tFirstfit");
fprintf(fp,”\n**********************************************”);
ﻩbreak;
ﻩ case'4':fprintf(fp,”\n\n\n\n\tLast fit”);
ﻩfprintf(fp,"\n**********************************************”);
ﻩbreak;
}
ﻩfclose(fp);
ﻩreturn fitMethod;
}
voidinputJob(void) /*从键盘输入作业到D盘得JOB文件*/
{
int /*id,size,*/status=0,jobnum= 0;
ﻩFILE *fp;
char id[10],size[10];
ﻩopen,"d:\\job、cl”,"w”);
fprintf(fp,”job_ID\tsize\tstatus");
ﻩprintf("\n\n\n\nPlease input the jobs asfallow !\ \nEnter a integer smallerthan 1 to quit 、\njob_ID\tsize\n");
ﻩdo{
/*ﻩscanf("%d%d”,&id,&size); */