Найти в Дзене
IThub Санкт-Петербург

Чем отличается архитектура Windows и MacOS?

Именно в этом месте проходит граница, разделяющая эти конкурирующие операционные системы на два противоположных по взгляду на устройство систем лагеря. Windows
Современный Windows построен на закрытом гибридном ядре WIndows NT. Система делится на 2 больших слоя: пользовательский режим, и режим ядра. Они отличаются уровнем привилегий и полномочий. У моделя в режиме ядра полномочий, разумеется, больше. Ядро у Windows больше такового в macOS в плане компонентов: в него заложено множество функциональных модулей, что повышает производительность, но сильно снижает стабильность (больше модулей -> больше точек возможного отказа). Если что-то сломается в ядре, то встанет вся система.
Для сравнения - у macOS на уровне ядра меньше модулей, и в целом система имеет больше слоёв. Разработчики оставили на уровне ядра только жизненно важные модули -> вероятность остановки системы ниже.
Кроме того, в ядре Windows находится графический интерфейс - GDI, который отвечает за отрисовку окошек на вашем мо

Важное отличие macOS и Windows - архитектура.

Именно в этом месте проходит граница, разделяющая эти конкурирующие операционные системы на два противоположных по взгляду на устройство систем лагеря.

Windows
Современный Windows построен на закрытом гибридном ядре WIndows NT. Система делится на 2 больших слоя: пользовательский режим, и режим ядра. Они отличаются уровнем привилегий и полномочий. У моделя в режиме ядра полномочий, разумеется, больше. Ядро у Windows больше такового в macOS в плане компонентов: в него заложено множество функциональных модулей, что повышает производительность, но сильно снижает стабильность (больше модулей -> больше точек возможного отказа). Если что-то сломается в ядре, то встанет вся система.


Для сравнения - у macOS на уровне ядра меньше модулей, и в целом система имеет больше слоёв. Разработчики оставили на уровне ядра только жизненно важные модули -> вероятность остановки системы ниже.
Кроме того, в ядре Windows находится графический интерфейс - GDI, который отвечает за отрисовку окошек на вашем мониторе. Задумывалось это ещё в далёком 1993 скорее всего с целью повышения эффективности отрисовки интерфейса за счёт прямого доступа к ресурсам. Но, по факту, GDI имеет кучу ограничений и нюансов - невозможно получить качественную анимацию (не умеет синхронизироваться с кадровым буфером), не годится для 3D графики. Если интерфейс перегрузить (что сделать не так-то и трудно) - вся система будет "тормозить", из-за того ядро не сможет нормально функционировать.


Еще одна из особенностей: драйверы устройств работают в том же пространстве памяти, что и ядро системы, и в теории могут поломать ядро или внести изменения в его работу. Механизмы защиты - сертификация производителей драйверов (то есть защиты нет). В Win11 добавили функцию "Изоляция ядра", чтобы исключить доступ к элементам ядра извне при помощи тех же драйверов, но это сильно снижает производительность системы (в отдельных сценариях до 20%)

MacOS
macOS относится к семейству Unix-подобных систем, и базируется на ядре XNU (акроним от X is Not Unix), которое в свою очередь функционирует на микроядре Mach и частичных заимствований из Unix системы BSD. macOS начиная с версии 10.5 проходит официальную сертификацию и получает статус Unix системы.
Архитектура macOS разделяет систему на слои, управление ресурсами происходит на уровне ядра. Там кусок ядра BSD со своим набором модулей, и микроядро Mach. Также на уровне ядра находятся модули отвечающие за работу файловых систем и сетевые расширения ядра.
Все остальные функции системы вынесены на уровни выше, в пространство пользователя, и обладают пониженными привилегиями, и если один из модулей сломается, то система продолжит работу и даст возможность перезапустить сломанную службу.


В отличии от Windows, где графический интерфейс вшит в ядро, основной интерфейс macOS - текстовый. Здесь в приоритете командная строка, а графическая оболочка является лишь одним из множества процессов, который работает на уровне пользователя, что также повышает стабильность. Отрисовка окон происходит за счёт набора компонентов Quartz, чьи возможности больше, чем у конкурента в виде GDI. Если графическое окружение зависнет, то это не конец - Quartz перезагрузится, и система продолжит работу.


Микроядро Mach обеспечивает многозадачность, распределение ресурсов и управление памятью таким образом, что процессы изолированы - у каждого своё адресное пространство в памяти ("вредный" процесс не сможет навредить другим процессам). Провести атаку на систему сложнее, так как добравшись до уровня ядра через, например, модуль сетевого расширения, потенциальный хакер окажется в нём в изоляции, не имея доступ к другим процессам. Вдобавок к этому, в Unix части ядра BSD работает многоуровневая система разрешений и политик доступа, что делает систему более безопасной и стабильной на уровне архитектуры.


Но есть и нюанс, которым реализация расплачивается за стабильность и безопасность
, и имя ему - протокол IPС. Взаимодействие процессов из разных слоёв обходится дорого с точки зрения времени процессора, и производительность может сильно проседать. Для разрешения проблемы, разработчики реализовали перенос в слой ядра компонентов, которые часто взаимодействуют друг с другом, и даже придумали протокол XPC, который вставляет палки в колеса разработчикам, но минимизирует просадки производительности. Но, полностью избавиться от медленного IPC разработчики не смогли, так что тут в жертву стабильности и безопасности ставится производительность.

Самая большая разница - в приоритетах и подходах в реализации. У Microsoft получилась система со множеством фирменных архитектурных нюансов, которые сказываются на опыте использования. Разработчики macOS пошли другим путём, и мы получили стабильную Unix систему со своими недостатками и особенностями.

Материал подготовлен преподавателем колледжа программирования itHub.