当前位置: 首页 > 面试题库 >

防止Linux线程被调度程序中断

段干昊然
2023-03-14
问题内容

您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?我正在用户模式下编程。简单地锁定互斥锁是否可以完成此操作?我想防止执行某些功能时调度进程中的其他线程。它们会阻塞,我会用上下文切换浪费CPU周期。我希望任何执行该功能的线程都能够完成执行而不会中断,即使超出了线程的时间片。


问题答案:

您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?

无法真正完成,您需要一个实时系统。在Linux上完成的事情是将调度策略设置为实时调度程序,例如SCHED_FIFO,并设置PTHREAD_EXPLICIT_SCHED属性。即使在现在也可以参见例如here,例如,irq处理程序和其他东西将中断您的线程并运行。

但是,如果您只关心自己进程中的线程无法执行任何操作,那么可以,将它们阻塞在您正在运行的线程所持有的互斥体上就足够了。

困难的部分是在您的线程需要执行其操作时,协调所有其他线程以获取该互斥量。



 类似资料:
  • 问题内容: 在阅读了这样的问题之后,我有了一些疑问。请帮助理解。 调度涉及确定何时运行流程以及运行时间的多少。 linux内核是否调度线程或进程?由于内核中的进程和线程没有区别,调度程序如何对待它们? 如何确定每个线程的数量?一个。如果为一个进程确定了一个时间量(例如100us),是在该进程的所有线程之间共享该时间吗?或b。每个线程的数量由调度程序决定吗? 注意:问题1和问题2是相关的,可能看起来

  • 问题内容: 如果我们在Linux上使用默认调度策略创建pthreads(pthread_create)或进程(fork),那么调度程序在调度进程和线程时会优先处理优先级相同的进程和线程吗? 假设有一个进程P1有一个线程,有进程P2有2个线程T1 T2 可以说只有一个核心..调度将是P1 T1 P1 T2 P1 T1 P1 T2 要么 P1 T1 T2 P1 T1 T2 问题答案: Linux不再计

  • 但没有。在应用程序中创建的dispatcher线程使我在优化dispatcher配置时束手无策。每次重新启动应用程序时,我都看到创建了不同数量的dispatcher线程(每次启动应用程序后,我都通过线程转储检查这一点)。 甚至线程数也不等于我在Parallelism-min中定义的线程数。由于这个低线程数,我的应用程序的处理速度非常慢。一查号码。通过下面的代码: GetRuntime().Avai

  • 问题内容: 防止Linux程序/守护程序在给定时间多次执行的最佳方法是什么? 问题答案: 最常见的方法是创建PID文件:定义文件将要到达的位置(在/ var / run内部很常见)。成功启动后,您会将PID写入此文件。在决定是否启动时,请阅读文件并检查以确保所引用的进程不存在(或者如果存在,则它不是守护程序的实例:在Linux上,您可以查看)。关机时,您可以删除文件,但这不是绝对必要的。 有一些脚

  • 调度器 调度器的算法有许多种,我们将它提取出一个 trait 作为接口 os/src/algorithm/src/scheduler/mod.rs /// 线程调度器 /// /// 这里 `ThreadType` 就是 `Arc<Thread>` pub trait Scheduler<ThreadType: Clone + Eq>: Default { /// 优先级的类型 t

  • 问题内容: 我试图了解Linux如何处理进程调度和线程调度。我读过Linux可以安排进程和线程。 Linux是否具有线程调度程序和进程调度程序?如果是,他们如何合作? 问题答案: 的Linux内核调度器被实际调度的任务,并且这些要么螺纹或(单线程)工艺。 因此,在调度程序的上下文中, 任务 (内核内部)是正在调度的事物,可以是某些 内核线程( 例如或),多线程进程的某些 用户线程 (例如)或单线程