欢迎来到天天文库
浏览记录
ID:57333031
大小:287.50 KB
页数:9页
时间:2020-08-12
《操作系统实验一-处理机调度算法的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、天津理工大学计算机与通信工程学院实验报告2013至2014学年第一学期课程名称操作系统学号学生姓名年级专业教学班号实验地点实验时间2013年11月21日第一节至月日第节主讲教师辅导教师实验(一)实验名称处理机调度算法的实现软件环境VC++6.0硬件环境IBM-PC或兼容机实验目的通过编写程序实现进程高优先权优先调度算法,使学生进一步掌握进程调度的概念和算法,加深对处理机分配的理解。实验内容(应包括实验题目、实验要求、实验任务等)实验题目:处理机调度算法的实现实验要求:学生应正确地设计有关的数据结构与各个功能模块,画出程序的流程图,编写程序,程序执行结果应正确。1、设定系统中有
2、五个进程,每一个进程用一个进程控制块表示。2、输入每个进程的“优先数”和“要求运行时间”。3、为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。4、处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。5、若要求运行时间为零,则将其状态置为“结束”,且退出队列。6、运行所设计程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。实验任务:实现处理机调度算法。实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)一、程序流程图:二、实验代码#
3、include#includeusingnamespacestd;#defineMAXSIZE10structPCB{intname;//进程名intpriority;//进程优先数inttime;//进程执行时间};structQueue_Process{PCBdata[MAXSIZE];//PCB队列intfront;//队首intrear;//队尾};voidInitQueue(Queue_Process*Q){Q->front=Q->rear=0;}boolIsQueueEmpty(Queue_ProcessQ)//队空判断函数{r
4、eturn(Q.front==Q.rear)?true:false;}boolIsQueueFull(Queue_ProcessQ)//队满判断函数{return(Q.front==(Q.rear+1)%MAXSIZE)?true:false;}voidEnQueue(Queue_Process*Q,PCBx)//入队函数{if(IsQueueFull(*Q))//判断队列是否为满{cout<<"队满,入队操作失败!"<data[Q->rear].name=x.name;Q->data[Q->rea
5、r].priority=x.priority;Q->data[Q->rear].time=x.time;Q->rear=(Q->rear+1)%MAXSIZE;//队列队尾指针后移}voidDeleQueue(Queue_Process*Q){if(IsQueueEmpty(*Q))//判断队列是否为空{cout<<"队空,出队操作失败!"<front=(Q->front+1)%MAXSIZE;//将队列首指针后移}voidSortPCB(PCB*pcb,intn)//PCB优先数大小从大到小排列函数{PCBtemp;boolexchang
6、e=true;//交换标志for(inti=n-1;i>0&&exchange;i--)//冒泡排序算法排序{exchange=false;for(intj=0;j
7、1].time;pcb[j+1].name=temp.name;pcb[j+1].priority=temp.priority;pcb[j+1].time=temp.time;exchange=true;}}}}voidInput(PCB*pcb,intn)//进程信息输入函数{cout<<"请输入每个进程的优先数和执行时间:"<>p>>t;pcb[i].name=i;pcb[i].priorit
此文档下载收益归作者所有