FIFO планирование (планирование в порядке поступления)

На SMP системах, потоки действительно работают параллельно. Зачастую под многозадачной системой понимают систему которая одновременно обрабатывает несколько задач, но это не так. Процессор поочередно выполняет различные программы. Достаточно очевидный пример FIFO планирования QNX4. Если запущено одновременно несколько программ с одним приоритетом в режиме планирования FIFO, то когда одна из этих программ получает процессор в свое распоряжение, другие программы не будут выполняться до тех пор, пока первая не освободит процессор. Я видел некоторые проекты использующих такую систему планирования постоянно, и сам использовал такую систему несколько раз. При использования такой системы планирования можно добиться защиты общих данных без дополнительных накладных расходов. Но на системе с использованием SMP такой подход неприменим, это просто не будет работать. Режим планирования FIFO не работает на системах SMP.

Две программы с одинаковым приоритетом, работая в режиме FIFO планирования, могут одновременно запуститься на различных процессорах, что может повлечь за собой нарушение целостности общих данных:. Эту проблему можно обойти: Neutrino дает возможность принудительно заставить программы работающие в этом режиме использовать один процессор. К сожалению это имеет отрицательные стороны, которые вы поймете позже. Поэтому я рекомендовал бы отказать от планирования типа FIFO. В документации Neutrino также рекомендуют ее не использовать.

Приоритеты (Планирование по приоритетам)

Планирование по приоритетам имеет те же недостатки что и планирование FIFO. Поток с наименьшим приоритетом может работать на другом процессоре одновременно с потоком с наибольшим приоритетом. При создании критических приложений я бы не рекомендовал вам полагаться на них.