问题标签 [round-robin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
operating-system - 上下文切换是否发生在就绪队列只有一个进程且使用循环调度的系统中?
上下文切换是否发生在就绪队列只有一个进程且使用循环调度的系统中?
假设单独进程的当前 cpu 突发跨越循环算法的多个时间片。
我的推理如下
在典型情况下发生定时器中断时可能发生的步骤是
- 发生中断。切换到内核模式
- 操作系统将当前上下文保存到 PCB 中(保存当前进程的寄存器、进程状态和内存管理信息)
- 执行许多特定于体系结构的操作,包括刷新数据和指令缓存以及 TLB。
- 将当前进程放入就绪队列
- 选择要执行的新流程
- 从该进程的 PCB 加载上下文
- 切换到用户模式。开始执行新进程
我现在认为操作系统不妨先检查就绪队列并检查是否有其他进程。如果没有,则不需要上下文切换。因此,处理定时器中断将需要在用户模式和内核模式之间切换,检查就绪 Q,并切换回用户模式以恢复进程的执行。
这是怎么回事?或者是否进行了适当的上下文切换,涉及不必要地保存单独进程的当前状态并恢复相同?
如果后者确实发生,是否有特殊原因?
这种混淆是由于试卷中的一个问题涉及计算在这种情况下上下文切换所花费的时间。给出的答案意味着确实发生了上下文切换。
我希望研究过内核代码的人能够对此有所了解。因此这个关于stackoverflow的问题。
algorithm - 算法调度,多队/比赛的循环赛
循环赛算法在每场比赛只让球队见面时工作得很好。但是,如何在两支球队在同一场比赛中相遇的体育比赛或比赛中实施它。例如,2 对 n 支球队在 2 对 n 场比赛中相遇的彩弹比赛。仍然保持所有球队都应该是主队一次且只有一次的约束(如果球队不能平均分配,那么尽可能少的球队不会成为主队是可以接受的)
有任何想法吗?给出的是球队的数量,比赛的数量。每场比赛的球队数量可能是给定的。
linux - Linux中的实时调度
今天早上我阅读了有关 Linux 实时调度的信息。根据“罗伯特·洛夫的 Linux 系统编程”一书,那里有两个主要的调度。一个是 SCHED_FIFO,先进先出,第二个是 SCHED_RR,即循环。我了解了 fifo 和 rr 算法的工作原理。但是当我们有系统调用时,
我们可以显式地为我们的进程设置调度策略。所以在某些情况下,两个以 root 运行的进程可以有不同的调度策略。作为一个具有 SCHED_FIFO 的进程和另一个具有 SCHED_RR 且具有相同优先级的进程。在这种情况下,首先选择哪个进程?FIFO分类流程还是RR分类流程?为什么?
考虑这种情况。共有三个过程A,B,C。所有人都具有相同的优先级。A 和 B 是 RR 类进程,C 是 FIFO 类进程。A 和 B 是可运行的(因此两者都在某个时间间隔内交替运行)。目前 A 正在运行。现在 C 变为可运行的。在这种情况下,是否
varnish - 如何使用 varnish 向 localhost httpd 服务器发送请求,但如果不正常,将请求循环发送到一组其他节点
我们有一组 6 个后端服务于我们的网站。因为我们使用多个数据中心,所以我们发现当我们让 varnish 将请求发送到 localhost httpd 服务器(在端口 81 上运行)时,我们会获得最佳性能。这当然是 varnish 支持的非常基本的配置,可以使用 fallback director 完成:
然而,后备主管会依次尝试其他后端,直到找到一个健康的后端。最大的问题是,在上面的配置中,如果 localbackend 失败,web1 将占用所有流量!!!这将使 web1 过载并且它会生病。然后所有请求都转到 web3 ......现在它将获得正常流量的 3 倍......导致级联故障。
因此,我们需要一个配置,如果它是健康的,则允许所有请求发送到 localhost httpd 服务器,但如果不是,则以循环类型的方式将请求发送到其他健康的服务器。
提前感谢您提供您可能想到的任何建议和解决方案......非常感谢您的帮助。
c++ - 循环执行
一个计算机处理器有 N 个任务要执行(1 ≤ N ≤ 50,000)。第 i 个任务需要 Ti 秒的处理时间(1 ≤ Ti ≤ 1,000,000,000)。处理器按如下方式运行任务:每个任务按顺序运行,从 1 到 N,持续 1 秒,然后处理器从任务 1 开始重复此操作。任务完成后,将不再运行迭代。为每个任务确定任务完成后经过的总运行时间。输入
输入的第一行包含整数 N,接下来的 N 行包含整数 T1 到 TN。输出
输出 N 行,其中第 i 行包含一个整数,表示处理任务 i 所经过的时间。
例子
输入: 5 8 1 3 3 8
输出: 22 2 11 12 23
第二个任务在第一次迭代中完成,在 2 秒内完成。在第三次迭代中,第三个和第四个任务分别在 11 秒和 12 秒完成。最后,在第八次迭代中,第一个和最后一个任务分别在 22 秒和 23 秒完成。
什么方法?
这是我的代码:
但这并没有被 spoj 接受...
operating-system - Linux 内核中的调度策略
Linux Kernel 中是否可以同时存在两个以上的调度策略?FIFO 和 Round Robin 可以在同一台机器上工作吗?
operating-system - 轮询调度:当所有工作同时到达时会发生什么?
问题 :
五个批处理作业 A 到 E 几乎同时到达计算机中心。他们估计运行时间为 10、6、2、4 和 8 分钟。它们的(外部确定的)优先级分别为 3、5、2、1 和 4,其中 5 是最高优先级。确定平均过程周转时间。忽略进程切换开销。对于 Round Robin Scheduling,假设系统是多道程序,并且每个作业都获得了 CPU 的公平份额。所有作业都完全受 CPU 限制。
解决方案 #1以下解决方案来自此页面:
对于循环,在前 10 分钟内,每个作业获得 1/5 的 CPU。在 10 分钟结束时,C 结束。在接下来的 8 分钟内,每个作业获得 1/4 的 CPU,之后 D 完成。然后剩下的三个作业中的每一个都在 6 分钟内获得 1/3 的 CPU,直到 B 完成,依此类推。五项作业的完成时间分别为 10、18、24、28、30,平均为 22 分钟。
解决方案 #2以下解决方案来自康奈尔大学,这是不同的(这对我来说更有意义):
请记住,周转时间是作业到达和作业完成之间经过的时间量。由于我们假设所有作业都在时间 0 到达,因此周转时间将只是它们完成的时间。(a) 循环:下表列出了在每个时间段内将处理哪些作业。* 表示作业在该时间段内完成。
结果不同:例如,在第一个 C 中,10 分钟后完成,而在第二个中,C 在 8 分钟后完成。
哪一个是正确的,为什么?我很困惑..提前谢谢!
operating-system - 循环调度:两种不同的解决方案 - 这怎么可能?
问题 :
五个批处理作业 A 到 E 几乎同时到达计算机中心。他们估计运行时间为 10、6、2、4 和 8 分钟。它们的(外部确定的)优先级分别为 3、5、2、1 和 4,其中 5 是最高优先级。确定平均过程周转时间。忽略进程切换开销。对于 Round Robin Scheduling,假设系统是多道程序,并且每个作业都获得了 CPU 的公平份额。所有作业都完全受 CPU 限制。
解决方案 #1以下解决方案来自此页面:
对于循环,在前 10 分钟内,每个作业获得 1/5 的 CPU。在 10 分钟结束时,C 结束。在接下来的 8 分钟内,每个作业获得 1/4 的 CPU,之后 D 完成。然后剩下的三个作业中的每一个都在 6 分钟内获得 1/3 的 CPU,直到 B 完成,依此类推。五项作业的完成时间分别为 10、18、24、28、30,平均为 22 分钟。
解决方案 #2以下解决方案来自康奈尔大学,可以在此处找到,并且与前一个解决方案明显不同,即使问题以完全相同的形式给出(顺便说一下,这个解决方案对我来说更有意义):
请记住,周转时间是作业到达和作业完成之间经过的时间量。由于我们假设所有作业都在时间 0 到达,因此周转时间将只是它们完成的时间。(a) 循环:下表列出了在每个时间段内将处理哪些作业。* 表示作业在该时间段内完成。
结果是不同的:例如,在第一个中,C 在 10 分钟后完成,而在第二个中,C 在 8 分钟后完成。
哪一个是正确的,为什么?我很困惑..提前谢谢!
mp3 - M3U 播放列表...为什么是冗余文件?
我正在查看一些随机的 Icecast 播放列表(可在此处获得: http: //dir.xiph.org/index.php),我想知道为什么许多似乎包含相同 mp3 文件的列表。
例如:
对于它的价值,Icecast 流旨在播放那些 Shoutcast 类型的直播流(想想互联网上的直播广播),所以不会有不同曲目的列表是有道理的..但是那些重复是什么?不同的比特率或只是镜像?
我问这一切是因为我想在我的移动应用程序中流式传输这些 mp3 之一,所以我想知道是否需要以某种方式找出要使用的 url...
java - 为rabbitmq配置HAProxy
我想使用 HAProxy 作为负载均衡器。我想把两个rabbitmq服务器放在haproxy后面。两个rabbitmq 服务器都在不同的EC2 实例上。我已经按照这个参考配置了 HAProxy 服务器。我工作,但问题是消息没有以循环模式发布。消息仅在一台服务器上发布。我的要求有什么不同的配置吗?
我在 /etc/haproxy/haproxy.cfg 中的配置
更新:
我对此进行了一些研发,发现HAProxy是在rabbitmq服务器上循环连接的。例如:如果我请求 10 个连接,那么它将在我的 2 个 rabbitmq 服务器上循环 10 个连接并发布消息。
但问题是我想轮询消息,而不是连接它应该由 HAProxy 服务器管理。即,如果我一次向 HAProxy 发送 1000 条消息,那么 500 条消息应该发送到 rabbit server1,500 条 msg 应该发送到 rabbit server2。我必须遵循什么配置?
更新:
我还用 minimumconn 进行了平衡测试,但 HAProxy 的行为出乎意料。我已经在serverfault.com上发布了这个问题