• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: c++  

资源简介

试验名称:进程调度模拟算法 试验内容:设计一个有N个进程并行的进程调度程序。 调度算法:采用最高优先数优先的调度算法。每个进程由一个进程控制块(PCB)表示。进程控制块可以包含以下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间,进程状态等。

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “conio.h“
#define getpch(type)(type*)malloc(sizeof(type))
#define NULL 0
struct  pcb
{
char name[20];
char state;
int super;
int ntime;
int rtime;
struct pcb *link;
}*ready=NULL*p;
typedef struct pcb PCB;

void sort()     /*  建立对进程进行优先级排列函数 */
{
PCB *first*second;
int insert=0;
if ((ready==NULL)||(p->super)>(ready->super))
{
p->link=ready;
ready=p;
}
else
{
first=ready;
second=first->link;
while (second!=NULL)
{
if ((p->super)>(second->super))
{
p->link=second;
first->link=p;
second=NULL;
insert=1;

else
{
first=first->link;
second=second->link;
}
}
if (insert==0)
{
first->link=p;
}
}
}

void input()   /*  建立进程控制块函数 */
{
int  inum;
printf(“\n请输入进程个数“);
scanf(“%d“&num);
for ( i=0;i {
printf(“\n进程号NO. %d:\n  “i);
p=getpch(PCB);
printf(“\n请输入进程名“);
    scanf(“%s“p->name);
printf(“\n请输入进程优先数“);
    scanf(“%d“&p->super);
printf(“\n请输入进程运行时间“);
    scanf(“%d“&p->ntime);
printf(“\n“);
p->rtime=0;p->state=‘w‘;
p->link=NULL;
sort();

}
}

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 super \t ntime \t runtime \n“);
printf(“|%s \t“pr->name);
printf(“|%c \t“pr->state);
printf(“|%d \t“pr->super);
printf(“|%d \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;
}
}

destroy()   /*  建立进程撤销函数,进程运行结束,撤销进程 */
{
printf(““p->name);
free(p);
}

void running()   /*  建立进程就绪函数 ,进程运行时间到,置就绪状态*/
{
(p->rtime)++;

if (p->rtime==p->ntime)
{
destroy();

else
{
(p->super)--;
p->state=‘w‘;
sort();
}
}

void  main()      /*  主函数 */
{
int lenh=0;
char ch;
input();
len=space();
while ((len!=0)&&(ready!=NULL))
{
ch=getchar();
h++;
printf(“\n The execute number:%d“h);
p=ready;
ready=p->link;
p->link=NULL;
p->state=‘R‘;
check();
running();
printf(“\n请按任意键继续。。。。“);
ch=getchar();
}
printf(“\n\n进程已经完成。\n“);
ch=getchar();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      45056  2009-10-19 22:40  进程调度模拟算法\试验名称.进程调度模拟算法.doc

     文件       2592  2009-10-19 18:26  进程调度模拟算法\ProcessDisp.cpp

     目录          0  2009-10-27 19:10  进程调度模拟算法

----------- ---------  ---------- -----  ----

                47648                    3


评论

共有 条评论