实验二

实验二、pcb进程

专业 网络工程   姓名 方俊晖 学号 201406114309

一、        实验目的

通过本实验可以加深对有关进程控制块、进程队列的概念的进一步理解。

二、        实验内容和要求

     1.进程PCB的结构体定义

     2.定义结构体

     3.输入进程序列

     4.排序(按到位时间)

     5.输出进程运行的结果

三、        实验方法、步骤及结果测试

#include<stdio.h>
typedef struct PCB
{
int time;
int member;
int head;
int end;
}pcb;

void main()
{
int a,b,c,flag=0;
pcb i[10],j;
printf("请输入进程个数:");
scanf("%d",&a);
for( b=0;b<a;b++){
printf("请输入第%d个进程时间:",b+1);
scanf("%d",&b[i].time);
i[b].member=b+1;
i[b].head=i[b].end=0;
}
for(b=0;b<a;b++)
{
for(c=0;c<a;c++)
{
if(i[c].time>i[b].time)
{
j=i[b];
i[b]=i[c];
i[c]=j;
}

}}

for(b=0;b<a;b++)
{
for(c=0;c<=i[b].time;c++)
{
if(c==i[b].time)
{
i[b].head=flag;
i[b].end=flag=flag+c;
printf("进程名称:%d\n完成用时为:%d\n所需时间为:%d \n\n",i[b].member,c,flag);
}
}
}
for(b=0;b<a;b++)
{
printf("执行第%d个进程\n开始时间:%d\n结束时间:%d\n",i[b].member,i[b].head,i[b].end);
}

}

 

2.原理分析

主函数:实现对函数的运用

void main()
{
int a,b,c,flag=0;
pcb i[10],j;
printf("请输入进程个数:");
scanf("%d",&a);
for( b=0;b<a;b++){
printf("请输入第%d个进程时间:",b+1);
scanf("%d",&b[i].time);
i[b].member=b+1;
i[b].head=i[b].end=0;
}
for(b=0;b<a;b++)
{
for(c=0;c<a;c++)
{
if(i[c].time>i[b].time)
{
j=i[b];
i[b]=i[c];
i[c]=j;
}

}}

for(b=0;b<a;b++)
{
for(c=0;c<=i[b].time;c++)
{
if(c==i[b].time)
{
i[b].head=flag;
i[b].end=flag=flag+c;
printf("进程名称:%d\n完成用时为:%d\n所需时间为:%d \n\n",i[b].member,c,flag);
}
}
}
for(b=0;b<a;b++)
{
printf("执行第%d个进程\n开始时间:%d\n结束时间:%d\n",i[b].member,i[b].head,i[b].end);
}

}

定义结构体:

typedef struct PCB
{
int time;
int member;
int head;
int end;
}pcb;

 

 

实验结果:

实验总结

遇到问题:

长时间没有用过C++,对C++的运用不太灵活,对结构体的定义,因此在这过程中需要对PCB进程管理反复试验,才能完成。

 

posted @ 2016-04-13 22:49  学晖学习  阅读(206)  评论(0编辑  收藏  举报