查看: 4177| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 请教下关于round robin 和 SJF的问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
求哪位大神讲解一下这两道题的题目到底是什么养的 我在论坛里面发现了很多code但是没有题目 所以不知道这两道题到底想要我们求什么 请大神解释一下 如果可以每一题给1 2个例子方便理解就更好了!!非常感谢!!祝大家offer多多!

上一篇:Java try/catch 作为判断条件使用 求教
下一篇:求问一道google面试题,设计数据结构存储range
推荐
zkh1991 2016-1-7 12:55:54 | 只看该作者
全局:
http://www.tutorialspoint.com/operating_system/os_process_scheduling_algorithms.htm
我对OS完全不懂…看了上面的链接才理解了这些schedule 不过他举得例子好像不太好
维基百科这张图对wait time的解释比较形象
https://upload.wikimedia.org/wikipedia/commons/9/9f/Round-robin_schedule_quantum_3.png

那道题是输入几个process的arrival time 和 execution time, 返回average wait time。
一个process的 wait time = end time - arrival time - execution time

评分

参与人数 2大米 +9 收起 理由
1peter + 6 回答的很好!
atwoodwang0918 + 3 感谢分享!

查看全部评分

回复

使用道具 举报

🔗
polebearNK 2016-1-6 07:37:43 | 只看该作者
本楼:
全局:
同问。。。。
回复

使用道具 举报

🔗
1peter 2016-3-22 10:58:29 | 只看该作者
全局:
zkh1991 发表于 2016-1-7 12:55
http://www.tutorialspoint.com/operating_system/os_process_scheduling_algorithms.htm
我对OS完全不懂 ...

我觉得这个图不对啊,就p3而言,它应该被放到当时,也就是6s时刻的queue队尾,如果这样,P4~P10都应该在P1后面执行,而不是在之前。

从时间规律上也说不过去啊,在6s时,不可能知道后面是否还有process,只能把p1又放回队尾这一种选择
回复

使用道具 举报

🔗
Anonymous2011 2019-7-16 23:40:25 | 只看该作者
全局:
OA被问到这个题,当时写的不对,现在又重写了一遍,结果是2.333

  1. class RoundRobin
  2. {
  3.     public float avgTime(int num, List<Integer> arrivingTime, List<Integer> runningTime, int fixedTime)
  4.     {
  5.         if(num <= 0) return 0;
  6.         int waitingTime = 0, currIndex = 0, currTime = arrivingTime.get(currIndex);
  7.         Queue<Process> queue = new LinkedList<>();
  8.         queue.offer(new Process(arrivingTime.get(currIndex), runningTime.get(currIndex)));
  9.         while(!queue.isEmpty())
  10.         {
  11.             Process process = queue.poll();
  12.             waitingTime += currTime - process.endTime;
  13.             int currRunningTime = fixedTime;
  14.             if(process.remainingTime <= fixedTime) currRunningTime = process.remainingTime;
  15.             currTime += currRunningTime;
  16.             for(int i = currIndex+1; i < num; i++)
  17.             {
  18.                 if(arrivingTime.get(i) <= currTime)
  19.                 {
  20.                     queue.add(new Process(arrivingTime.get(i), runningTime.get(i)));
  21.                     currIndex++;
  22.                 }
  23.             }
  24.             if(process.remainingTime > fixedTime)
  25.             {
  26.                 process.endTime += fixedTime;
  27.                 process.remainingTime -= fixedTime;
  28.                 queue.offer(process);
  29.             }
  30.         }
  31.         return (float) waitingTime/num;
  32.     }

  33.     private class Process
  34.     {
  35.         public int endTime, remainingTime;

  36.         public Process(int endTime, int remainingTime)
  37.         {
  38.             this.endTime = endTime;
  39.             this.remainingTime = remainingTime;
  40.         }
  41.     }

  42.     public static void main(String[]args)
  43.     {
  44.         RoundRobin roundRobin = new RoundRobin();
  45.         List<Integer> arrivingTime = new ArrayList<>();
  46.         List<Integer> runningTime = new ArrayList<>();
  47.         arrivingTime.add(0); arrivingTime.add(1); arrivingTime.add(4);
  48.         runningTime.add(5); runningTime.add(2); runningTime.add(3);
  49.         double avg = roundRobin.avgTime(3, arrivingTime, runningTime, 3);
  50.         System.out.println(avg);
  51.     }
  52. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表