范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

FCFS,SJF以及PSA进程调度算法的比较

  实现
  下面是用 Java 程序比较 FCFS,SJF 和 PSA 算法效率的示例代码:  FCFS思路
  对于 FCFS 算法,我们可以定义一个 Process 类来表示一个进程,其中包含进程名称、到达时间和执行时间三个属性。然后我们可以定义一个 FCFS 类,其中包含一个 ArrayList 来存储所有的进程,并实现调度算法的逻辑。  源码
  `  public class FCFS {     private ArrayList processList;      public FCFS(ArrayList processList) {         this.processList = processList;     }      public void schedule() {         // 按照进程的到达时间升序排序         Collections.sort(processList, (p1, p2) -> p1.arrivalTime - p2.arrivalTime); ​         int currentTime = 0;         int waitingTime = 0;         int turnaroundTime = 0; ​         for (Process p : processList) {             if (currentTime < p.arrivalTime) {                 currentTime = p.arrivalTime;             }             waitingTime += currentTime - p.arrivalTime;             turnaroundTime += currentTime - p.arrivalTime + p.executionTime;             currentTime += p.executionTime;         } ​         double averageWaitingTime = (double) waitingTime / processList.size();         double averageTurnaroundTime = (double) turnaroundTime / processList.size(); ​         System.out.println("平均等待时间:" + averageWaitingTime);         System.out.println("平均周转时间:" + averageTurnaroundTime);     } }
  `  解释
  在 FCFS 算法的示例代码中,我们定义了一个 Process 类来表示一个进程,包含进程名称、到达时间和执行时间三个属性。然后我们定义了一个 FCFS 类,其中包含一个 ArrayList 来存储所有的进程,并实现调度算法的逻辑。
  调度算法的逻辑如下:  首先,将进程列表按照到达时间升序排序。  然后,遍历每一个进程  如果当前时刻小于进程的到达时间,则将当前时刻更新为进程的到达时间。  然后,计算等待时间和周转时间:  等待时间 = 当前时刻 - 进程的到达时间  周转时间 = 当前时刻 - 进程的到达时间 + 进程的执行时间  最后,将当前时刻更新为当前时刻 + 进程的执行时间。
  在遍历完所有的进程之后,我们可以计算平均等待时间和平均周转时间,以此来评估 FCFS 算法的性能。
  最后,调用 FCFS 类的 schedule 方法来执行调度算法即可。  SJF思路
  对于 FCFS 算法,我们可以定义一个 Process 类来表示一个进程,其中包含进程名称、到达时间和执行时间三个属性。然后我们可以定义一个 FCFS 类,其中包含一个 ArrayList 来存储所有的进程,并实现调度算法的逻辑。  源码public class SJF {     private ArrayList processList; ​     public SJF(ArrayList processList) {         this.processList = processList;     } ​     public void schedule() {         int currentTime = 0;         int waitingTime = 0;         int turnaroundTime = 0; ​         while (!processList.isEmpty()) {             // 找到当前时刻最先到达的,执行时间最短的进程             Process p = processList.stream()                     .filter(process -> process.arrivalTime <= currentTime)                     .min((p1, p2) -> p1.executionTime - p2.executionTime)                     .get(); ​             waitingTime += currentTime - p.arrivalTime;             turnaroundTime += currentTime - p.arrivalTime + p.executionTime;             currentTime += p.executionTime; ​             processList.remove(p);         } ​         double averageWaitingTime = (double) waitingTime / processList.size();         double averageTurnaroundTime = (double) turnaroundTime / processList.size(); ​         System.out.println("平均等待时间:" + averageWaitingTime);         System.out.println("平均周转时间:" + averageTurnaroundTime);     } }  解释
  在 SJF 算法的示例代码中,我们定义了一个 Process 类来表示一个进程,包含进程名称、到达时间和执行时间三个属性。然后我们定义了一个 SJF 类,其中包含一个 ArrayList 来存储所有的进程,并实现调度算法的逻辑。
  调度算法的逻辑如下:  使用 stream API 的 filter 和 min 方法来找到当前时刻最先到达的,执行时间最短的进程。  然后,计算等待时间和周转时间:  等待时间 = 当前时刻 - 进程的到达时间  周转时间 = 当前时刻 - 进程的到达时间 + 进程的执行时间  最后,将当前时刻更新为当前时刻 + 进程的执行时间。
  在遍历完所有的进程之后,我们可以计算平均等待时间和平均周转时间,以此来评估 SJF 算法的性能。
  最后,调用 SJF 类的 schedule 方法来执行调度算法即可。  PSA思路
  对于 PSA 算法,我们需要在 Process 类中增加一个优先级的属性,并在调度算法的逻辑上进行相应的修改。
  如果进程在等待 CPU 时间的时间越长,就将它的优先级设为越高。这样,当进程获得 CPU 时间的机会时,就能够优先执行。这种算法能够有效地应对突发性的高优先级作业。  首先,为每个进程设定一个初始优先级。  然后,每当进程等待 CPU 时间超过一定的阈值,就将进程的优先级提高。  当进程获得 CPU 时间时,按照优先级的高低进行调度。
  需要注意的是,当进程执行完成后,需要将进程的优先级恢复为初始值。  源码public class PSA {     private ArrayList processList; ​     public PSA(ArrayList processList) {         this.processList = processList;     } ​     public void schedule() {         int currentTime = 0;         int waitingTime = 0;         int turnaroundTime = 0; ​         while (!processList.isEmpty()) {             // 找到当前时刻最先到达的,优先级最高的进程             Process p = processList.stream()                     .filter(process -> process.arrivalTime <= currentTime)                     .max((p1, p2) -> p1.priority - p2.priority)                     .get(); ​             waitingTime += currentTime - p.arrivalTime;             turnaroundTime += currentTime - p.arrivalTime + p.executionTime;             currentTime += p.executionTime; ​             processList.remove(p);         } ​         double averageWaitingTime = (double) waitingTime / processList.size();         double averageTurnaroundTime = (double) turnaroundTime / processList.size(); ​         System.out.println("平均等待时间:" + averageWaitingTime);         System.out.println("平均周转时间:" + averageTurnaroundTime);     } }  解释
  首先,在示例代码中,我们定义了一个 Process 类来表示一个进程,包含进程名称、到达时间、执行时间和剩余执行时间四个属性。然后我们定义了一个 PSA 类,其中包含一个 ArrayList 来存储所有的进程,并实现调度算法的逻辑。
  调度算法的逻辑如下:  首先,将进程列表按照到达时间升序排序。  然后,循环执行以下步骤,直到进程列表为空:  从进程列表中取出第一个进程,并将其从列表中移除。  如果当前时刻小于进程的到达时间,则将当前时刻更新为进程的到达时间。  如果进程的剩余执行时间大于时间片,则执行时间片的长度;否则,执行进程剩余的所有时间。  计算等待时间和周转时间:  等待时间 = 当前时刻 - 进程的到达时间  周转时间 = 当前时刻 - 进程的到达时间 + 进程的执行时间  如果进程的剩余执行时间为 0,则将进程从进程列表中移除;否则,将进程插入进程列表的末尾。  将当前时刻更新为当前时刻 + 执行的时间。
  在遍历完所有的进程之后,我们可以计算平均等待时间和平均周转时间,以此来评估 PSA 算法的性能。
  最后,调用 PSA 类的 schedule 方法来执行调度算法即可。  三种方法效率比较
  都以相同的开始时间、进行时间、以及优先级进行比较
  arr[0]={0,20,2};
  arr[1]={5,15,1};
  arr[2]={10,5,4};
  arr[3]={15,10,3};
  优先级是为了比较PSA的两种抢占效率(抢占式、非抢占式).  FCFS
  SJF
  PSA抢占式
  非抢占式
  总结:
  FCFS 算法是一种简单的调度算法,它按照进程的到达时间顺序依次执行进程,不考虑进程的执行时间。由于不能有效地应对短作业,因此 FCFS 算法的效率并不高。
  SJF 算法是一种较高效的调度算法,它优先执行执行时间较短的进程,能够有效地应对短作业。但是,SJF 算法不能有效地应对突发性的高优先级作业。
  PSA 算法是一种动态调度算法,它根据进程的等待时间动态调整进程的优先级,能够有效地应对突发性的高优先级作业。但是,PSA 算法的实现较为复杂,因此其运行效率略低于 SJF 算法。
  总的来说,SJF 算法的效率略高于 PSA 算法,而 FCFS 算法的效率较低。不同的调度算法适用于不同的场景,应根据实际需要选择合适的调度算法。

曼联世纪收购!英国首富厮杀卡塔尔富豪图片来源曼联官网截图2005年,美国犹太人家族格雷泽家族买下了曼联。多年以来,虽然他们对曼联不乏重磅投入,但始终无法改变其在球迷心中吸血鬼的印象。如今,收购曼联的大门再次被打开,卡欧洲球员开始统治NBA?佩顿因为之前他们没机会进NBA最近几年,国际球员,尤其是来自欧洲的球员开始统治NBA,字母哥约基奇东契奇,成为MVP的热门候选人。NBA名宿加里佩顿谈及这一话题,表示之所以欧洲球员现在才开始统治联盟,是因为之前莱万建功,巴塞罗那领先皇马8分文羊城晚报全媒体记者刘毅西甲第22轮2月20日继续进行,领头羊巴塞罗那主场以2比0击败排名倒数第四的卡迪斯,莱万多夫斯基打破长达近四个月的主场进球荒。在积分榜上,巴萨以59分继续领大冷门!国乒6主力输球,马龙孙颖莎出局,林高远冲冠为难刘国梁大冷门!国乒6位主力输球,马龙孙颖莎出局,林高远冲冠为难刘国梁。国乒德班世乒赛直通赛进行到现在,连续上演了多场冷门,到目前为止,已经有6位国乒主力输球。女单方面,王艺迪惨遭两连败提NBA全明星扣篮大赛网红扣将滞空夺冠马克迈克朗是一位身高1。88米的00后球员,也是历史上第一位受邀参加NBA全明星扣篮大赛的来自发展联盟的网红扣将。迈克朗用飘逸洒脱和无人能及的滞空动作把扣篮大赛变成了个人舞台,让这洪江区开展智慧体育大数据平台使用培训怀化新闻网讯(通讯员胡竹林)为提升教师信息化素养,让信息技术与体育教学深度融合,帮助学生在体育锻炼中享受乐趣增强体质健全人格锤炼意志,近日,洪江区幸福路小学组织学校体育组全体任课教竞秀区保定首个体育中心项目将于明年竣工使用2月18日,主题为聚焦高质量城市新发展,保定建设现代化品质生活之城暨2023竞秀区城市发展高峰论坛在河北青年报文创产业园举办。活动现场致辞中,保定市竞秀区政府副区长马超提到,保定市体育人的智商情商先说朱荣振,他在山东时郁郁不得志,希望能逃离山东,等去到辽宁后,并没有什么机会,又说想回山东,回到山东了,机会更少,发挥更差,又说很怀念辽宁的快乐时光。为了能给俱乐部一个强大的印象UFC在上海举办年度嘉年华,宣布今年将尽快在中国开始办赛(观察者网讯)2023年2月18日,世界顶级综合格斗组织UFC在UFC上海精英训练中心举办了首届嘉年华年度颁奖典礼。通过颁发15项由专业人士和粉丝投票评选出的奖项,表彰过去一年取得斯诺克世界排名米尔金斯夺冠飙升,颜丙涛跌出前十六丁俊晖不变北京时间2月20日,斯诺克威尔士公开赛的比赛全部结束,最终46岁的老将米尔金斯97击败了世锦赛冠军墨菲,拿到了冠军,夺得8万英镑奖金15万英镑额外大奖,一共是23万英镑奖金成为超级什么是金钉子?(把自然讲给你听)来源人民网金钉子是定义和区别全球不同年代所形成的地层的唯一标准。一颗金钉子的成功获取,标志着一个国家在这一领域的地学研究成果达到世界领先水平我们生活的地球,已有46亿年的演化历史,
中国股市今日上涨!但明天又到周四,行情怎么走?对此我说4点1我对周四的理解下午突然想起一件事,有必要给股民讲讲。因为本周是9月至今的第13周,而在此前12周里,每逢周四A股都是跌的!明天又到周四了,所以此刻不少人心里都在七上八下,怎么办,护肤成分orimos(高效抗糖化抗氧化)头条创作挑战赛orimos对皮肤的功效1抗老化皮肤老化分为光老化和自然老化,自然老化主要遗传和代谢的影响,可通过改善全身营养代谢平衡等措施。orimos对糖化反应产生的抗老化有强效面对炒停营销,上车需谨慎!监管部门年内两次点名通报增额终身寿险,部分产品或将停售半岛全媒体记者文鸿飞4。025已经过去3。5马上就要过去3。0即将到来增额终身寿最后一波红利近日,银保监会通报停售部分增额终身寿险产品后,部分保险销售员在朋友圈或营销群中开始炒停增冷吗?冷!那再X3呢?11月26日,中央气象台发布了今冬最强寒潮橙色预警,我国大部分地区剧烈降温,多地极大风速甚至突破了历史同期极值,降温幅度超过18。这一次,全国winter真的coming了而上一次海南周刊海南苗族医药志一书出版发行广集珍药收纳验方海南苗族医药志。图片由受访者供图文海南日报记者昂颖民间素有千年苗医,万年苗药之说。具有悠久历史的苗族医药曾为无数先民疗伤止痛。400多年前,海南苗族的祖先从广西等地渡海迁琼,传承并第三支箭射出之后房企冲锋市场观望在资本市场和地产行业的翘盼之中,射向房地产行业的第三支箭终于在近期落地。11月28日,证监会新闻发言人就资本市场支持房地产市场平稳健康发展答记者问时表示,证监会决定在股权融资方面调邮政快递年新增就业20万人以上日均业务量超3亿件成常态央视网消息12月1日,国家邮政局发布数据,今年我国快递业务量已超千亿件,人均超71个包裹快件。国家邮政局快递大数据平台实时监测数据显示,今天,一箱从福建省漳州市平和县发往厦门市的蜜迟到的正义也是正义二十多张图回顾劳荣枝案和她可耻的一生备受全国人民关注的劳荣枝案件在今日终于有了最终的消息,不出我们的所料,法院二审结果依然是还是维持一审的死刑判决。劳荣枝是1974年12月14日出生的人,按照我国刑事诉讼法的相关规定失去右眼的义眼师用爱帮盲点亮心灯郑玉昕(重庆大学)近日,北京一名女孩发布的义眼视频引发关注。据了解,该女孩在2013年因车祸致右眼被摘除,从此戴上了义眼片。在接触了很多和自己一样情况的人以后,她决定做一名义眼师,甘肃新乐集团董事长李玲在全渠道分论坛上的致辞(全文)各位蚂蚁商联的伙伴零售行业的同仁们,大家下午好!我是蚂蚁商联董事,蚂蚁商联第二分部理事长,甘肃新乐集团董事长李玲。欢迎大家来到第六届全国自有品牌大会暨2022蚂蚁生态云鼎大会全渠道深夜临时被通知离校,大学生到底在经历什么?全文1588字,阅读需要2分钟前言我从来没有因为疫情焦虑过,直到听说在石家庄读书的好友连夜离校赶往飞机场。那一天,凌晨2点,我仍没睡着,我恐惧着我也会成为那个凌晨被通知离校的学生。