Архитектура ОС 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 позволяет быстро адаптировать любой стороний код для совместимости с операционной системой, однако такая адаптация имеет свою цену - систему приходится перезагружать по любому мало-мальскому поводу.







1. Ядра ОС Windows и Linux - гибридные, оба.
2. Это каким же образом ядро Linux принципиально обеспечивает лучшее быстродействие и надежность? (монолитность = надежность? Нонсенс!)
3. Это как же windows позволяет адаптировать любой сторонний код? (при том что поддержки POSIX в windows фактически нет)
4. В windows начиная с vista, изменилась модель драйверов и перезагружать машину после каждого "маломальского" повода не нужно.
5. Включение графической подсистемы ядра - увеличивает производительность, т.к. не нужны лишние переключения контекста и есть доступ к событиям ядра. Если бы ты взглянул на код x-сервера, то мог бы увидеть, что события мыши там поллились , что не может быть эффективно в принципе (сейчас может уже и исправили)
6. Возможность смены графической оболочки на ходу - спорное преимущество, гораздо важнее возможность выключать и включать таковую.
В общем, последние два абзаца никак не связаны с текстом выше, и содержат тучу неоднозначных "выводов". Ты меня приятно удивишь если сможешь ответить по существу.