Linux PREEMPT_RT:系统调用是否仍在软件中断处理程序中处理?

时间:2018-03-29 11:43:06

标签: linux multithreading system-calls preempt-rt

根据Linux源代码和本主题: do system calls execute inside a software interrupt handler in entirety?

似乎有些系统调用完全在中断处理程序中处理(不考虑vDSO系统调用)。这意味着系统调用会阻止所有其他任务执行,直到它阻塞信号量或导致收益。

我的问题:Linux PREEMPT_RT补丁是否更正了这些调用以及如何解决?

文档说:

  

将中断处理程序转换为可抢占的内核线程:RT-Preempt补丁处理内核线程上下文中的软中断处理程序,它由task_struct表示,就像常见的用户空间进程一样。但是,也可以在内核上下文中注册IRQ。

     

(来源:https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions

它似乎被推迟到一个线程,但修补的Linux内核中的swi_handler代码(arm)仍然在处理程序中调用sys_ *函数。

假设系统调用由具有特权的内核线程(ring 0 / supervisor)处理,该内核线程是否具有与调用线程相同的执行优先级?

避免优先级倒置是有意义的。

0 个答案:

没有答案