Архитектура ОС Windows и Linux
Добрый день Пикабушники!
Сегодня я решил показать Вам различия между ядрами операционных систем Windows и Linux.
Начнем с относительно простого ядра Linux.
Обсуждать тут в принципе нечего - любая программа через системные вызовы обращается к ядру ОС через интерфейс системных вызовов. Ядро через архитектурно зависимый код транслирует команды аппаратному обеспечению. Все это очень просто и быстро, единственное что заслуживает внимание - то что программы "видят" себя в едином виртуальном окружении независимо от архитектуры системы. Структура и системные вызовы стандартизированы и едины для любой аппаратной платформы. Графичесая подсистема является одной из внешних программ, поэтому сменить графическую оболочку можно без перезагрузки ОС. Кстати о графических оболочках:
GNOME3
KDE (Windows 7)
E17 (MacOS)
XFCE4 (WindowsXP)
I3 (фреймовый)
Теперь перейдем к Windows:
Как видим структура ядра намного более сложная. Преимущество это или недостаток? Каждый решает для себя сам. Программа под Windows обращается через документированный Windows API к "своей" библиотеке (например Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll), эти библиотеки по внутреннему протоколу (документация для разработчиков не из Microsoft не доступна) обращается по протоколу Native API к Ntdll.dll и далее передается через диспетчер системных сервисов ядру (все это внутри Ntoskrnl.exe).
После обработки в режиме ядра и использованию драйверов данные передаются Hal.dll - библиотеке которая непосредственно управляет оборудованием. Второй системой управляющей оборудованием является графическое ядро (проприетарные функции видеокарт в основном касаются именно этого).
Важно отметить одну особенность пользовательского режима ядра Windows - "Подсистемы окружения". Эта компонента позволяет Windows использовать коды стандартов POSIX, Win16 и т.п. Данный механизм по сути является набором виртуальных ядер сторонних ОС и позволяет быстро адаптировать под Windows любой сторонний код.
Не менее важным является включение графической подсистемы в ядро (в современных серверных ОС данная система отключена или отсутствует), что во-первых не дает сменить графическую оболочку "на ходу", а во-вторых уже не способствует быстродействию...
На анализе архитектур можно сделать вывод, что ядро ОС Linux принципиально обеспечивает наилучшее быстродействие и надежность за счет своей монолитности, а ядро Windows позволяет быстро адаптировать любой стороний код для совместимости с операционной системой, однако такая адаптация имеет свою цену - систему приходится перезагружать по любому мало-мальскому поводу.








