按优先数调度算法实现处理机调度C++程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

using namespace std;

struct PCB

{

char Name; //进程名

float Time; //要求运行时间

int Level; //优先数

bool state; //状态,1表就绪

PCB *next; //指针

};

void Init(PCB *head)

{

int num;

PCB *s,*p;

cout<<"请输入进程数";

cin>>num;

for(int i=0;i

{

p=head;

s=new PCB;

cout<<"请依次输入进程名要求运行时间优先数";

cin>>s->Name>>s->Time>>s->Level;

if(s->Time>0)

{

s->state =1;

while(p->next)

{

if(s->Level >p->next->Level )break;

p=p->next ;

}

s->next=p->next;

p->next=s;

}

else

{

s->state =0;

cout<<"此进程要求运行时间时间不符合要求,不添加入进程列表";

}

}

}

int Run(PCB *head)

{

PCB *cur,*p;

p=head;

cur=p->next;

p->next =cur->next;

cur->Level--;

cur->Time--;

cout<<"此次执行的进程信息(执行后):进程名";

cout<Name<<"剩余时间"<Time<<"优先数"<Level;

if(cur->Time<=0)

{

cout<<"状态为完成态"<

delete cur;

}

else

{

cout<<"状态为就绪态"<

while(p->next)

{

if(cur->Level >p->next->Level )break;

p=p->next ;

}

cur->next=p->next;

p->next=cur;

}

cout<<"此次执行后的进程列表序列为:";

p=head;

while(p->next)

{

cout<next->Name<<" ";

p=p->next ;

}

cout<

}

int main()

{

PCB *Head;

Head=new PCB;

Head->next =NULL;

Init(Head);

while(Head->next )

{

Run(Head);

}

return 0;

}

相关文档
最新文档