c语言做菜单中,将这个代码放入菜单中,为什么运行多次后显示的结果始终是输入的值不合格?

版权声明:希望本文能对您有所幫助!欢迎指导、勘误、讨论及转载转载请注明出处。 /Remoa_Dengqinyi/article/details/

先来先服务和高响应比优先调度算法c语言做菜单实现

1、进程调度与作业调度的区別:

2、单道批处理系统与多道批处理系统的区别:

3、程序设计用到的公式:

4、高响应比优先算法特点:

1、进程调度与作业调度的区别:

答:(1)作业调度:根据作业控制块(JCB)中的信息检查系统中的资源是否满足作业对资源的需求,以及按照一定的调度算法从外存的后備队列中选取某些作业调入内存,并为它们创建进程分配必要的资源。然后再将新创建的进程排在就绪队列上等待调度

(2)进程调度:保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容等然后按某种算法从就绪队列中选取一个进程,将其状態转换为运行状态再把进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交予该进程让它从上佽的断点处恢复运行。

(3)进程调度时让某个就绪状态的进程到处理机上运行而作业调度只是使作业具有了竞争处理机的机会。

2、单道批处理系统与多道批处理系统的区别:

答:(1)单道批处理系统(Simple Batch Processing System):系统对作业的处理是成批进行的但在内存中始终只保持一道作业。

特点:自动性、顺序性、单道性

主要问题:CPUI/O设备忙闲不均对计算为主的作业,外设空闲;对I/O为主的作业CPU空闲。

(2)多道批处理系統(Multiprogrammed Batch Processing System):在内存中同时存放几个作业宏观上并行运行——都处于运行状态,但都没运行完;微观上串行运行——各作业交替使用CPU

特点:調度性、无序性、多道性

主要问题:①作业平均周转时间长:短作业的周转时间显著增长;

②无交互能力:整个作业完成后或者中间出错時才与用户交互,不利于调试和修改

3、程序设计用到的公式:

答:完成时间 = 开始时间 +  需要运行时间

带权周转时间 = 周转时间 / 需要运行时間

优先权 = (等待时间 + 需要运行时间) / 需要运行时间

4、高响应比优先算法特点:

答:①当等待时间相同时,短进程的优先权高;

②当需要运荇时间相同时作业的优先权又取决于等待时间,相当于先到先服务;

③长作业的优先级可以随着等待时间的增加而提高因此长作业等待一段时间后仍能得到调度。

printf("从文件中读入三个参数的数据:\n"); printf("作业号 到达时间 需要运行时间 开始时间 完成时间 周转时间 带权周转时间 进程狀态\n"); else //如果进程为wait状态这样输出 //计算平均带权周转时间 //比较各个进程之间的到达时间,按升序排列 //打印进程调度顺序,平均周转时间及平均帶权周转时间 //两算法共同循环遍历部分 //先来先服务调度算法 //进程调度currentTime每次加1直到进程全部被调度完成为止 printInfo(jcb);//打印进程调度顺序,平均周转時间及平均带权周转时间 //高响应比优先调度算法 printInfo(jcb);//打印进程调度顺序平均周转时间及平均带权周转时间

说明:其中三个参数分别是作业名稱,到达时间以及需要运行时间

图7.1 运行结果截图1

2)先到先服务算法调度过程:

①当前时间为0时模拟系统从外存的后备队列中选取五项莋业(job1job2job3job4job5)调入内存,并为它们创建进程分配必要的资源。然后再将新创建的进程排在就绪队列上等待调度其进程状态为wait状态。

图7.2 运行结果截图2

②当前时间为1job5到达,并开始执行进程状态由wait转换为run;当前时间为3时,job5执行完毕开始时间1 =完成时间3,进程状态由run轉换为finish与此同时,job2开始执行进程状态由wait转换为run

图7.3 运行结果截图3

③当前时间为8job2执行完毕,进程状态由run转换为finish与此同时job3开始执行,进程状态由wait转换为run

图7.4 运行结果截图4

④当前时间为12时,job3运行完毕进程状态由run转换为finish,与此同时job4开始执行进程状态由wait转换为run

图7.5 运行結果截图5

⑤当前时间为19job4运行完毕,进程状态由run转换为finish与此同时job1开始执行,进程状态由wait转换为run

图7.6 运行结果截图6

⑥当前时间为21时,job5执荇完毕进程状态由run转换为finish,此时五个进程状态全部转换为finish进程调度算法停止,打印出进程调度顺序平均周转时间,以及平均带权周轉时间算法调度完毕后回到菜单界面:

图7.7 运行结果截图7

3)高响应比优先算法调度过程:

①当前时间为0时,模拟系统从外存的后备队列Φ选取五项作业(job1job2job3job4job5)调入内存并为它们创建进程,分配必要的资源然后再将新创建的进程排在就绪队列上等待调度,其进程狀态为wait状态;

当前时间为1时只有job5到达,并开始执行进程状态由wait转换为run

当前时间为3时,job5执行完毕开始时间1 +需要运行时间2 =完成时间3,進程状态由run转换为finish与此同时,job3开始执行进程状态由wait转换为run

图7.8 运行结果截图8

②当前时间为7job3执行完毕,开始时间3 +需要运行时间4  =完成時间7进程状态由run转换为finish。与此同时job2开始执行,进程状态由wait转换为run

图7.9 运行结果截图9

③当前时间为12时,job2执行完毕进程状态由run转换为finish,與此同时job1开始执行进程状态由wait转换为run

④当前时间为14job5执行完毕,进程状态由run转换为finish与此同时job4开始执行,进程状态由wait转换为run

⑤当湔时间为21时,job4执行完毕进程状态由run转换为finish,此时五个进程状态全部转换为finish进程调度算法停止,打印出进程调度顺序平均周转时间,鉯及平均带权周转时间算法调度完毕后回到菜单界面:

(4)对实现高响应比的验证:

优先权 = (等待时间 + 需要运行时间) / 需要运行时间

①當前时间为1时,只有job5到了那就先运行它,需要运行时间为2运行到时间3结束,开始调度下一进程;

②当前时间为3job5运行完毕,job2job3job4也巳经到达比较三者的优先权:

1,优先权最大为job3执行它,需要运行时间为4因此直到时间7结束,开始调度下一进程;

③当前时间为7job3運行完毕,此时job2,job4,job1全都已经到达比较三者的优先权:

2,优先权最大为job2job1优先权相同时执行先到的进程,因此执行进程job2需要运行时间为5,因此直到时间12结束开始调度下一进程;

④当前时间为12时,job2运行完毕比较job1job4的优先权:

2.29 优先权最大为job1,执行它需要运行时间为2,洇此直到时间14结束开始调度下一进程;

⑤当前时间为14时,剩余进程job4执行它,需要运行时间为7因此直到时间21结束,此时后备队列中五個进程执行完毕调度完毕。

图7.14 先来先服务算法运行结果

图7.15 高响应比优先算法运行结果

二者在调度顺序上出现了不一致

在平均周转时间仩:先来先服务 > 高响应比优先

在平均带权周转时间上:先来先服务 > 高响应比优先

在这次运行的测试用例中可以看出,二者算法在两项指标性能上高响应比优先算法要优于先来先服务算法。

首先高响应比优先算法兼顾了等待时间和需要运行时间其短进程的优先权高,与此哃时长作业的优先级可以随着等待时间的增加而提高因此长作业等待一段时间后仍能得到调度而不会长期得不到服务。而先来先服务算法则很容易导致长作业到来过多时短作业再到达造成的“饥饿”现象;也避免了短进程优先中存在大量短作业时造成的长作业“饥饿”現象;高响应比算法在优先权相同的时候,执行到达时间早的进程

}

我要回帖

更多关于 c语言做菜单 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信