操作系统时间片轮转法进行CPU调度Word下载.docx

上传人:b****6 文档编号:17497302 上传时间:2022-12-06 格式:DOCX 页数:11 大小:163.94KB
下载 相关 举报
操作系统时间片轮转法进行CPU调度Word下载.docx_第1页
第1页 / 共11页
操作系统时间片轮转法进行CPU调度Word下载.docx_第2页
第2页 / 共11页
操作系统时间片轮转法进行CPU调度Word下载.docx_第3页
第3页 / 共11页
操作系统时间片轮转法进行CPU调度Word下载.docx_第4页
第4页 / 共11页
操作系统时间片轮转法进行CPU调度Word下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

操作系统时间片轮转法进行CPU调度Word下载.docx

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

操作系统时间片轮转法进行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--------------------------------"

七、运行示例及结果分析

八、心得体会

为期一周半的课程设计结束了,这次课程设计是对学习《操作系统》的一次综合考察,锻炼我们综合分析问题、解决问题的能力。

试验过程中遇到好多的难题,比如在这一周半时间里有三门考试,都没有什么时间来做课程设计,考试结束都礼拜3了,其实只有礼拜四一天的时间。

一天的时间做一个课程设计也真是勉为其难。

这就不免会到网上寻求答案。

这次课程设计是用C++语言编写,C++已经有一年半没摸了,在试验过程中再次捧起C++的课本和资料。

在和同学的合作和自己努力下,终于把试验给搞定。

虽然还有代码看不明白。

但我相信如果给我一周半时间我肯定能把时间片轮转算法给搞定。

总的说来知识上的收获很是重要,精神上的丰收也是更加可喜的,让我知道了学无止境的道理。

我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。

挫折是一份财富,经历是一份拥有。

这次课程设计必将成为我人生旅途上一个非常美好的回忆。

九、参考资料

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

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

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

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

《操作系统实验教程》。

清华大学出版社,2006

[3].谭浩强。

《C++程序设计》。

清华大学出版社,2006

..

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

当前位置:首页 > 高中教育 > 高中教育

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

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