首页 进程调度算法模拟

进程调度算法模拟

举报
开通vip

进程调度算法模拟操作系统实验报告 姓 名: 班 级: 学 号: 指导教师: 实验一 进程调度算法模拟,用动态优先数及时间片轮转法 实现进程调度 一.实验内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程 二.实验要求: ① 进程数不少于5个; ② 进程调度算法任选; 最好选用动态优先数法,每运行一个时间片优先数减3 ③ 用C++(或C)语言编程; ④ 程序运行时显示进程调度过程。 三.实验步骤: ① 设计PCB及其数据结构: struct pcb {...

进程调度算法模拟
操作系统实验报告 姓 名: 班 级: 学 号: 指导教师: 实验一 进程调度算法模拟,用动态优先数及时间片轮转法 实现进程调度 一.实验内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程 二.实验要求: ① 进程数不少于5个; ② 进程调度算法任选; 最好选用动态优先数法,每运行一个时间片优先数减3 ③ 用C++(或C)语言编程; ④ 程序运行时显示进程调度过程。 三.实验步骤: ① 设计PCB及其数据结构: struct pcb { /* 定义进程控制块PCB */ char name[10]; char state; int super; int ntime; int rtime; struct pcb* link; } *ready=NULL,*p; typedef struct pcb PCB; ② 设计进程就绪队列及数据结构; 三个应用队列: PCB *ready=NULL,*run=NULL,*finish=NULL; ③ 设计进程调度算法,并画出程序流程图; Y N N Y Y N N Y Y N N Y ④ 设计输入数据和输出格式; 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 ⑤ 编程上机,验证结果。 源程序代码如下: #include void main(){ int a[4][5]={{0,1,2,3,4},{9,38,30,29,0},{0,0,0,0,0},{3,3,6,3,4}}; int a1[5],a0[5],a2[5],num; printf("当前系统中有5个进程,其初始状态如下:\n\n"); for(int i=0;i<4;i++){ if(i==0) printf("ID "); if(i==1) printf("PRIORITY "); if(i==2) printf("CPUTIME "); if(i==3) printf("ALLTIME "); for(int j=0;j<5;j++){ printf("%5d ",a[i][j]); } printf("\n"); } printf("STATE ready ready ready ready ready"); for(;;){ for(i=0;i<5;i++){ a0[i]=a[1][i]; } for(i=0;i<5;i++){ for(int j=0;j<5-1;j++){ if(a0[j]<=a0[j+1]){ num=a0[j]; a0[j]=a0[j+1]; a0[j+1]=num; } } } //a0数组为排列好的优先极 for(int j=0;j<5;j++){ a2[j]=a[1][j]; } for(i=0;i<5;i++){ for(int j=0;j<5;j++){ if(a0[i]==a2[j]){ a1[i]=j; a2[j]=-10; break; } } } a[1][a1[0]]-=3; a[2][a1[0]]+=1; a[3][a1[0]]-=1; printf("\n"); if(a[3][a1[0]]<=0){ a[1][a1[0]]=-3; } int ji=0; for(i=0;i<5;i++){ ji+=a[3][i]; } printf("\n当前运行程序为:%d\n当前就绪队列: ",a1[0]); for(i=1;i<5;i++){ if(a[1][a1[i]]>=0) printf("%d ",a1[i]); } if(ji<=0)break; printf("\n\n程序正在运行中..."); } printf("\n\n当前程序已全部运行完毕\n"); } 实验结果: 四.实验总结: (1)本次试验后对优先数调度算法和时间片轮转调度算法实现 的过程,有了很清楚的认识、理解。设计计数器来对进程执行状 态的时间 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,使得进程调度这一抽象模型得到具体化。之后, 便是对进程的插入(执行完,插入到完成队列,否则插入到就绪) 和再次调度(当改进程再次满足条件时,从就绪队列调度到执行 队列)重复过程。 (2)通过设计 PCB 结构,模拟进程调度,加深了对进程的理解。 (3)提高了 C 语言编程动手能力,在设计就绪队列时,通过优 先数将新进程插入就绪队列中的适当位置。要做多重判断,但实际又是“链表插入”模型的运用,这感觉很爽,无论多复杂的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,都可以分化成简单的问题在已有的模型上处理。 输入开始进程数n 创建n个PCB并加入ready-queue中 ready-queue是否为空 Running<=id Running<=逐个将redy_pc中的PCB 阻塞Running Running=idle 将Running从ready_queue中删除,再将running加入block_queueb 更新新进程就绪队列进程优先数,优先数加1 是否创建新PCB 创建新进程并加入到ready_queue中 随机 对block_queue中的进程PCB询问是否要唤醒? 处理完了吗 是否要唤醒 将其从blick_queuek队列是中删除,再将其加入ready_queuek
本文档为【进程调度算法模拟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_325273
暂无简介~
格式:doc
大小:84KB
软件:Word
页数:7
分类:互联网
上传时间:2012-08-09
浏览量:36