进程调度_wll

进程调度_wll

ID:37939333

大小:129.31 KB

页数:10页

时间:2019-06-03

进程调度_wll_第1页
进程调度_wll_第2页
进程调度_wll_第3页
进程调度_wll_第4页
进程调度_wll_第5页
资源描述:

《进程调度_wll》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机操作系统实验报告0915257吴龙龙进程调度实验1.实验目的a)熟悉进程调度的具体过程。b)理解在不同的进程调度算法下,如何实现进程调度。c)代码实现某一种进程调度算法下的进程调度的程序模拟。2.实验原理2.1进程调度:进程调度又称低级调度,它属于处理机调度的范畴,决定内存就绪队列中哪个进程将获得处理机,使其获得实实在在的执行。2.2进程调度算法1)非剥夺式优先权调度算法在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最

2、高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。2)基于时间片的多级反馈队列调度算法各就绪进程轮流运行一小段时间,这一小段时间称为时间片。在时间片内,如进程运行任务完成或因I/O等原因进入阻塞状态,该进程就提前让出CPU。当一个进程耗费完一个时间片而尚未执行完毕,调度程序就强迫它放弃处理机,使其重新插入到就绪队列末尾具体描述如图2-1所示图2-13.实验要求1)可随机输入若干进程,并按优先级排序;2)从就绪队列选择进程运行:优先权-1;要求运行时间-1;需要运行时间为0,撤销该进程;3)重新排序,进行下轮调度;

3、1/10计算机操作系统实验报告0915257吴龙龙4)最好采用图形界面5)可随时增加进程6)每次调度后,显示各进程状态4.实验分析我们选择基于时间片得多及反馈队列调度算法作为进程调度的实现算法。级数设为3.具体如图2-25.数据结构5.1PCB节点结构structPCB{intPID;charName[10];//进程名charstat;//进程状态intpri;//优先级,初始置1inttime;//完成进程所需时间};5.2PCB链结构structPCB_list{PCBdata;//数据域PCB_list*next;//指针域}*R_list

4、[N],*E_list,*Pcb;6.函数设计6.1用户选择菜单:voidmenu();6.2显示进程状态2/10计算机操作系统实验报告0915257吴龙龙voiddisplay(PCB_list*R_list[],PCB_list*E_list,PCB_list*Pcb)6.3创建进程int*allocation(inta[],datapart[]);6.4进程调度voidscheduling(PCB_list*R_list[],PCB_list*E_list,PCB_list*Pcb,intID[])7.数据测试案例:进程创建执行时间优先数时刻

5、(ms)P1033P2265P3441P4652P5824输出:3/10计算机操作系统实验报告0915257吴龙龙4/10计算机操作系统实验报告0915257吴龙龙8.结果分析数据测试通过基本实现功能,符合实验要求。9.代码附录#include#include#defineMAX100//PCB块的最大数量#defineN3intn_max=1;structPCB{intPID;charName[10];//进程名charstat;//进程状态intpri;//优先级inttime;//完成进程所需时间};st

6、ructPCB_list{PCBdata;PCB_list*next;}*R_list[N],*E_list,*Pcb;voidCreat(PCB_list*R_list[],PCB_list*Pcb,intID[])//创建进程{inti;PCB_list*s,*p,*q;if(ID[MAX]==MAX){printf("当前进程已满,无法再继续创建");}else{p=(PCB_list*)malloc(sizeof(PCB_list));p->next=NULL;for(i=1;i<=MAX;i++){if(ID[i]==0){ID[i]

7、=i;p->data.PID=i;break;}}printf("请输入进程名(字符串型):");scanf("%s",p->data.Name);printf("请输入进程所需时间(整数型):");5/10计算机操作系统实验报告0915257吴龙龙scanf("%d",&p->data.time);p->data.stat='R';p->data.pri=1;if(Pcb->data.PID==0){Pcb->data=p->data;Pcb->data.stat='G';}else{if(Pcb->data.pri!=1){q=(PCB_lis

8、t*)malloc(sizeof(PCB_list));q->next=NULL;q->data=Pcb->data;Pc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。