⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lab.cpp

📁 处理机管理是操作系统中非常重要的部分。为深入理解进程管理部分的功能
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
/*定义进程控制块*/
typedef struct JCB      
{    
	char num[5];		//作业号
	char name[20];		//作业名
	char state;			//运行状态
	int  tijiaotime;	//提交作业时间
	int  starttime;		//作业开始时间
	int  finishtime;	//结束时间
	int  needtime;		//运行需要时间
	struct JCB *next;	//指向下个作业
}jcb;
int time=10000,n;       //计时器
jcb *head=NULL,*p,*q;


/*定义程序运行函数*/
void run_fcfo(jcb *p1)	
{
	time = p1->tijiaotime > time? p1->tijiaotime:time;
	p1->starttime=time;
	printf("\nNow Time:%d,StartProcessName:%s\n",time,p1->name);
	time+=p1->needtime;
	 p1->state='F';
	 p1->finishtime=time;
	printf("NAME starttime servicetime finishtime\n");
	printf("%s      %d       %d        %d ",p1->name,p1->starttime,p1->needtime,p1->finishtime);
}



/*定义fcfo函数*/
void fcfo()				
{
	int i,j,t; 
	for(j=0;j<n;j++)
	{
		 p=head; 
		t=10000;
		for(i=0;i<n;i++)  //找到当前未完成的作业
		{
			 if(p->tijiaotime<t && p->state=='W')
			{
				t=p->tijiaotime;
				q=p;    //标记当前未完成的作业
			}
			 p=p->next;
		}
		run_fcfo(q);
	}
 
}



/*创建进程*/
void getInfo()          
{
	int num;
	printf("\nPlease input the number of the process:");
	scanf("%d",&n);
	for(num=0;num<n;num++)
	{
		p=(jcb *)malloc(sizeof(jcb));
		if(head==NULL) {head=p;q=p;}
		printf("input:\nNUM,NAME,ARRIVE TIME,SERVICE TIME\n");
		scanf("%s\t%s\t%d\t%d",&p->num,&p->name,&p->tijiaotime,&p->needtime);
		if(p->tijiaotime < time) time=p->tijiaotime;
		q->next=p;
		p->starttime=0;
		p->finishtime=0;
		p->next=NULL;
		p->state='W';
		q=p;         
	}
}



/*主函数*/
void main()				
{
	printf("先来先服务算法模拟程序:");
	getInfo();
	fcfo();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -