Разница / взаимосвязь между ядром / микроядром / гипервизором
Я новичок в этой теме. Я занимался серфингом в Интернете в поисках информации по этой теме, и теперь я также более растерян. Если я не ошибаюсь, они управляют оборудованием и создают связь между пользовательским пространством и реальной физической частью устройства (пожалуйста, исправьте меня, если это не так). Но какова реальная разница между одним и другим? Как я могу их классифицировать? То, что я ищу, - это четкий ответ, который может подтолкнуть меня к правильному обращению, чтобы лучше понять и глубже изучить область.
2 ответа
Следующее, вероятно, не является на 100% точным с академической точки зрения, но я считаю, что отражает суть этого:
Ядро - это программа, целью которой является управление и мультиплексирование аппаратного обеспечения в интересах других программ. Обычно работает в режиме наивысшего привилегированного режима работы процессора. Внутренний компонент операционной системы.
Двумя примерами задач для ядра являются: (1) планирование, которое позволяет различным программам совместно использовать ЦП, причем каждой гарантируется (более или менее) справедливая доля ЦП, и (2) предоставляется файловая система, которая позволяет другому Программа для доступа к устройствам хранения, например, к диску.
Ярким примером ядра является Linux.
Микроядро - это особая архитектура для сборки ядра, в которой используется модульный подход для сегментирования программы ядра в набор изолированных и заменяемых модулей кода. Конструкция позволяет запускать некоторые функции, обычно связанные с ядром, на более низком уровне привилегий.
Чтобы повторно использовать тот же пример, что и раньше, микроядро все равно будет обрабатывать планирование, но файловые системы и доступ к диску, в целом, будут реализованы в виде программы, работающей с более низкими привилегиями, чем само микроядро, которое другие программы подключитесь к использованию методологии клиент / сервер, чтобы получить доступ к дисковым ресурсам.
Главный пример для микроядра - GNU Hurd.
Гипервизор - программа, целью которой является управление и мультиплексирование аппаратного обеспечения для других ядер. Обычно работает на более высоком уровне привилегий, чем ядро, которое было изобретено для этой цели. Позволяет совместно использовать одно оборудование между несколькими операционными системами или их экземплярами. Где гипервизоры отличаются от ядер, это их интерфейс - ядро предоставляет интерфейс программирования системных вызовов, такой как POSIX, в то время как интерфейс гипервизора (как в том, что наблюдает ОС, работающая в качестве гостя) в основном выглядит как просто "голый" процессор и оборудование, с необязательные отклонения этого принципа возможны ради производительности в форме паравиртуализации.
Если мы снова возьмем наши примерные сервисы сверху, планирование внутри гипервизора не отличается от ядра по сути (за исключением того, что запланированные объекты являются виртуальным процессором ОС, а не отдельными программами), но гипервизор обычно вообще не предоставляет интерфейс файловой системы. вместо этого, выставляя то, что выглядит как необработанное устройство хранения, например диск, гостевой ОС, которой оно управляет.
Хорошим примером гипервизора является KVM, который интересен тем, что это гипервизор, встроенный в ядро (ядро Linux).
Короткий ответ заключается в том, что микроядро - это возможная реализация гипервизора (правильная реализация, IMHO), но она может делать гораздо больше, чем просто предоставление виртуальных машин. Вы можете прочитать больше о микроядре и гипервизоре, здесь.