Каковы различия между монолитным ядром и микроядром в отношении структуры и безопасности. Мой друг сказал мне, что системы Linux имеют монолитное ядро и поэтому их не так просто взломать, но я не думаю, что он был на самом деле прав.
Кто-нибудь, пожалуйста, просветите меня.
Основное отличие состоит в том, что микроядро (MK) очень мало и предоставляет только минимальный набор услуг. Большинство из того, что обычно считается службами операционной системы, предоставляется отдельными процессами, которые выполняются вне ядра и в менее привилегированном режиме. Эти процессы должны взаимодействовать через некоторые из IPC, а не просто читать / писать в любую структуру данных, к которой они хотят получить доступ.
MK обычно довольно легко переносить, поскольку ядро невелико, а усилия по переносу невелики.
Поскольку многие из предоставляемых сервисов потенциально работают в пользовательском пространстве, а не в пространстве ядра, они не могут легко уничтожить другие процессы. Это плюс безопасности.
Например, часть сетевого стека находилась в пользовательском пространстве и была скомпрометирована, что не могло нарушить другие процессы / задачи. Принимая во внимание, что если та же самая часть сетевого стека в монолитном ядре могла бы работать в пространстве ядра, где в случае компрометации она могла бы уничтожить другие процессы, поскольку она была бы привилегированной.
Чтобы проиллюстрировать выступление Джейсона, вот иллюстрация, показывающая разницу между микрогибридным и монолитным ядром:
Четкое изображение исходный файл в Википедии.