linux下进程调度模拟程序,基于Linux进程调度模拟程序.doc

基于Linux进程调度模拟程序

河南中医学院

《linux操作系统》课程设计源码

题目:基于Linux的进程调度模拟程序

所在院系: 信息技术学院

专业年级: 2011级 计算机科学与技术

完成学生: 2011180062 孟XX

指导教师: 阮 XX

完成日期: 2011 年 06 月 22日

目 录

1.最高优先算法源码3

2.先来先服务源码8

1. 最高优先算法源码:

#include

#include

#include

#define getpch(type) (type*)malloc(sizeof(type))

#define nll 0 //定义nll的值为0

struct pcb { /* 定义进程控制块PCB */

char name[10]; //进程的名字

char state; //进程的状态

int super; //进程的优先级

int ntime; //进程需要运行时间

int rtime; //进程已用CPU时间

struct pcb* link;

}*ready=nll,*p;

typedef struct pcb PCB;

char sort() /* 建立对进程进行优先级排列函数*/

{

PCB *first, *second;

int insert=0;

if((ready==nll)||((p->super)>(ready->super)))

/*优先级最大者,插入队首*/

{

p->link=ready;

ready=p;

}

else /* 进程比较优先级,插入适当的位置中*/

{

first=ready;

second=first->link;

while(second!=nll)

{

if((p->super)>(second->super)) /*若插入进程比当前进程优先数大,*/

{ /*插入到当前进程前面*/

p->link=second;

first->link=p;

second=nll;

insert=1;

}

else /* 插入进程优先数最低,则插入到队尾*/

{

first=first->link;

second=second->link;

}

}

if(insert==0) first->link=p;

}

}

char input() /* 建立进程控制块函数*/

{

int i,num;

//clrscr(); /*清屏*/

printf ("\n 请输入被调度的进程数目:"); //其中\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=nll;

sort(); /* 调用sort函数*/

}

}

int space()

{

int l=0; PCB* pr=ready;

while(pr!=nll)

{

l++;

pr=pr->link;

}

return(l);

}

char disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/

{

printf ("\n qname \t state \t super \t ndtime \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");

}

char check() /* 建立进程查看函数 */

{

PCB* pr;

printf ("\n **** 当前正在运行的进程是:%s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值