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

📄 tangprocess.c

📁 操作系统实验源代码 用C++写的 包括 进程调度
💻 C
字号:
//jingchengdiaodu.cpp
#include  "stdio.h"
#include <stdlib.h>
#include <conio.h>
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0
struct pcb
{
	char name[10];
	char state;
//	int super;
	int ntime;
	int rtime;
	struct pcb*link;
}*ready=NULL,*p;

typedef struct pcb PCB;

/***********************插入进程队列***********************/
void initp()
{   PCB *first,*second;
	if(ready==NULL)
	{
		p->link=ready;
		ready=p;
	}
	else
	{   first=ready;
		second=first->link;
		while(second!=NULL)
		{
			first=first->link;
			second=second->link;
		}
		first->link=p;		
	}
}
/********************建立进程块函数****************************/
void input()
{int i,num;
//clrsrc();
printf("\n请输入进程个数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{printf("\n进程号NO.%d:\n",i);
p=getpch(PCB);
printf("\n 输入进程名:");
scanf("%s",p->name);
printf("\n 输入进程的运行时间:");
scanf("%d",&p->ntime);
printf("\n");
p->rtime=0;
p->state='W';
p->link=NULL;
initp();
}
}

/*********************空间***************************/
int space()
{int l=0;
PCB *pr=ready;
while(pr!=NULL)
{l++;
pr=pr->link;
}
return(l);
}
/**********************建立进城显示函数,用于显示当前进城**************************/
void disp(PCB *pr)
{
printf("\n qname \t state \t ndtime \t runtime \n");
printf(" %s\t",pr->name);
printf(" %c\t",pr->state);
printf(" %d\t\t",pr->ntime);
printf(" %d\t",pr->rtime);
printf("\n");
}
/***********************建立进程查看函数*************************/
void check()
{PCB *pr;
printf("\n***当前的运行进进程是:%s",p->name);
disp(p);
pr=ready;
printf("\n***当前的就绪队列状态为:\n");
while(pr!=NULL)
{disp(pr);
pr=pr->link;
}
}
/********************建立进程撤销函数****************************/
void destroy()
{printf("\n 进程[%s]已经完成.\n",p->name);
free(p);
}
/*********************建立进程就绪函数***************************/
void running(int tpit)
{
int k=0;
while((k<tpit)&&(p->rtime<p->ntime))
{
	(p->rtime)++;
	 k++;
}
if(p->rtime==p->ntime) 
	destroy();
else
{
	p->state='W';
	initp();
}


}
/**********************主函数**************************/
void main ()
{int len,h=0;
 int tpit=0;
char ch;
input();
printf("输入时间片大小:");
scanf("%d",&tpit);
len=space();
while((len!=0)&&(ready!=NULL))
{ch=getchar();
h++;
printf("\n The execute number:%d\n",h);
p=ready;
ready=p->link;
p->link=NULL;
p->state='R';
check();
running(tpit);
printf("按任意键继续...");
ch=getchar();
}

printf("\n\n 进程已经完成.\n");
ch=getchar();
}

⌨️ 快捷键说明

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