gpt4 book ai didi

c - 循环时间调度中的时间片

转载 作者:太空狗 更新时间:2023-10-29 17:11:17 25 4
gpt4 key购买 nike

如果循环调度程序的时间片非常大(比如太大),我应该期望在操作系统中产生什么样的性能影响?

我唯一的想法是,需要大量时间的流程会受益,但大多数流程使用的时间很少,因此会导致所有较小流程的完成延迟?

示例:时间片为 50,进程 P1=400、P2=10、P3=150、P4=20、P5=10、P6=10

这是我最好的猜测,我想知道就时间片太小或太大而言,你们是否可以分享任何内容。

最佳答案

循环法的问题在于任务不均等。

用于 CPU 密集型任务;如果你有一个极其重要的任务和成千上万个不重要的任务,那么所有这些不重要的任务都会削弱重要任务的性能。对于这种情况,时间片有多大并不重要。

对于 IO 绑定(bind)任务,循环会导致不良延迟。如果一个重要的任务解除阻塞(例如,在调用“sleep()”之后醒来,接收它正在等待的文件 IO 等),那么它可能必须等待数千个不重要的任务在重要任务之前完成它们的时间片有机会做任何事情。减少时间片长度将减少重要任务开始做有用的事情之前花费的时间,但也会减少重要任务开始做有用的事情的时间。

注意:您可能想通过将解除阻塞的任务置于列表的头部来“解决”这个问题。在这种情况下,一个重要的任务可能会永远饿死,因为不重要的任务一直在 sleep 和醒来。

从本质上讲,循环法是一堆“无用”的热气腾腾的东西,在您用完全不同的调度算法替换它之前,您做什么并不重要,该算法至少在一定程度上尊重不同任务的重要性/优先级。

举一个过于简单的例子;你可以有 3 个不同的任务优先级,其中操作系统只运行它可以运行的最高优先级任务(包括确保高优先级任务立即抢占低优先级任务)并且循环用于相同优先级的任务。在这种情况下,您可以为不同的优先级设置不同的时间片长度(例如,高优先级任务只有 1 毫秒,中优先级任务有 10 毫秒,低优先级任务有 125 毫秒)。

一个“不太简单”的例子;您可以有几种完全不同的调度策略(例如,一种用于实时任务,一种用于正常任务,一种用于后台/空闲任务),它们都使用不同的方法(例如,最早的截止日期优先,可变时间片等);每个调度策略有 256 个任务优先级。

关于c - 循环时间调度中的时间片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com