preemption

    5热度

    1回答

    我有一小部分确定性工作,只需要十三条机器指令即可完成。因为第一条指令需要一个自制的信号量(spinlock)并且最后一条指令释放它,所以我可以安全地使用其他内核上运行的所有其他线程,因为它们试图获取并提供相同的信号量。 当某个线程在完成其“临界区”之前中断了一个持有信号量的线程时,会出现问题。最糟糕的情况是中断会在握住信号量的同时杀死线程,或者可能会发生通常竞争信号量的线程之一分支出代码,这些代码

    0热度

    1回答

    我试图让一个进程不可抢占。我已将计划程序策略更改为SCHED_FIFO,并将设置为99.只要进程启动,在没有IO中断的情况下,我是否有保证该进程不会被其他进程抢占? rtprio = 99是最高优先级还是还有一些优先级较高的内核进程?最后,我怎么知道一个进程在执行过程中是否被抢占?

    1热度

    1回答

    我想开发一个程序来限制函数的执行时间。在下面的代码中,我有一个名为Inc的函数,它执行了很多迭代(由无限循环模拟)。每次迭代的第一部分都很长,然后是第二部分,应该很快。 我不介意在代码的第一部分抢占执行,但我想避免在第二部分执行写操作时发生报警。 我的第一个想法是在进入“安全区域”之前关闭闹钟,以节省剩余时间。然后在退出后,我会用保存的时间设置闹钟。我不知道如何实现这一点。有人能帮助我吗?替代方法

    5热度

    2回答

    我已经编写了测试程序来测试出SCHED_FIFO。我知道SCHED_FIFO不能被SCHED_OTHER线程抢占。但我无法解释同一程序多次运行时获得的结果。 /* Includes */ #include <unistd.h> /* Symbolic Constants */ #include <sys/types.h> /* Primitive System Data Types */

    10热度

    1回答

    时当在内核空间的过程中拿着spin_lock,进程不能被抢占,由于下列任一条件: 当进程的时间片变用尽 当中断发生时 然而,该方法可以产生该处理器的高优先级过程变得可运行 如果块,睡眠s,或明确地致电schedule()。我的理解是否正确? 当在内核空间中的过程被保持mutex_lock,可以在过程被抢占由于列为1,2和3在上述条件

    6热度

    2回答

    我已经写了一段代码,其中一个数据: unsigned char buf[4096]; // data in chunks of size 4k unsigned counter[256]; 我添加了I/P数据为每3个连续的字节,并存储所述ANS。 ex:temp [4096]; temp [0] = buf [0] + buf [1] + buf [2]; ...直到4096 然后从临时的使

    9热度

    4回答

    想知道调度程序如何被调用,以便它可以切换任务。因为即使它的抢占式调度或循环调度 - 调度程序应该进入图片来执行任何类型的任务切换。假设低优先级任务具有无限循环 - 调度程序何时干预并切换到更高优先级的任务? 查询结果: 1.谁调用调度程序? [在VxWorks中] 2.如果定期调用它 - 该机制如何实现? 在此先感谢。 --Ashwin

    1热度

    3回答

    我需要找出是否一个用户进程是有史以来某种程度上抢占,我明白我们在preempt.h和sched.c中的钩子,允许我们定义preempt_notifiers这又会调用sched_in和每当一个进程被重新安排或抢占时,sched_out函数。 但我仍然无法找到我怎么可以附加一个通知到特定的过程或PID在用户空间,然后以某种方式登录,如果这一具体过程是有史以来捷足先登。我假设我必须编写一个模块来做到这一