os轮转算法c语言,OS时间片轮转调度算法.doc

时间片轮转调度算法

一.实验目的: 1)学习时间片轮转调度算法。

2)学习 C++程序设计的方法。

二.实验环境:

1)一台运行 Windows2000Professional操作系统计算机。

2)计算机中需要安装VisualC++6.0企业版。

三.实验内容:本实验主要是实现时间片轮转调度算法。

1)进入 VisualC++的窗口,新建一个 C++的文件,命名为 01.cpp.2)在源程序编辑窗口输入如下的源程序:

#include

#include

#include

usingnamespacestd;

intn;

classPCB

{

public:

intpri;// 进程优先数

intruntime;// 进程运行 CPU时间

intpieceOftime;// 轮转时间片

stringprocname;// 进程名

1 / 14

stringstate;// 进程状态

intneedOftime;// 还需要时间

intCounter;

PCB*next;

};

PCB*run=NULL;

PCB*ready=NULL;

PCB*finish=NULL;

PCB*tial=ready;

voidDtime(intt);

voidPrinft(inta)

{

if(a==1)

{

cout<

}

else

cout<

}

voidPrinft(intb,PCB*p)

2 / 14

{

if(b==1)

{

cout<procname<pri<needOftime<r untime<state<

}

else

cout<procname<runtime<needOftime<Counter<pieceOftime<state<

}

voiddisplay(intc)

{

PCB*p;

if(run!=NULL)/* 如果运行指针不空 */

Prinft(c,run);/* 输出当前正在运行的PCB*/

//Dtime(2);

p=ready;/* 输出就绪队列PCB*/

while(p!=NULL)

{

Prinft(c,p);

p=p->next;

}

3 / 14

//Dtime(2);

p=finish;/* 输出完成队列的PCB*/

while(p!=NULL)

{

Prinft(c,p);

p=p->next;

}

}

voidinsert(PCB*p)// 插入就绪队列按Pri 大小

{

PCB*S1,*S2;

if(ready==NULL)

{

p->next=NULL;

ready=p;

}

else

{

S1=ready;

S2=S1;

while(S1!=NULL)

4 / 14

{

if(S1->pri>=p->pri)

{

S2=S1;

S1=S1->next;

}

else

break;

}

if(S2->pri>=p->pri)

{

S2->next=p;

p->next=S1;

}

else

{

p->next=ready;

ready=p;

}

}

}

5 / 14

boolCTProcessOfPri()

{

PCB*Node;

cout<

cin>>n;

for(intj=0;j

{

Node=newPCB;

if(Node==NULL)

returnfalse;

else

{

cout<

cin>>Node->procname>>Node->needOftime;

Node->runtime=0;

Node->state="就绪 ";

Node->pri=Node->needOftime;

cout<procname<

}

insert(Node);

}

6 / 14

returntrue;

}

voi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值