为什么主线内核中默认不包含 -rt (RT-Preempt) 内核补丁?

Liv*_*san 5 scheduling kernel real-time

根据https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO,RT-Preempt 补丁将 Linux 转换为完全可抢占的内核。魔法是通过以下方式完成的:

  1. 通过使用 rtmutexes 重新实现,使内核锁定原语(使用自旋锁)可抢占。
  2. 由 ie spinlock_t 和 rwlock_t 保护的关键部分现在是可抢占的。使用 raw_spinlock_t 仍然可以创建不可抢占部分(在内核中)(与 spinlock_t 相同的 API)
  3. 为内核互斥锁、自旋锁和 rw_semaphores 实现优先级继承。
  4. 将中断处理程序转换为可抢占的内核线程:RT-Preempt 补丁在内核线程上下文中处理软中断处理程序,它由一个任务结构表示,就像一个常见的用户空间进程一样。然而,也可以在内核上下文中注册 IRQ。
  5. 将旧的 Linux 计时器 API 转换为用于高分辨率内核计时器的单独基础设施以及一个用于超时的基础设施,从而产生具有高分辨率的用户空间 POSIX 计时器。

实时处理而不是多任务处理有什么缺点吗?

小智 1

-rt (RT-Preempt) 内核补丁不在内核主线中,因为 Linux 内核专注于通用内核的实现,而多任务处理是 Linus Torvalds 在开始实现它时的选择。

奇怪的是为什么内核是这样的。答案是,就是这样,因为Linus选择了这样。而他为什么选择这样的方式呢?因为他相信这是更好的方法,或者是可以实现的实施方法。

有些人认为别人的设计理念比实际的要好。但这是不可能的。每个人都有自己的看法,有时由于复杂性和可能性而无法进行基准比较。

Linus Torvalds 和 Andrew Tanenbaum 之间有关于整体内核与微内核的经典讨论。有很多论据可以说每一个都是更好的模型。

同样的,还有多任务和实时性。哪一个更好?每一种都有其自身的优点和缺点。

总而言之,主线内核并没有实时修补。简单的!这只是因为开发者的选择和信念!