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