Справедливости ради, одной из причин, по которой не особо взлетели микроядра, это и были лишние накладные расходы на системные вызовы и переключение контекстов. Для примера можно посмотреть работу прикладной программы с сетевой файловой системой.В linux с ядерным nfs, прикладная программа говорит open() на какой-то сетевой файл, происходит системный вызов (1с), далее начинается беготня по ядру, сначала по коду клиента nfs, потом по сетевой подсистеме, которая обеспечивает протокольную часть, а затем и по драйверной части, если за это время нам понадобилось чего-то ждать, то может происходить переключение контекстов на другой процесс/поток (1п?). Как бы то ни было, всё заканчивается выдачей сформированного пакета через один из сетевых интерфейсов. Затем происходит возврат из ядра, но в данном случае мы его не будем рассматривать.
В микроядерной QNX6 всё немного по-другому. Прикладная программа говорит open() на какой-то сетевой файл. Происходит системный вызов (1с) микроядра, и переключение (1п) на прикладной процесс демона nfs, который внутри себя начинает формировать пакет и далее опять вызывает микроядро (2с), которое переключается (2п) на процесс сетевой подсистемы, который уже выдаёт сообщение через один из сетевых интерфейсов. Аналогично в процессе работы как nfs, так и процесса сетевой подсистемы им может понадобиться чего-то подождать, что потребует ещё одного или более переключений контекста (3п?).
В QNX4 было-бы ещё сложнее - там был отдельный процесс обеспечивающий стек протоколов tcp/ip, а отдельно - сетевая подсистема работающая с сетевыми-же интерфейсами, т.е. системных вызовов и переключений контекста было-бы ещё больше.
В итоге видите, что в linux для открытия файла на nfs требуется один условный системный вызов и половину переключения контекста (может быть, а может нет), в микроядерной QNX требуется два системных вызова и два с половиной переключения. На самом деле всё гораздо сложнее, в обоих случаях и в linux и в QNX могут потребоваться ещё дополнительные системные вызовы и переключения контекста, но по факту, в QNX их количество будет больше, соответственно больше будут и накладные расходы на аналогичные операции.
Аналогично и для простых файловых систем, которые в микроядерной ОС будут отдельными менеджерами и, соответственно, будут требовать отдельные системные вызовы в ядро и переключения контекста процессора на себя.