操作系统处理机调度实验报告.docx
- 文档编号:4127966
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:14
- 大小:16.95KB
操作系统处理机调度实验报告.docx
《操作系统处理机调度实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统处理机调度实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
操作系统处理机调度实验报告
处理机调度算法实验报告
学号
姓名
时间
专业
班级
实验题目:
处理机调度算法
一、实验目的
在了解操作系统的基础上全面了解处理机调度算法的实现以及过程,详细了解处理机调度算法的机制,充分了解调度的过程及状态,采用优先数法进程调度算法来模拟演示进程调度
二、实验内容与步骤:
1.了解进程的三种状态状态:
ready、running、finish
2.了解进程需要的CPU时间以时间片为单位确定
3.编写一段程序
#include
#include
#defineP_NUM5
#defineP_TIME50
enumstate{
ready,
execute,
block,
finish
};
structpcbb{
charname[4];
intpriority;
intcputime;
intneedtime;
intcount;
enumstateprocess;
structpcbb*next;
};
typedefstructpcbbpcb;
voiddisplay_menu(){
printf("CHOOSETHEALGORITHM:
\n");
printf("1PRIORITY\n");
printf("2ROUNDROBIN\n");
printf("3EXIT\n");
}
pcb*get_process(){
pcb*q;
pcb*p;
pcb*t;
inti=0;
printf("inputnameandtime\n");
while(i q=(pcb*)malloc(sizeof(pcb)); scanf("%s",q->name); scanf("%d",&q->needtime); q->cputime=0; q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if(i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; } returnp; } voidfree_process(pcb*p){ pcb*q; while(p! =NULL){ q=p; p=p->next; free(q); } } voiddisplay(pcb*p){ printf("namecputimeneedtimeprioritystate\n"); while(p){ printf("%s",p->name); printf(""); printf("%d",p->cputime); printf(""); printf("%d",p->needtime); printf(""); printf("%d",p->priority); printf(""); switch(p->process){ caseready: printf("ready\n");break; caseexecute: printf("execute\n");break; caseblock: printf("block\n");break; casefinish: printf("finish\n");break; } p=p->next; } } intprocess_finish(pcb*q){ intb1=1; while(b1&&q){ b1=b1&&q->needtime==0; q=q->next; } returnb1; } voidcpuexe(pcb*q){ pcb*t=q; inttp=0; while(q){ if(q->process! =finish){ q->process=ready; if(q->needtime==0){ q->process=finish; } } if(tp =finish){ tp=q->priority; t=q; } q=q->next; } if(t->needtime! =0){ t->priority-=3; t->needtime--; t->process=execute; t->cputime++; } } voidpriority_cal(){ pcb*p; p=get_process(); intcpu=0; while(! process_finish(p)){ cpu++; printf("cputime: %d\n",cpu); cpuexe(p); display(p); sleep (2); } free_process(p); printf("Allprocesseshavefinished\n"); } pcb*get_process_round(){ pcb*q; pcb*p; pcb*t; inti=0; printf("inputnameandtime\n"); while(i q=(pcb*)malloc(sizeof(pcb)); scanf("%s",q->name); scanf("%d",&q->needtime); q->cputime=0; q->count=0; q->process=ready; q->next=NULL; if(i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; } returnp; } voidcpu_round(pcb*q){ if(q->needtime==1) q->cputime++; else q->cputime+=2; q->needtime-=2; if(q->needtime<0){ q->needtime=0; } q->count++; q->process=execute; } pcb*get_next(pcb*k,pcb*head){ pcb*t; t=k; do{ t=t->next; }while(t&&t->process==finish); if(t==NULL){ t=head; while(t->next! =k&&t->process==finish){ t=t->next;}} returnt;} voidset_state(pcb*p){ while(p){ if(p->needtime==0){ p->process=finish; } if(p->process==execute){ p->process=ready;} p=p->next;}} voiddisplay_round(pcb*p){ printf("namecputimeneedtimecountstate\n"); while(p){ printf("%s",p->name); printf(""); printf("%d",p->cputime); printf(""); printf("%d",p->needtime); printf(""); printf("%d",p->count); printf(""); switch(p->process){ caseready: printf("ready\n");break; caseexecute: printf("execute\n");break; caseblock: printf("block\n");break; casefinish: printf("finish\n");break;} p=p->next;}} voidround_cal(){ pcb*p; pcb*r; p=get_process_round(); intcpu=0; r=p; while(! process_finish(p)){ if(r->needtime==1) cpu+=1; else cpu+=2; cpu_round(r); r=get_next(r,p); printf("cputime: %d\n",cpu); display_round(p); set_state(p); sleep (2);} free_process(p);} main(){ display_menu(); intk; scanf("%d",&k); switch(k){ case1: priority_cal();break; case2: round_cal();break; case3: break; default: printf("YOUHAVENOTCHOOSEANYALGORITHM! \n"); } } 运行后结果如下: [root@rhel5hbzy~]#gcc-ochulijichuliji.c [root@rhel5hbzy~]#./m CHOOSETHEALGORITHM: 1PRIORITY 2ROUNDROBIN 3EXIT 1 inputnameandtime jing2 aaaa8 bbbb5 ffff4 ggg6 cputime: 1 namecputimeneedtimeprioritystate jing-1145execute aaaa*0842ready bbbb20050finish ffff20050finish ggg0644ready rtyucputime: 2 namecputimeneedtimeprioritystate jing*2042execute aaaa*0842ready bbbb20050finish ffff20050finish ggg0644ready 5cputime: 3 namecputimeneedtimeprioritystate jing*2042finish aaaa*0842ready bbbb20050finish ffff20050finish ggg1541execute 2cputime: 4 namecputimeneedtimeprioritystate jing*2042finish aaaa'1739execute bbbb20050finish ffff20050finish ggg1541ready cputime: 5 namecputimeneedtimeprioritystate jing*2042finish aaaa'1739ready bbbb20050finish ffff20050finish ggg2438execute cputime: 6 namecputimeneedtimeprioritystate jing*2042finish aaaa$2636execute bbbb20050finish ffff20050finish ggg2438ready cputime: 7 namecputimeneedtimeprioritystate jing*2042finish aaaa$2636ready bbbb20050finish ffff20050finish ggg3335execute cputime: 8 namecputimeneedtimeprioritystate jing*2042finish aaaa! 3533execute bbbb20050finish ffff20050finish ggg3335ready cputime: 9 namecputimeneedtimeprioritystate jing*2042finish aaaa! 3533ready bbbb20050finish ffff20050finish ggg4232execute cputime: 10 namecputimeneedtimeprioritystate jing*2042finish aaaa4430execute bbbb20050finish ffff20050finish ggg4232ready cputime: 11 namecputimeneedtimeprioritystate jing*2042finish aaaa4430ready bbbb20050finish ffff20050finish ggg5129execute cputime: 12 namecputimeneedtimeprioritystate jing*2042finish aaaa_5327execute bbbb20050finish ffff20050finish ggg5129ready cputime: 13 namecputimeneedtimeprioritystate jing*2042finish aaaa_5327ready bbbb20050finish ffff20050finish ggg6026execute cputime: 14 namecputimeneedtimeprioritystate jing*2042finish aaaa_6224execute bbbb20050finish ffff20050finish ggg6026finish 3 cputime: 15 namecputimeneedtimeprioritystate jing*2042finish aaaa_7121execute bbbb20050finish ffff20050finish ggg6026finish cputime: 16 namecputimeneedtimeprioritystate jing*2042finish aaaa_8018execute bbbb20050finish ffff20050finish ggg6026finish Allprocesseshavefinished [root@rhel5hbzy~]#rtyu2 bash: rtyu2: commandnotfound [root@rhel5hbzy~]#3 bash: 3: commandnotfound 三、分析与体会 多道程序设计中,通常是若干个进程同时处于就绪状态,必须依照某种策略来决定哪个进程优先占有处理机。 因而引起进程调度。 本实验模拟单处理机情况下的处理机调度问题,使我加深了对进程调度的理解。 通过本次试验,使我加深了对进程调度的具体细节的理解,掌握LINUX系统结构、实现处理机和各种典型的算法,系统了解了操作系统的设计和实验思路,动手能力更强了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 处理机 调度 实验 报告