精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
计算机 学院 计算机科学与技术etpch(type) (type*)malloc(sizeof(type))/*用getpcb(type)给type类型的变量申请一个空间*/
struct pcb { /*定义进程控制块PCB */
char name[10]; /*进程名*/
char state; /*进程状态*/
int ntime; /*进程需要运行时间*/
int rtime; /*进程已经运行的时间*/
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
struct pcb *link; /*定义了一个指向pcb结构类型的指针link作为自己的成员函数*/
}*ready=NULL,*p; /*定义了两个指向pcb结构类型的指针ready和p ,ready的初值为空*/
typedef struct pcb PCB; /*定义PCB为struct pcb的别名*/
void sort() /*对进程进行轮转调度排列函数 */
{
PCB *first;
if(ready==NULL) /*如果就绪队列为空*/
{
ready=p; /*将新建进程放入就绪队列中,将ready指向队首进程 */
}
else /*就绪队列中有进程在等待,将新建进程插入到队尾 */
{
first=ready; /*first指针指向队首进程 */
while(first->link!=NULL) first=first->link; /*当first指针没有指向队尾时,指针后移 */
first->link=p;/*将P指向的进程插入队尾*/
}
}
void input() /*建立进程控制块函数*/
{
int i,num;
printf("\n输入进程个数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("\n进程号No.%d:\n",i);
p=getpch(PCB); /*给进程申请一个空间,并用指针p指向这个空间*/
printf("\n进程名字:");
scanf("%s",p->name); /*输入进程的名字 */
printf("\n 进程运行时间:");
scanf("%d",&p->ntime); /* 输入进程的运行时间*/
printf("\n");
p->rtime=0; /*进程已运行的时间的初值为0*/
p->state='w';
p->link=NULL; /*新建进程的指针域为空*/
sort(); /*调用sort1函数*/
}
}
int space() /*计算进程控制块个数的函数 */
{
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
int l=0; PCB* pr=ready; /* pr指向队首进程*/
while(pr!=NULL) /*pr为空,则说明计数完成*/
{
l++;
pr=pr->link; /* pr向下以一个进程*/
}
return(l);
}
void disp(PCB * pr)/*建立进程显示函数,用于显示使用FCFS算法的当前进程*/
{
printf("\n name \t state \t ntime rtime \n");
printf(" |%s\t",pr->name); /* 显示当前进程的进程名*/
printf(" |%c\t",pr->state); /*显示当前进程的状态 */
printf(" |%d\t",pr->ntime); /*显示当前进程的运行时间 */
printf(" |%d\t",pr->rtime); /* 显示当前进程的已运行时间 */
printf("\n");
}
void check() /*进程查看函数*/
{
PCB* pr;
printf("\n ***当前正在运行的进程是:%s",p->name);/*显示当前运行进程 */
disp(p); /*
操作系统进程调度实验报告(共19页) 来自淘豆网m.daumloan.com转载请标明出处.