> Там это "огромное число доплнительных связей" "расшито" через подсистему IPC которая обычно
> на сообщениях строится и это "число связей" не отличается от монолита.
> Какая разница - дернуть функцию в монолите (надо знать какую) или
> отправить кому-то сообщение единообразным способом через микроядро? Единственное преимущество
> монолита - скорость. А у микроядра - бОльшая надежность (ошибка не
> распространяется дальше процесса драйвера и не затрагивает структуры памяти других драйверов/процессов/приложений). Это все очень теоретически. Практически - там еще много чего интересного есть. DMA, железки которые сами bus-master-ы на шинах и все такое. Поэтому гимора и продолба скорости во, а эффекта во. Бонусом еще и кодинг дров начинает напоминать некропедосадомазо так что желающих кодить дрова вот так - ну вот нет. И все микроядерные выперыщи на этом утыкались.
Ничего что для скорости современное железо mem-mapped? То-есть, драйвер тупо пишет в нужные адреса что хотел - из режима ядра, в том же пространстве это очень быстро и легковесно. И например DMA програмить просто, если с физическими адресами работали. А если это так более не работает и надо контекст переключать, скорость будет очень сильно другая, а не сойти с ума при программировании DMA транзакций будет вообще малореально. Ведь в вашем отдельном процессе адреса - тоже свои. Поэтому "просто скормить DMA этот блок"? Ага, сейчас. Вместо этого ээээвона какое действо придется откаблучить с трансляцией адресов и черт знает чем еще. И то что в этом будет меньше багов и лучше стабильность - ну вот уже не факт.