欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于java进程调度算法模拟程序的设计短作业优先先来先服务.doc

    • 资源ID:43069122       资源大小:243KB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于java进程调度算法模拟程序的设计短作业优先先来先服务.doc

    . . . . 华北科技学院计算机学院综合性实验实 验 报 告 课程名称 计算机操作系统 实验学期 2014 至 2015 学年 第 一 学期学生所在系部 计算机学院 年级 2012 专业班级 计科B121 学生 传辉 学号 7 任课教师 王祥仲 实验成绩计算机学院制操作系统课程综合性实验报告开课实验室: 基础六 2014 年 11月30日实验题目进程调度算法模拟程序设计一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。二、设备与环境1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。三、实验容(1) 用C语言(或其它语言,如Java)编程实现对N个进程采用某种进程调度算法(如动态优先权调度算法、先来先服务算法、短进程优先算法、时间片轮转调度算法)调度执行的模拟。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:² 进程标识数ID。² 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。² 进程已占用CPU时间CPUTIME。² 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。² 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。² 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。² 进程状态STATE。² 队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:² 进程在就绪队列中呆一个时间片,优先数增加1。² 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。代码:import java.io.BufferedReader;import java.io.InputStreamReader;public class FCFSANDSJF private static int i; private int j; private int temp; private int m; private int n; private int process_number; private int arrival_time; private int services_time; private int start_time; private int completion_time; private int turn_around_time; private double add1; private double add2; private double add3; private double add4; private double right_turn_around_time;private void FCFS() System.out.println("n=FCFS先来先服务算法="); System.out.println("n到达时间是:"); for(i=0;i<process_number;i+) System.out.print(arrival_timei+"t"); System.out.println("n服务时间是:"); for(i=0;i<process_number;i+) System.out.print(services_timei+"t"); System.out.println("n开始时间是:"); for(i=0;i<process_number;i+) ni=arrival_timei; mi=i; for(i=0;i<process_number-1;i+) for(j=i+1;j<process_number;j+) if(ni>nj) temp=ni; ni=nj; nj=temp; temp=mi; mi=mj; mj=temp; start_timem0=arrival_timem0; for(i=1;i<process_number;i+) if(arrival_timemi<start_timemi-1+services_timemi-1) start_timemi=start_timemi-1+services_timemi-1; else start_timemi=arrival_timemi; for(i=0;i<process_number;i+) System.out.print(start_timei+"t"); System.out.println("n完成时间是:"); for(i=0;i<process_number;i+) completion_timei=start_timei+services_timei; for(i=0;i<process_number;i+) System.out.print(completion_timei+"t"); System.out.println("n周转时间是:"); for(i=0;i<process_number;i+) turn_around_timei=completion_timei-arrival_timei; for(i=0;i<process_number;i+) System.out.print(turn_around_timei+"t"); add1=0; for(i=0;i<process_number;i+) add1=add1+turn_around_timei; System.out.println("n平均周转时间是:"+add1/process_number); System.out.println("n带权周转时间是:"); for(i=0;i<process_number;i+) right_turn_around_timei=turn_around_timei*1.0/services_timei; for(i=0;i<process_number;i+) System.out.print(right_turn_around_timei+"t"); System.out.println("n平均带权周转时间是:"); add2=0; for(i=0;i<process_number;i+) add2=add2+right_turn_around_timei; System.out.println(add2/process_number);private void SJF() System.out.println("n=SJF:短作业优先算法="); System.out.println("n到达时间是:"); for(i=0;i<process_number;i+) System.out.print(arrival_timei+"t"); System.out.println("n服务时间是:"); for(i=0;i<process_number;i+) System.out.print(services_timei+"t"); System.out.println("n开始时间是:"); m0=0; for(i=0;i<process_number-1;i+) if(arrival_timei>arrival_timei+1) m0=i+1; for(i=0;i<process_number;i+) ni=services_timei; mi+1=i; for(i=0;i<process_number-1;i+) for(j=i+1;j<process_number;j+) if(ni>nj) temp=ni; ni=nj; nj=temp; temp=mi+1; mi+1=mj+1; mj+1=temp; for(i=1;i<process_number+1;i+) if(m0=mi) for(j=i;j<process_number;j+) mj=mj+1; start_timem0=arrival_timem0; for(i=1;i<process_number;i+) if(arrival_timemi<start_timemi-1+services_timemi-1) start_timemi=start_timemi-1+services_timemi-1; else start_timemi=arrival_timemi; for(i=0;i<process_number;i+) System.out.print(start_timei+"t"); System.out.println("n完成时间是:"); for(i=0;i<process_number;i+) completion_timei=start_timei+services_timei; for(i=0;i<process_number;i+) System.out.print(completion_timei+"t"); System.out.println("n周转时间是:"); for(i=0;i<process_number;i+) turn_around_timei=completion_timei-arrival_timei; for(i=0;i<process_number;i+) System.out.print(turn_around_timei+"t"); add3=0; for(i=0;i<process_number;i+) add3=add3+turn_around_timei; System.out.println("n平均周转时间是:"+add3/process_number); System.out.println("n带权周转时间是:"); for(i=0;i<process_number;i+) right_turn_around_timei=turn_around_timei*1.0/services_timei; for(i=0;i<process_number;i+) System.out.print(right_turn_around_timei+"t"); System.out.println("n平均带权周转时间是:"); add4=0; for(i=0;i<process_number;i+) add4=add4+right_turn_around_timei; System.out.println(add4/process_number);public static void main(String args) throws Exception System.out.println("请输入进程数:"); FCFSANDSJF wo=new FCFSANDSJF(); BufferedReader buf=null; buf=new BufferedReader(new InputStreamReader(System.in); String str1=null; str1=buf.readLine(); wo.process_number=Integer.parseInt(str1); wo.arrival_time=new intwo.process_number; wo.services_time=new intwo.process_number; wo.start_time=new intwo.process_number+1; wopletion_time=new intwo.process_number+1; wo.turn_around_time=new intwo.process_number+1; wo.right_turn_around_time=new doublewo.process_number+1; wo.m=new intwo.process_number+1; wo.n=new intwo.process_number; String str=null; String str2=null; System.out.println("n请输入各进程到达时间"); for(i=0;i<wo.process_number;i+) str=buf.readLine(); wo.arrival_timei=Integer.parseInt(str); System.out.println("n请输入各个进程服务时间"); for(i=0;i<wo.process_number;i+) str2=buf.readLine(); wo.services_timei=Integer.parseInt(str2); System.out.println("该进程数为"+wo.process_number); System.out.println("n到达时间为"); for(i=0;i<wo.process_number;i+) System.out.print(wo.arrival_timei+"t"); System.out.println("n服务时间为:"); for(i=0;i<wo.process_number;i+) System.out.print(wo.services_timei+"t"); System.out.println("n=先来先服务0="); System.out.println("n=短作业优先1="); System.out.println("n=退出系统2="); String str3=null; str3=buf.readLine(); i=Integer.parseInt(str3); while(i!=2) switch(i) case 0: wo.FCFS(); break; case 1: wo.SJF(); break; default: System.out.println("n输入有误,请重新输入"); System.out.println("n=先来先服务0="); System.out.println("n=短作业优先1="); System.out.println("n=退出系统2="); str3=buf.readLine(); i=Integer.parseInt(str3); System.out.println("系统已退出!"); 四、 实验结果与分析运行结果分析FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进度调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后背作业队列中选择几个最先进入该队列的作业,将它们调入存,为它们分配资源和创建进程。然后把它放入就绪队列。SJF算法是以作业长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。SJF算法可以分别用于作业调度和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入存运行。教 师 评 价评定项目ABCD评定项目ABCD算确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规题解正确其他:评价教师签名:年 月 日14 / 15

    注意事项

    本文(基于java进程调度算法模拟程序的设计短作业优先先来先服务.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开