安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

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

7月3日 天浪楼投稿
  实现
  下面是用Java程序比较FCFS,SJF和PSA算法效率的示例代码:FCFS思路
  对于FCFS算法,我们可以定义一个Process类来表示一个进程,其中包含进程名称、到达时间和执行时间三个属性。然后我们可以定义一个FCFS类,其中包含一个ArrayList来存储所有的进程,并实现调度算法的逻辑。源码
  publicclassFCFS{privateArrayListProcessprocessLpublicFCFS(ArrayListProcessprocessList){this。processListprocessL}publicvoidschedule(){按照进程的到达时间升序排序Collections。sort(processList,(p1,p2)p1。arrivalTimep2。arrivalTime);intcurrentTime0;intwaitingTime0;intturnaroundTime0;for(Processp:processList){if(currentTimep。arrivalTime){currentTimep。arrivalT}waitingTimecurrentTimep。arrivalTturnaroundTimecurrentTimep。arrivalTimep。executionTcurrentTimep。executionT}doubleaverageWaitingTime(double)waitingTimeprocessList。size();doubleaverageTurnaroundTime(double)turnaroundTimeprocessList。size();System。out。println(平均等待时间:averageWaitingTime);System。out。println(平均周转时间:averageTurnaroundTime);}}
  解释
  在FCFS算法的示例代码中,我们定义了一个Process类来表示一个进程,包含进程名称、到达时间和执行时间三个属性。然后我们定义了一个FCFS类,其中包含一个ArrayList来存储所有的进程,并实现调度算法的逻辑。
  调度算法的逻辑如下:首先,将进程列表按照到达时间升序排序。然后,遍历每一个进程如果当前时刻小于进程的到达时间,则将当前时刻更新为进程的到达时间。然后,计算等待时间和周转时间:等待时间当前时刻进程的到达时间周转时间当前时刻进程的到达时间进程的执行时间最后,将当前时刻更新为当前时刻进程的执行时间。
  在遍历完所有的进程之后,我们可以计算平均等待时间和平均周转时间,以此来评估FCFS算法的性能。
  最后,调用FCFS类的schedule方法来执行调度算法即可。SJF思路
  对于FCFS算法,我们可以定义一个Process类来表示一个进程,其中包含进程名称、到达时间和执行时间三个属性。然后我们可以定义一个FCFS类,其中包含一个ArrayList来存储所有的进程,并实现调度算法的逻辑。源码publicclassSJF{privateArrayListProcessprocessLpublicSJF(ArrayListProcessprocessList){this。processListprocessL}publicvoidschedule(){intcurrentTime0;intwaitingTime0;intturnaroundTime0;while(!processList。isEmpty()){找到当前时刻最先到达的,执行时间最短的进程ProcesspprocessList。stream()。filter(processprocess。arrivalTimecurrentTime)。min((p1,p2)p1。executionTimep2。executionTime)。get();waitingTimecurrentTimep。arrivalTturnaroundTimecurrentTimep。arrivalTimep。executionTcurrentTimep。executionTprocessList。remove(p);}doubleaverageWaitingTime(double)waitingTimeprocessList。size();doubleaverageTurnaroundTime(double)turnaroundTimeprocessList。size();System。out。println(平均等待时间:averageWaitingTime);System。out。println(平均周转时间:averageTurnaroundTime);}}解释
  在SJF算法的示例代码中,我们定义了一个Process类来表示一个进程,包含进程名称、到达时间和执行时间三个属性。然后我们定义了一个SJF类,其中包含一个ArrayList来存储所有的进程,并实现调度算法的逻辑。
  调度算法的逻辑如下:使用streamAPI的filter和min方法来找到当前时刻最先到达的,执行时间最短的进程。然后,计算等待时间和周转时间:等待时间当前时刻进程的到达时间周转时间当前时刻进程的到达时间进程的执行时间最后,将当前时刻更新为当前时刻进程的执行时间。
  在遍历完所有的进程之后,我们可以计算平均等待时间和平均周转时间,以此来评估SJF算法的性能。
  最后,调用SJF类的schedule方法来执行调度算法即可。PSA思路
  对于PSA算法,我们需要在Process类中增加一个优先级的属性,并在调度算法的逻辑上进行相应的修改。
  如果进程在等待CPU时间的时间越长,就将它的优先级设为越高。这样,当进程获得CPU时间的机会时,就能够优先执行。这种算法能够有效地应对突发性的高优先级作业。首先,为每个进程设定一个初始优先级。然后,每当进程等待CPU时间超过一定的阈值,就将进程的优先级提高。当进程获得CPU时间时,按照优先级的高低进行调度。
  需要注意的是,当进程执行完成后,需要将进程的优先级恢复为初始值。源码publicclassPSA{privateArrayListProcessprocessLpublicPSA(ArrayListProcessprocessList){this。processListprocessL}publicvoidschedule(){intcurrentTime0;intwaitingTime0;intturnaroundTime0;while(!processList。isEmpty()){找到当前时刻最先到达的,优先级最高的进程ProcesspprocessList。stream()。filter(processprocess。arrivalTimecurrentTime)。max((p1,p2)p1。priorityp2。priority)。get();waitingTimecurrentTimep。arrivalTturnaroundTimecurrentTimep。arrivalTimep。executionTcurrentTimep。executionTprocessList。remove(p);}doubleaverageWaitingTime(double)waitingTimeprocessList。size();doubleaverageTurnaroundTime(double)turnaroundTimeprocessList。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算法的效率较低。不同的调度算法适用于不同的场景,应根据实际需要选择合适的调度算法。
投诉 评论 转载

即将发布的一加11到底有何看点?一文帮你盘点清楚在12月17日的一加9周年活动中,一加11居然敢直接打出挑战行业不可能,未来性能引领者口号,足以看出一加对于这款全新数字旗舰是充满了信心。而随着时间的推移,一加11距离正式发布……被人民网点名批评的明星,大多数已退圈,关晓彤杜海涛还在活跃在人民网旗下账号点评余景天粉丝接机造成拥堵事件之后,沉默许久的余景天终于出面道歉了。实际上余景天粉丝拥堵机场辱骂民警一事已经发生有近一周时间了,期间余景天粉丝多次颠倒黑白……FCFS,SJF以及PSA进程调度算法的比较实现下面是用Java程序比较FCFS,SJF和PSA算法效率的示例代码:FCFS思路对于FCFS算法,我们可以定义一个Process类来表示一个进程,其中包含进程名……荣耀80官宣,11月23日见,网友这个设计真灵动荣耀数字系列作为荣耀的拳头产品,其关注度历来很高,因此荣耀80系列受到了很多网友的关注,今天荣耀官宣了,荣耀80系列将于11月23日下午两点半发布。荣耀80系列这次会有三……股民心凉了!发行价168元,上市一年跌了将近180元中了签的新股,跌跌不休,一点儿企稳的迹象都没有!300976达瑞电子,发行价168元股,首发最高270。2元!除权10转8之后股价仅剩45。68元!去除除权的影响,股价已经跌了……吃下奉贤的一整个秋天秋天,是最有味道的季节。稻田的气息、石榴的清香、柿子的浓郁。。。。。那些被舌尖牵挂了很久的味道,一到这时,就开始撩拨人的舌胃与记忆。从第一粒成熟的稻谷开始,空气中逐渐弥漫……几乎零差评的4款电视盒子,覆盖高中低档次,入手绝对不亏电视盒子虽然没有电视那般昂贵的价格,但它能够发挥出很大的作用,当使用了好几年的电视硬件性能衰退或者是系统内存不足时,往往连接一个电视盒子便可以解决这些问题,更形象的说,电视盒子……深挖潜力催热露营经济近段时间,露营话题热度不减。从围炉煮茶到户外看球,露营休闲的新场景、新话题层出不穷,从形式到内容不断丰富拓展。一顶顶帐篷撑起了大家对美好生活的新期待,也提振了消费新活力。……8GB内存对Mac来说够用吗?苹果的解决方案回让你大吃一惊。运行内存是每台计算机不可或缺的一部分。简而言之,它是一种非常快速的内存,用于从当前运行的文件和进程中读写数据。就像处理器频率、核心数量和存储……奔四奔五的女人,还是穿膝下裙最优雅显瘦,看陈数就知道了相信很多女性朋友都有年纪越大穿搭就变得越无力的感觉,一部分人是因为没时间去打扮,一部分人是因为不知道穿什么,不知道怎么穿才时髦。其实我觉得年纪大一点的女性完全可以参考中年……全国新增试点首票市场采购贸易落地新疆与传统外贸业态相比,市场采购贸易方式门槛低、允许对货物组柜拼箱操作,可有效解决无票货物合法合规出口,突破了谁出口、谁收汇的限制,从而提升贸易便利化。10月28日10点28……人民币破七,逼近上次低点,该恐惧还是淡定人民币再次破七,兑美元今天已经到7。15,逼近上次地点7。18,是该恐慌还是淡定,先不忙着下结论,我们可先看看两组数据:1、人民币今年从年初到现在对美元贬值12,相对美元……
1年1000万,勇士绝佳签约!金州王朝由你开启,库里感谢你的被百大UP极客湾实测推荐的坚果J10S,性能究竟如何?2022年度最值得入手的四款75寸电视机,看完坐等双十一奚梦瑶庆祝33岁生日,晒与何猷君贴脸照,二胎产后4月重拾超模女儿像爸,儿子像妈?这几个方面最容易遗传!太准了2交易3签约!全联盟最低调的引援大赢家,他们三巨头阵容升级了有关榆树的记忆iphone二手手机的回收标准有哪些6月1日起,德意日韩土菲泰港台,这些国家地区入境政策发生变化近墨者黑!穆雷加盟老鹰后狂起来了,野球场戏耍状元!怒瞪后者让孩子学美术2015年,尽管赵本山强烈反对,王小蒙决心嫁给一位亿万富翁

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利