进程调度算法设计实验报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程调度算法设计实验报告

进程调度算法的设计 实验题目: 实现时间片轮转调度算法(RR) 实验目的: 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 实验原理: 每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长 2.时间片轮转调度算法RR 时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 数据结构: 程序代码: package sufa; import java.util.Arrays; import java.util.Scanner; public class Dispatch { public static void main(String[] args){ int slice = 1; //时间片 System.out.println(请输入要创建的进程数目:); Scanner reader = new Scanner(System.in); int num = reader.nextInt(); //用户要输入的进程数 Process1 arr[] = new Process1[num]; //创建多个进程 System.out.println(请分别输入进程的名称、到达时间以及区间时间); for(int i=0; iarr.length; i++){ arr[i] = new Process1(); //得到用户输入的各值 } Arrays.sort(arr); //根据到达时间对进程数组排序 int time =arr[0].arrtime; //赋值为最先到达的进程的到达时间 System.out.println(-----开始进入FCFS算法-----); System.out.println( +arrtime+ +burstime+ +overtime+ +周转时间); for(int i =0; iarr.length; i++){ arr[i].overtime = arr[i].bursttime+time; //计算进程的结束时间 time = time +arr[i].bursttime; arr[i].turnovertime = arr[i].overtime - arr[i].arrtime; //计算进程的周转时间 System.out.println(进程+arr[i].id+开始运行+\t+arr[i].arrtime+\t+arr[i].bursttime+\t+arr[i].overtime+\t+arr[i].turnovertime); } int count = arr.length; System.out.println(-----开始进入RR算法-----); System.out.println( +lasttime); while(count0){ for(int i=0; iarr.length; i++) { if(arr[i].bursttime0){ //如果剩余区间还有时间 arr[i].bursttime=arr[i].bursttime-slice; //每循环运行一次就减去时间片,并打印下面语句 System.out.println(进程+

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档