>У больших ядер есть системные структуры данных, одновременный доступ к которым из
>модулей невозможен без потери гарантии целостности. Если у разработчиков ОС руки и голова растут откуда надо, то гарантии целостности этих структур сводятся, например, к гарантиям того (это я про одну конкретную самую распространённую архитектуру говорю, на которую пальцем показывать не буду), что инструкция cmpxchg является атомарной и на время своего выполнения блокирует шину данных (предотвращая тем самым доступ к памяти для остальных процессорных ядер). Можно, конечно, долго гадать как эта инструкция работает на суперскалярной архитектуре со внеочередным исполнением инструкций и разложением их на микроинструкции и когда же всё-таки блокируется шина (не при попадании ли этой инструкции на конвейер?), но, тем не менее, она работает именно так, как и должна (несмотря, даже, на многоуровневые раздельные кэши у каждого ядра).
В микроядерной архитектуре также стоит вопрос синхронизации данных - все модули ведь общаются между собой. Как они это делают? Сокеты, каналы - не важно - это всего лишь какая-то область памяти; и если один модуль в канал что-то пишет, то другой это читать не может, ну а результат неправильной синхронизации зависит от важности модулей, которые неправильно синхронизировались.
Микроядерная архитектура может предотвратить некоторые неудачные проектные решения, типа глобальных блокировок, но при этом увеличивается сложность межмодульных интерфейсов, появляется необходимость в дополнительном копировании данных для передачи их между модулями.
Так что микроядро - это не новый виток прогресса, просто альтернативная структура ядра со своими плюсами и минусами, которая, в целом, никак не превосходит монолит, но и не уступает ему.
А реально большинство ядер всё же гибридны - там где удобно работает одно большое и толстое ядро, а где оно неудобно - работают отдельные процессы в своих изолированных адресных пространствах.