标签: round-robin

在准备队列只有一个进程且使用循环调度的系统中是否发生了上下文切换?

在准备队列只有一个进程且使用循环调度的系统中是否发生了上下文切换?

假设单个进程的当前cpu突发跨越循环算法的多于一个时间片.

我的推理如下

在典型情况下发生定时器中断时可能发生的步骤是

  1. 发生中断.切换到内核模式
  2. OS将当前上下文保存到PCB中(保存寄存器,当前进程的进程状态和内存管理信息)
  3. 执行许多特定于体系结构的操作,包括刷新数据和指令缓存以及TLB.
  4. 将当前进程放入就绪队列
  5. 选择要执行的新流程
  6. 从该过程的PCB加载上下文
  7. 切换到用户模式.开始执行新进程

我现在认为操作系统可能首先检查就绪队列并检查是否有其他进程.如果没有,则不需要上下文切换.因此,定时器中断的处理将需要在用户模式和内核模式之间切换,检查就绪Q,并切换回用户模式以继续执行该过程.

这是怎么回事?或者是否进行了适当的上下文切换,包括不必要地保存单个进程的当前状态并恢复相同的进程?

如果后来确实发生了,有特殊原因吗?

这种混淆是由于试卷中有关计算在这种情况下上下文切换所花费的时间的问题.给出的答案意味着确实发生了上下文切换.

我希望看过内核代码的人能够通过这个来解决这个问题.因此这个问题在stackoverflow上.

operating-system scheduling round-robin

6
推荐指数
1
解决办法
4475
查看次数

LINQ命令"循环"

看起来这应该是一个简单的任务,但我无法弄清楚如何使用LINQ.到目前为止我能找到的唯一信息是循环赛锦标赛格式,这不是我想要的.我可能错了.鉴于以下列表:

var items [] { "apple", "banana", "banana", "candy", "banana", "fruit", "apple" };
Run Code Online (Sandbox Code Playgroud)

我如何对此进行排序(最好使用linq),使其以"循环"顺序排出,即在重复之前选择每个唯一项目一次.所以上面的列表会像这样出现(如果它按字母顺序出现并不重要,即使这个列表也是如此):

var sorted [] { "apple", "banana", "candy", "fruit", "apple", "banana", "banana" };
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过艰难的方式迭代它来做到这一点,我只是希望更容易.有没有人有任何见解如何做到这一点?提前致谢!

linq round-robin

6
推荐指数
1
解决办法
818
查看次数

通用c#循环(分区/排序)队列

我经常需要处理一个项目队列,其中没有一个用户应该能够阻塞队列,并且队列中的项目应该按某种顺序处理.我经常写一个类来做这个,但我认为应该有一些通用版本,但我找不到一个.

所以我正在寻找一个队列类,我可以在其中指定一个类型,一个分区选择器和一个选择器,以便我可以将对象添加到队列中,然后当我将对象退出时,我从第一个对象中获取我的订单说明符排序的下一个分区.

例如,我会像这样调用如何分区以及如何对队列进行排序:

 var queue = new RoundRobinQueue<Message>(
            _ => _.UserID,
            _ => _.SendDate
            );
Run Code Online (Sandbox Code Playgroud)

后,我已经添加了很多信息的,我可以Parallel.ForEach在我的队列中的项目,并处理它们在最早的顺序SendDate下一个User.这样,如果一个用户很慢,他的项目将不会阻塞队列,因为他只获得一个线程,但如果只有一个用户,他是唯一的分区,所以他获得所有线程.

我看了一遍,但在C#中找不到一个很好的通用实现.有任何想法吗?

c# linq queue round-robin

6
推荐指数
1
解决办法
1303
查看次数

用于CPU调度的大时间量子与小量子?

在循环CPU调度中使用大时间量子或小时间量子的主要区别(和优点/缺点)是什么?

c cpu scheduling round-robin

6
推荐指数
1
解决办法
5580
查看次数

Sharded Server配置中的PHP文件上载

我们使用多个服务器来处理以循环方式进行负载平衡的传入Web请求.我遇到了一个我不确定如何解决的问题.

使用AJAX(qqFileUploader),我正在上传文件.默认情况下它会进入/ tmp文件夹,这很好.问题是当我尝试检索该文件时,检索请求由下一个没有我上传文件的服务器处理.如果我继续一遍又一遍重复的请求时,它最终将达到其中存储文件的原始服务器(通过轮循负载平衡),然后我就可以打开它.显然这不是一个好的解决方案.

这里基本上是代码:http://jsfiddle.net/Ap27Z/.为简洁起见,我删除了一些.您将看到上传器对象调用PHP文件来执行文件上载,然后在文件上载完成后,对脚本进行另一个AJAX调用以处理.csv文件.这是循环过程中丢失的过程.

我在这里阅读了一些关于将文件上传到内存的SO的问题,似乎它基本上不可行.我可以使用另一个选项上传文件并在同一请求中处理所有文件吗?

javascript php load-balancing file-upload round-robin

5
推荐指数
1
解决办法
548
查看次数

双循环赛

我正在基于循环调度算法开发java中的运动项目.对于n支队伍,我希望用n/2场比赛产生2(n-1)轮.也就是说每支球队都必须在一轮比赛中进行比赛,每两支球队会两次,一次一次,一次回家.我设法实现了algoritm,除了home/away部分.我能够产生回合,但是在下半场不能"交换"球队,所以他们可以在主场和主场比赛.

这是我到目前为止:

import java.util.Arrays;
import java.util.Scanner;

public class sports {

public static void main(String[] args) {

    //obtain the number of teams from user input
    Scanner input = new Scanner(System.in);
    System.out.print("How many teams should the fixture table have?");

    int teams;
    teams = input.nextInt();


    // Generate the schedule using round robin algorithm.
    int totalRounds = (teams - 1)*2;
    int matchesPerRound = teams / 2;
    String[][] rounds = new String[totalRounds][matchesPerRound];

    for (int round = 0; round < totalRounds; round++) {
        for (int match …
Run Code Online (Sandbox Code Playgroud)

java schedule round-robin

5
推荐指数
1
解决办法
3714
查看次数

为什么gunicorn 工作人员的工作分配不均匀?

我正在运行我的大型、面向公众的 Web 应用程序。它是一个 python HTTP 后端服务器,每分钟响应数千个 HTTP 请求。它是用 Flask 和 SQLAlchemy 编写的。该应用程序在 AWS 的 EC2 上运行。实例类型为c3.2xlarge(具有 8 个 CPU)。

我使用 Gunicorn 作为我的网络服务器。Gunicorn 有 17 个工作进程和 1 个主进程。下面你可以看到 17 个 Gunicorn 工人:

$ sudo ps -aefF | grep gunicorn | grep worker | wc -l
17

$ sudo ps -aefF --sort -rss | grep gunicorn | grep worker
UID       PID  PPID  C      SZ     RSS PSR STIME TTY     TIME                           CMD
my-user 15708 26468  6 1000306 3648504   1 Oct06   ? 08:46:19 …
Run Code Online (Sandbox Code Playgroud)

scheduling round-robin gunicorn

5
推荐指数
1
解决办法
3103
查看次数

同时运行两个函数

我想一个接一个地运行两个函数来访问第三个函数,条件是当第一个使用第三个函数时,第二个函数应该等待.在访问第三个函数的第一个时间段之后应该能够使用第三个函数.

这个概念听起来像是使用上下文切换实现循环调度.我从理论上讲这个,但我想实际应用它.我怎样才能实现这一点并进行上下文切换?有人能为我提供一个例子吗?还有其他方法可以实现这一目标吗?

编辑:其实我在谷歌地图上绘制标记,使用gmap.net .i为两个标记创建了两个线程函数.他们将从两个单独的文件中获取所需的数据.将其转换为lat long并在map上绘图.这种方法我创建了两个具有相同功能的重复功能.但我想它不是一个好的编程方式,所以想要使用一个常用函数来绘制和从文件中获取数据进行转换.

所以当一个线程正在访问公共函数时,另一个应该等待.once首先释放一个函数或者它的时间段来处理该函数超过它应该执行上下文切换而第二个线程应该访问公共函数.这就是我想要实现的目标.如果我应该修改我的方法,请告诉我. 在此输入图像描述

c# multithreading context-switch round-robin

5
推荐指数
1
解决办法
235
查看次数

Python"循环"

给定多个(x,y)有序对,我想比较它们之间的距离.所以假装我有一个有序对的列表:

pairs = [a,b,c,d,e,f]
Run Code Online (Sandbox Code Playgroud)

我有一个函数,它需要两个有序对,并找到它们之间的距离:

def distance(a,b):
    from math import sqrt as sqrt
    from math import pow as pow
    d1 = pow((a[0] - b[0]),2)
    d2 = pow((a[1] - b[1]),2)
    distance = sqrt(d1 + d2)
    return distance
Run Code Online (Sandbox Code Playgroud)

如何使用此函数将每个有序对与每个其他有序对进行比较,最终找到它们之间距离最大的两个有序对?

Psuedopsuedocode:

     distance(a,b)
     distance(a,c)
     ...
     distance(e,f)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

python iteration round-robin

4
推荐指数
3
解决办法
3402
查看次数

C#中的循环数组

我正在尝试制作一个循环阵列.如果我在循环中为这个数组提供一堆值,并且我点击数组的末尾(假设它的长度为10),我将如何循环到第一个索引?

c# arrays round-robin

4
推荐指数
1
解决办法
2654
查看次数