如何选择线程的优先级?
How to chose priority for threads?
考虑一个核心,当多个请求在相同的时间戳到达服务器时,并且都具有相同的优先级,线程将首先分配给哪个请求?
Ex: CPU 单核双线程。现在这 4 个人已经向任何服务器发出请求(处理)A、B、C、D,并且服务器需要在消息队列中分配线程才能处理这些请求。但是哪 2 个进程将首先有机会分配这 2 个线程?
假设它们都在相同的时间戳到达并且具有相同的优先级。
TUSHAR,这里出现了一点语言障碍。考虑到你选择了kernel,而且好像没觉得跟代数有什么关系,所以我翻译一下你的问题:
In a single CPU system, when multiple interrupts are asserted
simultaneously, and all have the same priority, which handler would be
serviced first?
第一个信息是大多数中断控制器只不过是一个 优先级编码器 加上一些额外的胶水。因此,他们没有相同优先级的概念,但这并不像您想象的那么重要。
实时操作系统尤其寻求将其实现与硬件分离,甚至可以动态调整中断优先级以适应当前的工作负载。这里的关键是 OS 受中断控制器支配的时间最少,并根据其状态选择要做什么。作为系统设计者,您可以选择发生什么。
分时操作系统对此也有一些控制;但通常更少,因为他们追求最大吞吐量而不是可预测的响应。因此,他们可能会做任何事情,先到先得,随机服务,甚至是随机饥饿。
所以你的问题的答案取决于你的环境。在大多数情况下,如果您有一个非常简单的环境(例如,像 vxWorks 或 freeRTOS 这样的执行程序),期望它遵循中断控制器的指令。如果您有更复杂的设备 OS(例如 INTEGRITY 或 QNX),则取决于您的配置。如果您有 Linux/winDOS,可能有 320 个控制旋钮都会导致吐司燃烧。
考虑一个核心,当多个请求在相同的时间戳到达服务器时,并且都具有相同的优先级,线程将首先分配给哪个请求?
Ex: CPU 单核双线程。现在这 4 个人已经向任何服务器发出请求(处理)A、B、C、D,并且服务器需要在消息队列中分配线程才能处理这些请求。但是哪 2 个进程将首先有机会分配这 2 个线程?
假设它们都在相同的时间戳到达并且具有相同的优先级。
TUSHAR,这里出现了一点语言障碍。考虑到你选择了kernel,而且好像没觉得跟代数有什么关系,所以我翻译一下你的问题:
In a single CPU system, when multiple interrupts are asserted simultaneously, and all have the same priority, which handler would be serviced first?
第一个信息是大多数中断控制器只不过是一个 优先级编码器 加上一些额外的胶水。因此,他们没有相同优先级的概念,但这并不像您想象的那么重要。
实时操作系统尤其寻求将其实现与硬件分离,甚至可以动态调整中断优先级以适应当前的工作负载。这里的关键是 OS 受中断控制器支配的时间最少,并根据其状态选择要做什么。作为系统设计者,您可以选择发生什么。
分时操作系统对此也有一些控制;但通常更少,因为他们追求最大吞吐量而不是可预测的响应。因此,他们可能会做任何事情,先到先得,随机服务,甚至是随机饥饿。
所以你的问题的答案取决于你的环境。在大多数情况下,如果您有一个非常简单的环境(例如,像 vxWorks 或 freeRTOS 这样的执行程序),期望它遵循中断控制器的指令。如果您有更复杂的设备 OS(例如 INTEGRITY 或 QNX),则取决于您的配置。如果您有 Linux/winDOS,可能有 320 个控制旋钮都会导致吐司燃烧。