Каква е разликата между монолитно ядро ​​и микрокернел?


Отговор 1:

Монолитно ядро ​​е единичен голям процес, протичащ изцяло в едно адресно пространство. Това е един статичен двоичен файл. Всички услуги на ядрото съществуват и се изпълняват в адресното пространство на ядрото. Ядрото може директно да извиква функции. Примери за ОС на базата на монолитни ядра: Unix, Linux.

В микрокинелите ядрото се разгражда на отделни процеси, известни като сървъри. Някои от сървърите работят в пространството на ядрото, а някои работят в потребителско пространство. Всички сървъри се държат отделно и работят в различни адресни пространства. Сървърите извикват "услуги" един от друг, като изпращат съобщения чрез IPC (Interprocess Communication). Това разделяне има предимството, че ако един сървър не успее, други сървъри все още могат да работят ефективно. Примери за операционни системи, базирани на microkernel: Mac OS X и Windows NT.

1) Монолитното ядро ​​е много по-старо от Microkernel, идеята е замислена в края на 80-те.

2) Монолитни ядра се използват в Unix и Linux. Микрокернелите се използват в QNX, L4 и HURD. Първоначално е използван в Mach (не Mac OS X), но по-късно е преобразуван в хибридно ядро. Дори Minix не е чисто ядро, защото драйверите на устройства са компилирани като част от ядрото.

3) Монолитните ядра са по-бързи от микроядрите. Първият Microkernel Mach беше с 50% по-бавен от Monolithic ядрото, докато по-късната версия като L4 беше само с 2% или 4% по-бавна от Monolithic ядрото.

4) Монолитните ядки обикновено са обемисти. Чистият Microkernel трябва да е с малки размери, за да се впише в L1 кеша на процесора (първо поколение микрокернел).

5) В монолитни ядра драйверите на устройството се намират в пространството на ядрото, докато в Microkernel драйверите на устройството пребивават в потребителското пространство.

6) Тъй като драйверът на устройството пребивава в пространството на ядрото, той прави монолитното ядро ​​по-малко защитено от microkernel и повредата в драйвера може да доведе до срив. Микрокернелите са по-сигурни от монолитното ядро, затова се използват в някои военни устройства.

7) Монолитните ядра използват сигнали и гнезда, за да осигурят IPC, подходът microkernel използва опашки за съобщения. Микроканерите от първи ген недобре реализирани IPC, така че са бавни при контекстните комутатори.

8) Добавянето на нова функция към монолитна система означава повторно компилиране на цялото ядро, докато с microkernel можете да добавяте нови функции или кръпки, без да прекомпилирате.


Отговор 2:

Ето едно кратко видео, което направих, за да ви помогна да разберете по-добре!

МОНОЛИТЕН КЕРНЕЛ

  • Цялата ОС е поставена вътре в kernelIt работи като един голям процесAs всички услуги са поставени вътре в ядрото, те имат едно адресно пространствоIt е по-голям размерIt е лесно да се приложи / codePerformance е висока (тъй като ядрото може да извика директно всяка функция като всичко е поставено в ядрото) По-малко сигурно (Ако една услуга се провали, цялата система се срива)

микрокърнъла

  • Върху ядрото се поставя само най-малък минимален код (само основно управление на паметта и код за комуникация между процесите) Тук ядрото се разгражда на процеси, наречени като сървъриСслужбите (сървърите предоставят услуги) са разделени, те имат различни адресни пространства, по-малки са по размер, трудно е за внедряване / codePerformance е ниско (Тъй като сървърите са разделени, така че за да се извикат услуги от други сървъри, е необходим IPC (Inter Process Communication), което изисква разрешение на ядрото и по този начин увеличава времето за достъп и понижава производителността) По-сигурно (Дори ако една услуга се срине, други могат да функционират правилно поради раздяла)

Отговор 3:

Ето едно кратко видео, което направих, за да ви помогна да разберете по-добре!

МОНОЛИТЕН КЕРНЕЛ

  • Цялата ОС е поставена вътре в kernelIt работи като един голям процесAs всички услуги са поставени вътре в ядрото, те имат едно адресно пространствоIt е по-голям размерIt е лесно да се приложи / codePerformance е висока (тъй като ядрото може да извика директно всяка функция като всичко е поставено в ядрото) По-малко сигурно (Ако една услуга се провали, цялата система се срива)

микрокърнъла

  • Върху ядрото се поставя само най-малък минимален код (само основно управление на паметта и код за комуникация между процесите) Тук ядрото се разгражда на процеси, наречени като сървъриСслужбите (сървърите предоставят услуги) са разделени, те имат различни адресни пространства, по-малки са по размер, трудно е за внедряване / codePerformance е ниско (Тъй като сървърите са разделени, така че за да се извикат услуги от други сървъри, е необходим IPC (Inter Process Communication), което изисква разрешение на ядрото и по този начин увеличава времето за достъп и понижава производителността) По-сигурно (Дори ако една услуга се срине, други могат да функционират правилно поради раздяла)