According to https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO , the RT-Preempt patch converts Linux into a fully preemptible kernel. The magic is done by:

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

实时而不是多任务有什么弊端吗?