Аннотация:
Лори Кирк, исследователь, которая четыре года работала реверс-инженером в Microsoft, а сейчас работает в Google, недавно возобновила многолетние дебаты между Windows и Linux. Она публично заявила, что ядро Windows NT по-прежнему остается «инженерным чудом» с точки зрения инженерного проектирования и во многих аспектах даже затмевает Linux.
Она также выдвинула довольно смелый альтернативный исторический сценарий: если Microsoft запустила «Open NT» в начале 21-го века, которая позволила крупным предприятиям свободно модифицировать и получать наследие, сегодняшняя экология серверов и облачных вычислений может представить совершенно иной ландшафт.

Кирк подчеркнула, что ее восхищают не меню «Пуск», Copilot или реклама Windows 11, а базовая архитектура ядра NT Windows. Она считает, что NT с самого начала создала относительно полную объектную модель и систему безопасности, в то время как Linux постепенно добавлял механизмы безопасности, такие как возможности, пространства имен и SELinux, на основе традиционной Unix, поэтому в целом она выглядит более рассредоточенной.
Кирк заявил в социальных сетях, что если дать самое простое описание с точки зрения программиста, NT ближе к «объектно-ориентированному» дизайну и с самого начала имеет очень надежную модель безопасности; напротив, многие возможности безопасности Linux были постепенно добавлены позже. Она считает, что если ядро операционной системы, ориентированное на будущее, будет спроектировано сегодня с нуля, окончательная форма, вероятно, не будет похожа на Linux, а будет ближе к NT и, возможно, даже будет похожа на какую-нибудь ветвь BSD.
Windows NT фактически является технической основой для всех основных версий Windows с 1993 года, включая сегодняшнюю Windows 11. В 1988 году Microsoft наняла Дэйва Катлера, который ранее отвечал за разработку операционной системы VMS в DEC. По данным Microsoft, небольшая группа бывших инженеров DEC под руководством Катлера потратила около шести месяцев на разработку спецификации, прежде чем приступить к написанию кода. Первоначальные цели включали переносимость, поддержку нескольких процессоров и сертификацию безопасности уровня C2.

В обсуждении также принял участие бывший инженер Microsoft Дэйв Пламмер. Он отметил, что NT — это не первый раз, когда Катлер разрабатывает ядро операционной системы с нуля. Ранее он участвовал в разработке RSX-11M и VMS, так что Катлер уже в третий раз собирает ядро с нуля для NT.
Однако NT не просто заменяет VMS оболочкой Windows. Первоначально она называлась NT OS/2 — операционная система, в которой упор делался на переносимость. Сначала он был разработан для процессора Intel i860, а затем перешёл на архитектуру MIPS. В конечном итоге Microsoft изменила основное направление разработки продуктов NT с OS/2 на Win32. Важным предысторией было то, что всего за шесть месяцев было продано 16 миллионов копий Windows 3.1.
Одной из основных вещей, которыми восхищался Кирк, был «объектный» дизайн NT. В собственной технической терминологии Microsoft NT не является «объектно-ориентированной операционной системой», реализованной на таких языках, как C++, в традиционном смысле, а использует «объектно-ориентированную» архитектуру. Ресурсы, такие как процессы, потоки, файлы, устройства, ключи реестра, мьютексы, задания и токены доступа, управляются как объекты.
Внутренний менеджер объектов NT отвечает за создание и уничтожение этих объектов, поддержку пространства имен объектов, отслеживание того, какие объекты принадлежат каждому процессу, и управление соответствующими правами доступа. Различные компоненты системы используют эти объекты через интерфейсы, предоставляемые компонентом, которому принадлежит объект, поэтому, когда внутренняя реализация базового компонента изменяется, это может в определенной степени не влиять на другие компоненты.
Обычным Windows-программистам проще всего соприкоснуться с этой конструкцией — «ручкой». Когда приложение открывает файл, Windows не просто передает сам файл приложению, но возвращает дескриптор и записывает разрешения, предоставленные этому дескриптору. Когда программа позже будет работать с файлом, система будет проверять его на основе этих разрешений. Если дескриптор копируется, его разрешения можно дополнительно уменьшить, но их нельзя увеличить «из воздуха» посредством операции копирования.
Кирк считает, что этот относительно унифицированный метод управления различными системными ресурсами очень элегантен и также является одним из важных преимуществ архитектуры NT.
Модель безопасности NT также основана на ресурсах, идентификаторах и разрешениях. После входа пользователя в Windows система создает токен доступа, который содержит идентификатор безопасности SID пользователя, группу пользователей, к которой он принадлежит, и соответствующие системные разрешения. Процессы, запускаемые пользователями, обычно получают соответствующие токены доступа, и каждый объект, который можно защитить, имеет дескриптор безопасности, который включает в себя список управления доступом, в котором указано, какие SID могут получить какие разрешения или должны быть запрещены.
Когда процесс пытается получить доступ к объекту, Windows сопоставляет токен доступа со списком управления доступом к объекту и возвращает дескриптор с соответствующими разрешениями. Кроме того, дескрипторы безопасности могут содержать списки управления доступом к системе для целей аудита, чтобы регистрировать успешный или неудачный доступ к объекту.
Однако это не означает, что хорошо спроектированное ядро автоматически означает абсолютно безопасную операционную систему. Windows NT 3.5 когда-то получила рейтинг безопасности C2, но среда сертификации в то время представляла собой автономный компьютер без подключения к сети, а Microsoft также усилила разрешения по умолчанию для файлов и реестра. Поскольку Windows вступает в эпоху Интернета, драйверы, конфигурации по умолчанию и требования совместимости, накопленные за десятилетия, также будут иметь огромное влияние на безопасность системы.
Одним из основных критических замечаний Кирка в адрес Linux является то, что Linux использует несколько механизмов взаимодействия для обеспечения безопасности и управления разрешениями. Вопросы, которые она подняла, включали UID, GID, ACL, cgroups, различные политики безопасности, SELinux, разрешения файловой системы и т. д., и считала, что между этими механизмами отсутствует унифицированная и интуитивно понятная диаграмма отношений разрешений.

Однако эта сложность также является частью конструкции Linux. UID и GID используются для идентификации пользователей и групп пользователей, а права доступа к файлам и ACL отвечают за защиту файлов. Возможности могут разделить возможности традиционных учетных записей root, например, разрешить веб-серверу привязывать порт 80 без получения полных прав root. Пространства имен позволяют процессам видеть монтирование независимых файловых систем, процессов или сетевых сред. На этом механизме построена контейнерная технология. cgroups отвечают за ограничение использования таких ресурсов, как ЦП и память, а SELinux и другие модули безопасности Linux могут налагать на этой основе дополнительные политики безопасности.
Многие из этих механизмов Linux действительно добавлялись постепенно во время разработки ядра. Например, SELinux был первоначально предложен Агентством национальной безопасности США в виде независимого патча в 2001 году. Впоследствии Linux создал структуру модуля безопасности Linux, чтобы можно было получить доступ к различным моделям безопасности через унифицированные перехватчики ядра. Сегодня ядро Linux уже поддерживает несколько механизмов безопасности, таких как SELinux, AppArmor, Smack, TOMOYO и Landlock.
Поэтому на самом деле существуют существенные различия в философии проектирования двух операционных систем. NT имеет тенденцию централизовать управление вокруг единой объектной модели, в то время как Linux уделяет больше внимания возможности компоновки, позволяя различным механизмам выполнять разные задачи и позволяя комбинировать дистрибутивы, администраторов и сценарии приложений.
Кирк считает, что к этой разнице особенно стоит вернуться сегодня, в условиях быстрого развития агентов искусственного интеллекта. Основной вопрос, который она подняла, заключался в следующем: «Что именно разрешено делать ИИ-агенту?»
Традиционные программы обычно выполняются одна за другой в соответствии с инструкциями, явно заданными пользователем, в то время как агенты ИИ могут непрерывно выполнять тысячи операций за несколько минут, самостоятельно генерировать и запускать код, читать файлы и объединять несколько разрешений для выполнения сложных задач. Таким образом, операционной системе необходимо не только определить, «кто» запускает программу, но также более четко определить, к каким ресурсам может получить доступ агент ИИ, в какой области он работает и как записывать это поведение.
Кирк считает, что объектная модель NT может позволить операционной системе устанавливать более четкие отношения разрешений для различных ресурсов и обеспечивать более централизованную и четкую запись аудита, когда ИИ-агент теряет контроль. Однако она также признала, что это все еще архитектурная гипотеза, а не доказанный вывод.
На самом деле, Linux предоставляет все больше и больше инструментов для решения этой проблемы. Landlock, добавленный в Linux 5.13, позволяет даже непривилегированным процессам активно ограничивать файловую систему и сетевые ресурсы, к которым они могут получить доступ. Эти ограничения могут быть унаследованы дочерними процессами и могут только ужесточаться, но не ослабляться дочерним процессом. В сочетании с seccomp, пространствами имен, cgroups и различными механизмами LSM Linux также может строго изолировать агентов ИИ.
Сама Microsoft движется в том же направлении. Microsoft анонсировала Microsoft Execution Containers, или MXC, на конференции 2026 Build, позволяющую разработчикам объявлять, к каким ресурсам может получить доступ ИИ-агент, а Windows обеспечивать соблюдение этих ограничений во время выполнения. MXC также может создавать независимые учетные записи пользователей для агентов, позволяя системе приписывать каждую операцию, выполняемую агентом, определенному идентификатору. Существующая рабочая область агента в Windows 11 также использует ACL для ограничения учетных записей агентов, чтобы их разрешения не превышали права пользователя.
Другими словами, Microsoft теперь использует традиционные механизмы NT, такие как SID, токены доступа и списки ACL, для решения проблемы разрешений агентов ИИ. Именно здесь, по мнению Кирка, архитектура NT имеет преимущества. Однако это не означает, что Microsoft доказала, что Linux не способен использовать агенты ИИ. Хотя сама Microsoft совершенствует свою операционную систему искусственного интеллекта, она также предупреждает, что агенты искусственного интеллекта могут создавать новые вредоносные программы и угрозы безопасности.

Затем Кирк предложил свою самую интересную альтернативную историческую идею: Microsoft действительно должна тогда запустить «Open NT».
Предлагаемая ею Open NT не обязательно должна быть полностью открытой, как программное обеспечение GPL, но позволяет крупным предприятиям изменять определенные компоненты ядра, сохраняя при этом базовые стандарты безопасности и совместимости, установленные Microsoft. Например, когда Amazon на заре создавала платформу облачных вычислений EC2, она могла получить версию под названием «AmazonNT» из Open NT и самостоятельно модифицировать планировщик, сетевой стек или распределитель памяти, сохраняя при этом соответствие основным спецификациям совместимости и безопасности, определенным Microsoft.
На самом деле, Microsoft действительно в определенной степени пробовала подобную модель в прошлом. Программа Microsoft Shared Source предоставила доступ к исходному коду Windows примерно 1600 корпоративным клиентам, университетам и правительственным учреждениям. В 2001 году Министерство внутренних дел Австрии стало первым европейским правительством, получившим исходный код Windows XP.
В 2006 году Microsoft также запустила ядро Windows Research Kernel, которое позволяет университетским исследователям модифицировать планировщик и диспетчер памяти NT для обучения и исследований. Однако эти проекты по своей природе по-прежнему носят ограниченный характер совместного использования исходного кода и не позволяют таким компаниям, как Amazon, создавать и коммерчески распространять свои собственные филиалы Windows NT.
Что касается того, почему Microsoft не стала более открытой для NT, в статье предполагается, что это может быть связано с доходами от лицензирования, правами интеллектуальной собственности, расходами на техническую поддержку и наиболее важным обязательством Microsoft по обеспечению совместимости с Windows. Разрешение третьим сторонам изменять ядро в течение длительного времени, вероятно, будет означать, что Microsoft придется столкнуться с большим количеством проблем совместимости и безопасности между различными версиями.
Разработчики Linux поставили под сомнение концепцию Open NT с другой стороны. Дэвид Эйрли, который уже давно занимается разработкой графической подсистемы ядра Linux, считает, что настоящая проблема — это долгосрочные затраты на поддержание ветки ядра. Даже если исходный код будет полностью открыт, если компаниям по-прежнему придется поддерживать свои собственные модифицированные менеджеры памяти или планировщики 20 лет спустя, им придется продолжать инвестировать в специализированные команды инженеров.
Эрли отметил, что большое количество компаний пытались создать форк версий Linux, но через несколько лет они часто обнаруживают, что стоимость поддержки собственных филиалов слишком высока, и в конечном итоге решают отправить изменения обратно в основную ветку. Причина, по которой различные реализации JVM в экосистеме Java могут существовать в течение длительного времени, заключается в том, что за ними стоят четкие коммерческие клиенты и источники дохода; в то время как филиалу NT, который обслуживает только внутренние предприятия, может быть трудно нести такие расходы в долгосрочной перспективе.
Если Amazon внесет изменения в планировщик NT, то исправления безопасности, которые Microsoft выпускает каждый месяц, придется повторно объединять, тестировать и проверять. Чем больше времени проходит, тем ближе эта ветвь становится к команде ядра операционной системы, которую необходимо поддерживать независимо. Модель Linux заключается в том, чтобы отправить большое количество изменений, требуемых предприятиями, обратно в основную ветку, насколько это возможно, и поддерживать их совместно всем сообществом.
Сама NT не лишена исторического багажа. Некоторые инженеры отмечали, что последовательный дизайн VMS не был полностью перенесен в современную NT. Реестр Windows уже давно является одним из самых спорных компонентов системы среди инженеров.

Еще один спор возникает по поводу графической системы. В период существования Windows NT 4.0 Microsoft переместила диспетчер окон, GDI и графические драйверы в пространство ядра, чтобы улучшить производительность графики. Это означает, что серьезно проблемный графический драйвер может напрямую привести к сбою всей операционной системы. Затем в Windows 2000 было добавлено большое количество механизмов, таких как модель драйверов Windows, Plug and Play, управление питанием, WMI и объекты заданий.
Поэтому ядро NT в Windows 11 сегодня больше не является тем же ядром, которое было в момент первого выпуска NT 3.1 в 1993 году. Что действительно похвалил Кирк, так это некоторые основные архитектурные концепции, когда была основана NT, вместо того, чтобы думать, что все конструкции современной Windows по своей сути превосходят Linux.
Судя по историческим результатам, Linux в конечном итоге занял позицию в области серверных и облачных вычислений, которой не удалось достичь NT. Открытая лицензия Linux позволяет любой организации модифицировать ядро, запускать его на различном оборудовании и возвращать улучшения в основную версию. Последующее появление контейнеров, инструментов разработки и огромных экосистем, таких как Android, еще больше укрепило эту модель разработки.
Интересно то, что в последние годы Microsoft усердно работает над тем, чтобы Windows лучше работала с Linux. Подсистема Windows для Linux продолжает получать улучшения производительности и сети, а Microsoft также запустила такие функции, как контейнеры WSL, позволяющие пользователям запускать контейнеры Linux непосредственно в среде Windows. Google также начал добавлять поддержку WSL в свои собственные инструменты искусственного интеллекта.
В то же время Кирк упомянул и BSD. Она считает, что если сегодня перепроектировать ядро операционной системы, то помимо NT может появиться и BSD-подобная архитектура. Она считает, что общая структура BSD относительно аккуратна и в первые дни своего существования в ней есть механизмы изоляции, такие как Jails.
FreeBSD Jails может ограничивать файловые системы, пользователей и сетевое окружение, которые видит процесс, в то время как Capsicum ближе к модели возможностей, подчеркнутой Кирком. После входа в режим возможностей процесс не может получить доступ к глобальному пространству имен по своему желанию и может использовать только разрешения, явно предоставленные ему через файловые дескрипторы. Интересно, что проект Capsicum был завершен в Кембриджском университете и получил финансирование на исследования от Google.
С этой точки зрения Кирк на самом деле обсуждает не то, кто лучше во всех сценариях, Windows или Linux, а более фундаментальный вопрос: как операционная система должна представлять и контролировать «разрешения».
Идея NT состоит в том, чтобы позволить ресурсам иметь четкие типы, присвоить разрешения на доступ к ресурсам, а также проверять и записывать их единообразно в операционной системе, насколько это возможно. Linux начинается с более гибкой основы Unix и удовлетворяет потребности различных сред с помощью множества механизмов, которые можно комбинировать. Ни один из этих методов сам по себе не может обеспечить безопасность системы.
Появление агентов ИИ делает эту проблему еще более важной. Раньше самым важным вопросом для операционных систем было подтверждение того, «какой пользователь» выполняет операцию; в будущем он должен ответить, кого может представлять агент ИИ, к каким ресурсам он может получить доступ, как долго он имеет разрешение, какие операции он может выполнять и может ли система точно доказать, что он сделал.
Windows NT не стала доминирующим игроком в мире серверов и облачных вычислений, и эту позицию в конечном итоге занял Linux. Однако с момента появления NT 3.1 прошло более 30 лет. Windows по-прежнему использует оригинальные концепции проектирования объектов, дескрипторов, токенов доступа и списков ACL, а Microsoft теперь начинает использовать эти механизмы для решения проблемы изоляции разрешений агентов ИИ.
Поэтому «Открытая NT», представленная Лори Кирк, может навсегда существовать только в вымышленной истории, но по мере того, как компьютеры начинают активно выполнять все больше и больше задач для людей, все операционные системы сталкиваются со все более реальной проблемой: когда программное обеспечение начинает действовать от имени людей, как далеко мы должны ему позволить?
Комментарии