85
простая сумма ее компонентов. Из-за сложного взаимодействия компонентов
микроядра друг с другом могут возникнуть ошибки проектирования,
приводящие к некорректной работе микроядра и трудноуловимым ошибкам.
При использовании монолитного ядра (monolithic kernel) вся система
является единой программой, в которой можно использовать общие структуры
данных и организовывать взаимодействие путем простых вызовов процедур [1].
Для
добавления новых частей в ядро необходима перекомпиляция, либо
реализация механизма оверлеев. Ядро с реализацией оверлеев называют обычно
модульным. Оверлей – механизм управления распределением ресурсов, при
котором допускается их совместное использование. Как правило, под термином
оверлей понимается механизм повторного использования блоков памяти данных
и кода в вычислительных системах, работающих в рамках модели вычислений
Фон-Неймана.
К достоинствам монолитного ядра по сравнению с микроядром можно
отнести высокую скорость работы и упрощение взаимодействия между частями
ядра. К недостаткам монолитного ядра относятся сложность отладки и
тестирования, более низкая, по сравнению с микроядром надежность, так как у
всех частей ОС РВ общие структуры данных и общее адресное
пространство.
В своей книге «Just for fun» Линус Торвальс так отзывается о особенностях
микроядра. «Теоретически необходимость микроядра обосновывается
следующим образом. Операционные системы сложны. Для их упрощения
применяется модульный подход. Вся соль микроядра в том, чтобы оставить у
ядра, которое является основой основ, как можно меньше функций. Его главная
задача – обмен информацией. А все возможности
компьютера реализуются в
виде сервисов, которые обеспечивают коммуникационные каналы микроядра.
Предполагается, что вы разбиваете проблемы на такие мелкие части, что вся
сложность пропадает.
Мне это казалось глупым. Да, каждая отдельная часть получается простой.
Но при этом их взаимодействие становится гораздо более сложным, чем при
включении ряда сервисов в состав ядра,
как это сделано в Linux. Представьте
себе человеческий мозг. Каждая его составляющая проста, но их
взаимодействие превращает мозг в очень сложную систему. В этом-то все и
дело: целое больше частей. Если взять проблему, разделить ее пополам и
сказать, что каждая половинка вполовину проще, то при этом вы игнорируете
сложность интерфейса между
половинками. Сторонники микроядра предлагали
разбить ядро на пятьдесят независимых частей так, чтобы каждая часть была в
пятьдесят раз проще. Они умалчивали о том, что взаимодействие между
частями окажется сложнее исходной системы, при том, что и части сами по себе
не будут элементарными.
Это самое главное возражение против микроядра. Простота,
обеспечиваемая
микроядром, является мнимой.»