- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据我在搜索过程中了解到的情况,FIFO 任务需要阻塞或自愿放弃,以便释放 CPU 并允许其他任务在该 CPU 上运行。我不能确定的是 3 个具体情况:
1) 优先级为 99 的(可运行的)FIFO 任务是否会抢占优先级为 90 的(运行中的)FIFO 任务?
我认为答案是否定的,请发表评论
2) 优先级为 50 的(可运行的)FIFO 任务是否会抢占优先级为 99 的(正在运行的)RR 任务(在 RR 时间片结束之前)?
我相信答案是肯定的,请发表评论
3) 优先级为 99 的(可运行的)RR 任务是否会抢占优先级为 50 的(正在运行的)FIFO 任务?
我认为答案是否定的,请发表评论
采用最新的 Linux RedHat 内核。
谢谢
亚历克斯
最佳答案
在 linux 中,SCHED_FIFO 和 SCHED_RR 共享实时优先级,至少在用户空间中从 0 到 99(99 是最高的)。从现在开始,我假设您正在谈论这些优先级 (rt_priority) 而不是内部 prio 字段。在此处给出此信息后,您的场景应该如何工作:
最后如果你对 prio 和 rt_prio 感到困惑,这里是它们之间的关系,它可以在函数 normal_prio 中找到
/*
* Calculate the expected normal priority: i.e. priority
* without taking RT-inheritance into account. Might be
* boosted by interactivity modifiers. Changes upon fork,
* setprio syscalls, and whenever the interactivity
* estimator recalculates.
*/
static inline int normal_prio(struct task_struct *p)
{
int prio;
if (task_has_dl_policy(p))
prio = MAX_DL_PRIO-1;
else if (task_has_rt_policy(p))
prio = MAX_RT_PRIO-1 - p->rt_priority; // This is for FIFO/RR Tasks
else
prio = __normal_prio(p);
return prio;
}
关于Linux 调度策略 : SCHED_FIFO against SCHED_RR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46500155/
我正在 Linux RT 多核机器上测试我的多线程应用程序。 但是在测试过程中,我们观察到 Linux RT 中的调度(使用 SCHED_FIFO 调度策略创建)并未按照 SCHED_FIFO 策略进
我有两个线程,线程 1 和线程 2。我先创建thread1,然后创建thread2。但是thread2是先调度的。我想在线程 2 之前安排线程 1。我将线程 1 的策略更改为 SCHED_FIFO,将
根据我在搜索过程中了解到的情况,FIFO 任务需要阻塞或自愿放弃,以便释放 CPU 并允许其他任务在该 CPU 上运行。我不能确定的是 3 个具体情况: 1) 优先级为 99 的(可运行的)FIFO
Linux 中采用 SCHED_FIFO 策略的线程的默认优先级是多少?范围为 0-99。 最佳答案 根据Red Hat Enterprise MRG 1.3Realtime Reference Gu
我想用 RR 调度创建 3 个线程。在每个线程中我将创建例如5 个线程,采用 FIFO 调度。 我知道3个线程有指定的处理时间。在此期间,其他 5 个线程应以“RR”调度运行。在这段时间之后,其他 2
我编写了一个创建 pthread 并为 pthread 设置 SCHED_FIFO 策略的小程序。代码如下: int main(int argc, char *argv[]){ ... p
SCHED_FIFO 和 SCHED_RR 都是为实时使用而设计的。我知道 SCHED_RR 可以被时间片抢占。但是如果我有一个线程设置为 SCHED_FIFO,另一个设置为 SCHED_RR,如果两
我在主线程中创建了两个线程ThreadA和ThreadB,并且三个线程具有相同的优先级。调用顺序是ThreadA在ThreadB前面(我看不懂)。 但是,当增加主线程优先级时,调用顺序是ThreadB
这是来自 sched_setscheduler(2) - Linux 手册页: “根据其中一项实时策略(SCHED_FIFO、SCHED_RR)安排的进程的 sched_priority 值在 1(低
谁能解释一下 SCHED_OTHER、SCHED_FIFO 和 SCHED_RR 之间的区别? 谢谢 最佳答案 SCHED_FIFO 和 SCHED_RR 是所谓的“实时”策略。它们实现了 POSIX
我正在为我的操作系统类做一些 Linux CFS 分析,并且有一个我无法解释的观察结果。 对于两个在其他方面完全相同的进程,当它们使用 SCHED_OTHER 策略执行时,与使用 SCHED_FIFO
我正在为我的操作系统类做一些 Linux CFS 分析,并且有一个我无法解释的观察结果。 对于两个在其他方面完全相同的进程,当它们使用 SCHED_OTHER 策略执行时,与使用 SCHED_FIFO
我正在通过切换 GPIO 线并在示波器上观察波形来试验一些抖动定时测试。我的内核是用 PREEMPT_RT 编译的。我希望将进程的调度程序更改为 SCHED_FIFO 会减少抖动,但似乎并没有太大的不
我正在 Raspberry Pi 上运行一个 python 程序,我想将其设置为 SCHED_FIFO 或 SCHED_RR 优先级。我在网上找到了一些使用 C/C++ 执行此操作的人的信息,代码如下
我已经编写了一个测试程序来测试 SCHED_FIFO。我了解到 SCHED_FIFO 不能被 SCHED_OTHER 线程抢占。但是我无法解释多次运行同一个程序时获得的结果。 /* Includes
我想让一个实时进程接管我的电脑。 :) 我一直在玩这个。我创建了一个本质上是 while (1) 的进程(从不阻塞或产生处理器)并使用 schedtool 以 SCHED_FIFO 策略运行它(也试过
我正在试验 SCHED_FIFO,我看到了一些意外行为。我使用的服务器有 12 个内核,禁用了超线程。所有可配置的中断都已设置为在 CPU 0 上运行。 我的程序开始使用 pthreads 库为较低优
我正在编写一个非常小的守护进程,即使在系统承受巨大压力时它也必须保持响应。我正在研究 SCHED_FIFO 和 SCHED_RR 在调度方面的差异,并试图确定一个合理的优先级。 哪种调度程序适合小型但
TL;DR 在多处理器/多核引擎上,可以在多个执行单元上调度多个 RT SCHED_FIFO 线程。因此优先级为 60 的线程和优先级为 40 的线程可以同时在 2 个不同的内核上运行。 这可能是违反
想知道这里是否有消息灵通的 Linux 专家可以回答我的问题。我一直在为我的 OS 类做统计分析,其中调度程序对 CPU 和 IO 绑定(bind)进程更有效/有效。我无法解释从 GNU 时间得到的一
我是一名优秀的程序员,十分优秀!