时间片轮转法进行CPU调度Word格式文档下载.docx

上传人:b****8 文档编号:22673837 上传时间:2023-02-05 格式:DOCX 页数:13 大小:163.88KB
下载 相关 举报
时间片轮转法进行CPU调度Word格式文档下载.docx_第1页
第1页 / 共13页
时间片轮转法进行CPU调度Word格式文档下载.docx_第2页
第2页 / 共13页
时间片轮转法进行CPU调度Word格式文档下载.docx_第3页
第3页 / 共13页
时间片轮转法进行CPU调度Word格式文档下载.docx_第4页
第4页 / 共13页
时间片轮转法进行CPU调度Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

时间片轮转法进行CPU调度Word格式文档下载.docx

《时间片轮转法进行CPU调度Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《时间片轮转法进行CPU调度Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

时间片轮转法进行CPU调度Word格式文档下载.docx

用户为每个程序设定一个要求运行时间和到达时间。

按照进程到达的先后顺序排成一个循环队列,再设一个队首指针指向第一个到达进程的首址。

进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示运行进程。

同时判断该进程剩余运行时间是否为零,不为零则等待下一轮的运行;

若该进程的剩余运行时间为零,则该进程完成,状态为C,并退出循环队列。

若就绪队列不为空,则重复以上步骤直到所有进程都运行完为止。

五、流程图

六、源程序

#include<

stdio.h>

stdlib.h>

iostream.h>

charX;

intstart;

typedefstruct{

charname[20];

intarrtime;

intruntime;

}DataType;

typedefstructnode{

DataTypepcb;

structnode*next;

}ListNode;

typedefListNode*LinkList;

LinkListhead;

voidcreate_insert_LinkList(intf1)

{

ListNode*p,*p1,*p2;

p=(ListNode*)malloc(sizeof(ListNode));

head=p;

p->

next=NULL;

while(f1>

0)

{

p=(ListNode*)malloc(sizeof(ListNode));

cout<

<

"

请输入以下数据:

\n"

;

cout<

进程名到达时间运行时间:

cin>

>

p->

pcb.name>

pcb.arrtime>

pcb.runtime;

endl;

p->

p1=head;

p2=p1->

next;

while(p2!

=NULL&

&

p2->

pcb.arrtime<

pcb.arrtime)

{

p1=p2;

p2=p2->

}

p1->

next=p;

next=p2;

f1=f1-1;

}

}

voidpcb_LinkList(intf2)

LinkListH;

ListNode*rear,*p,*q;

intT,t,time,m,n;

p=NULL;

H=p;

请输入时间片大小:

cin>

T;

t=T;

H=head->

head->

next=head->

next->

rear=H;

rear->

time=H->

pcb.arrtime;

while(f2!

=0)

n=0;

while(t!

{

t=t-1;

time=time+1;

if(head->

next!

=NULL)

{

if(head->

=time)

{

if(H==NULL)

{

H=head->

rear=H;

rear->

}

else

{

rear->

rear=rear->

}

}

if(H!

H->

pcb.runtime=H->

pcb.runtime-1;

m=1;

//该进程有被执行

n=n+1;

if(H->

pcb.runtime==0)//该进程服务完,从执行队列中删除

cout<

在第"

time-n<

秒"

进程名"

H->

pcb.name<

运行了"

n<

状态:

完成"

完成时间:

time<

H=H->

f2=f2-1;

m=0;

//新的队首未被执行;

n=0;

}

if(m==1)

cout<

正在执行"

if(H==NULL)

=NULL)time=head->

else

m==1&

n==T)//把未完成的进程插入到执行队列的队末

q=H;

H=H->

rear->

next=q;

rear=rear->

t=T;

/******************菜单函数****************/

voidMenu()

{

/***************菜单选项************/

charmenu;

”-----------------------------------------------------------------”<

cout<

”||||”<

”||**欢迎使用时间片轮转算法系统**||”<

”||菜单选项:

||”<

”||时间片轮转调度(Y/y)||”<

”||退出(Q/q)||”<

”||班级:

08计本

(2)||”<

”||姓名:

蔡春雨||”<

”||学号:

080303201||”<

-----------------------------------------------------------------"

请输入您的选择:

X;

switch(X)//菜单选项

case'

Y'

:

y'

start=1;

system("

cls"

);

****时间片轮转调度算法****"

break;

q'

Q'

exit(0);

break;

default:

输入错误!

按任意键退出!

voidmain()

system("

colorF4"

//改变背景色和字体颜色

Menu();

intf;

请输入进程个数:

f;

create_insert_LinkList(f);

pcb_LinkList(f);

运行完毕"

--------------谢谢您使用时间片轮转算法系统----------------------"

-------------------------蔡春雨---------------------------------"

-----------------------080303201--------------------------------"

}七、运行示例及结果分析

八、心得体会

为期一周半的课程设计结束了,在实践中我才真正的彻底了解了时间片轮转法的真正含义,发现原来课上听懂的到了实践中才发现那也是表面的,还好课程设计让我更加深入的了解了它,这也告诉我平时课上学习的东西应该在课后多加实践才能深入理解。

这次课程设计不仅让我操作系统课程得到了提升,更让我更多的了解了其他语言,让我发现学好一门语言是非常重要的。

也让我看到了团队合作的重要性和培养了我的细心和耐心,这对于程序的开发是很重要的。

而这次课程设计最让我遗憾的是没有合理安排好时间,之前花在研究和修改代码上的时间太多了,以至于没能完成最终的前台界面的设计,这也算是对我以后的课程设计的一个警告吧。

九、参考资料

[1].汤小丹,梁红兵,哲凤屏,汤子瀛。

《计算机操作系统(第三版)》。

西安电子科技大学出版社,2007

[2].张丽芬,刘利雄,王全玉。

《操作系统实验教程》。

清华大学出版社,2006

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1