动态优先权调度算法C语言实现,(江湖救急)实验: 动态优先权的进程调度算法的模拟...

这段代码实现了一个简单的优先级调度算法模拟,通过结构体pcb表示进程,并进行状态转换,包括就绪、阻塞和结束状态。算法根据优先级调整进程执行顺序,并更新CPU时间。程序展示了进程状态和各种时间参数的变化。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//转载请注明原作者

程序源码:

/*sample code for priority thread attemper

by chaO

2007.10.22

*/

#include 

#include 

int i;//循环值

int j;//还在阻塞或就绪队列中的进程数

int s;

int m;//最大priority的id

struct pcb

{

int id;

int p; //priority

int cputime;

int alltime;

int startblock;

int blocktime;

int state; //0 表示ready 1表示end -1表示block

};

struct pcb pro[5]={

{0,9,0,3,2,3,0},

{1,38,0,3,-1,0,0},

{2,30,0,6,-1,0,0},

{3,29,0,3,-1,0,0},

{4,0,0,4,-1,0,0}

};

int changestate0()

{ if(pro[0].startblock==0)

{

pro[0].state=-1;

pro[0].startblock--;

return 1;

}

if(pro[0].blocktime==0)

{

pro[0].state=0;

return 1;

}

if(pro[0].state==0&&pro[0].startblock!=-1)

{pro[0].startblock--;return 1;}

if(pro[0].state==-1&&pro[0].blocktime!=0)

{pro[0].blocktime--;return 1;}

}

int state0()

{

changestate0();

s=pro[0].p;

if(pro[0].state==-1)

s=-100;

return s;

}

int maxp()//求出最大priority

{ state0();

int max=s;

m=pro[0].id;

for(i=0;i

{

if(pro[i+1].p>pro[i].p)

{

max=pro[i+1].p;

m=pro[i+1].id;

}

}

return m;

}

void change()

{

maxp();

int x;//得到m现在的数组编号

for(i=0;i

{

pro[i].p++;

}

for(i=0;i

{

if(pro[i].id==m)

x=i;

}

pro[x].cputime++;

pro[x].p=pro[x].p-4;

pro[x].alltime--;

if(pro[x].alltime==0)

{

pro[x].state=1;

}

}

void display()

{

change();

cout<

cout<

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

for(i=0;i

{

cout.width(10);

cout<

}

cout<

}

void main()

{

j=5;//刚开始有5个进程

while(j!=0)

{

for(i=0;i

{

if(pro[i].state==1){

for(;i

{pro[i]=pro[i+1];}

j=j-1;}

}

display();

getchar();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值