




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程名称计算机操作系统实验名称进程及其管理班级学号姓名成绩指导教师赵安科实验日期2015年5月21日实验题目:进程及其管理实验内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程实验要求:①进程数不少于5个;②进程调度算法任选;最好选用动态优先数法,每运行一个时间片优先数减3③用C++(或C)语言编程;④程序运行时显示进程调度过程。四.实验步骤:①设计PCB及其数据结构:进程标识数:ID进程优先数:PRIORITY(优先数越大,优先级越高)进程已占用时间片:CPUTIME进程尚需时间片:ALLTIME(一旦运行完毕,ALLTIME为0)进程队列指针:NEXT,用来将PCB排成队列进程状态:STATE(一般为就绪,不用)②设计进程就绪队列及数据结构;③设计进程调度算法,并画出程序流程图;④设计输入数据和输出格式;结构格式:当前正运行的进程:0当前就绪队列:2,1,3,4⑤编程上机,验证结果。实验说明:假设调度前,系统中有5个进程,其初始状态如下:ID01234可否考虑用二维数组去实现PRIORITY93830290CPUTIME00000ALLTIME33634STATEreadyreadyreadyreadyready①以时间片为单位调度运行;②每次总是从ALLTIME中不为0,且PRIORITY最大的进程调度运行一个时间片;③上述进程运行后其优先数减3,再修改其CPUTIME和ALLTIME,重复②,③④直到所有进程的ALLTIME均变为0。程序中所用数据结构及说明:程序中定义了一个二维数组pc用于存储5个进程对应的属性,在程序动态执行的过程中随时修改各个进程对应的属性,直到所有进程消耗完时间片为止,同时为了更方便的了解进程执行的过程,添加了一个priority函数,用于动态的显示就绪队列进程的优先数(由大到小排列),以及对应的进程ID号,这样在程序执行的过程中,能清楚下一步该运行的就绪队列中的进程,更方便检查程序执行的过程中进程的调度是否有错误。程序清单及描述:#include<iostream.h>voidpriority(inta,intb,intc,intd,inta1,intb1,intc1,intd1);//根据优先数判断排列就绪队列的优先级及进程IDstructstu;//将优先数与对应的ID绑定intmain(void){ //id为进程的ID号,count为进程0消耗的时间片,count1为进程1消耗的时间片,count2为进程2消耗的时间片,count3为进程3消耗的时间片, //count4为进程4消耗的时间片,二维数组pc为5个进程对应的属性intid,count=0,count0=0,count1=0,count2=0,count3=0,count4=0,pc[5][5]={{0,1,2,3,4},{9,38,30,29,0},{0,0,0,0,0},{3,3,6,3,4},{1,1,1,1,1}}; while(pc[3][0]!=0||pc[3][1]!=0||pc[3][2]!=0||pc[3][3]!=0||pc[3][4]!=0)//循环终止的条件为所有进程的ALLTIME为0 { intmax=pc[1][0]; for(inti=0;i<5;i++) { if(pc[1][i]>=max&&pc[3][i]!=0)//将ALLTIME为0的进程排除掉 { max=pc[1][i];//将最大的优先数赋值给max id=i;//将对应的进程ID赋值给id } } switch(id)//获得进程ID号,对应的PRIORITY减3,CPUTIME加1,ALLTIME减1 { case0: { pc[1][0]-=3; pc[2][0]++; pc[3][0]--; cout<<"当前正在运行的进程ID为:"<<id<<endl;cout<<"当前进程已占用的时间片为:"<<++count0<<endl; priority(pc[1][1],pc[1][2],pc[1][3],pc[1][4],1,2,3,4); break; }case1: { pc[1][1]-=3; pc[2][1]++; pc[3][1]--; cout<<"当前正在运行的进程ID为:"<<id<<endl; cout<<"当前进程已占用的时间片为:"<<++count1<<endl; priority(pc[1][0],pc[1][2],pc[1][3],pc[1][4],0,2,3,4); break; } case2: { pc[1][2]-=3; pc[2][2]++; pc[3][2]--; cout<<"当前正在运行的进程ID为:"<<id<<endl; cout<<"当前进程已占用的时间片为:"<<++count2<<endl; priority(pc[1][0],pc[1][1],pc[1][3],pc[1][4],0,1,3,4); break; } case3: { pc[1][3]-=3; pc[2][3]++; pc[3][3]--; cout<<"当前正在运行的进程ID为:"<<id<<endl; cout<<"当前进程已占用的时间片为:"<<++count3<<endl; priority(pc[1][0],pc[1][1],pc[1][2],pc[1][4],0,1,2,4); break; } case4: { pc[1][4]-=3; pc[2][4]++; pc[3][4]--; cout<<"当前正在运行的进程ID为:"<<id<<endl; cout<<"当前进程已占用的时间片为:"<<++count4<<endl; priority(pc[1][0],pc[1][1],pc[1][2],pc[1][3],0,1,2,3); break; } } count++; } cout<<"5个进程总共运行的时间片数为:"<<count<<endl;//输出5个进程消耗的总的时间片 return0;}structstu//将优先数与对应的ID绑定{ inta; intb;};//修改冒泡法排序,绑定优先数与对应的IDvoidpriority(inta,intb,intc,intd,inta1,intb1,intc1,intd1)//根据优先数判断排列就绪队列的优先级及进程ID{ stus[4]={{a,a1},{b,b1},{c,c1},{d,d1}}; inti,j,t,w,flag=1; for(i=1;i<4&&flag==1;i++) { flag=0; for(j=0;j<3;j++) { if(s[j].a<s[j+1].a) { flag=1; t=s[j].a; w=s[j].b; s[j].a=s[j+1].a; s[j].b=s[j+1].b; s[j+1].a=t; s[j+1].b=w; } } } cout<<"当前就绪队列优先权(从大到小)排序为:"<<s[0].a<<","<<s[1].a<<","<<s[2].a<<","<<s[3].a<<endl; cout<<"当前就绪队列ID(按优先权从大到小)排序为:"<<s[0].b<<","<<s[1].b<<","<<s[2].b<<","<<s[3].b<<endl<<endl;}执行结果:说明:四个截图为19个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技背景下的心理健康教育与自我成长
- 科学育儿宝宝成长更健康
- 沙龙合作合同范本
- 科技发展对大学生学术研究的影响及展望
- 2025至2030年中国菊花香精数据监测研究报告
- 2025至2030年中国药品商标数据监测研究报告
- 安保行业劳保合同范本
- 2025至2030年中国船用柴油发动机数据监测研究报告
- 科技创新在商业领域的价值预测
- 2025年度酒吧会员体系及客户资源转让合同
- 中国传媒大学-主持人即兴口语训练-课件-1
- 【武汉版】生命安全教育五年级第19课《别让皮肤受伤害》教学设计
- 2022-2023学年上海市华东师范大学第一附属中学物理高一下期中联考试题含解析
- 台湾历届领导人和其大陆政策
- 2023届高考模拟作文“和而不同”导写及范文
- 2023年湖南高速铁路职业技术学院单招笔试职业技能考试题库及答案解析
- 结婚函调报告表
- 中智投资有限公司招聘笔试题库2023
- 2023年中智投资有限公司招聘笔试押题库
- FSC全套程序文件
- YY/T 0729.2-2009组织粘合剂粘接性能试验方法第2部分:T-剥离拉伸承载强度
评论
0/150
提交评论