一名曾在微软担任四年逆向工程师、现任职于Google的研究员劳里·柯克近日重新引发了持续数十年的Windows与Linux之争。她公开表示,Windows NT内核从工程设计角度来看至今仍是一项“工程奇迹”,在许多方面甚至让Linux相形见绌。她同时提出了一个颇为大胆的架空历史设想:如果微软在21世纪初推出一种允许大型企业自由修改和派生的“Open NT”,今天的服务器和云计算生态可能会呈现完全不同的格局。

柯克强调,她所赞赏的并不是Windows 11的开始菜单、Copilot或者广告,而是Windows底层的NT内核架构。她认为,NT从一开始就建立了较为完整的对象模型和安全体系,而Linux则是在传统Unix基础上逐步增加Capabilities、Namespaces、SELinux等安全机制,因此整体上显得更加分散。
柯克在社交平台上表示,如果站在程序员角度进行最简化的描述,NT更接近一种“面向对象”的设计,并且从诞生之初就拥有非常强的安全模型;相比之下,Linux的许多安全能力是在后来逐步添加进去的。她认为,如果今天从零开始设计一套面向未来的操作系统内核,最终形态很可能不会像Linux,而会更接近NT,甚至可能类似某种BSD分支。
Windows NT实际上是自1993年以来所有主要Windows版本的技术基础,包括今天的Windows 11。微软在1988年聘请了戴夫·卡特勒,此前他曾在DEC负责VMS操作系统开发。按照微软的说法,卡特勒带领的一小支前DEC工程师团队在真正开始编写代码之前花了大约半年时间制定规范,最初目标就包括可移植性、多处理器支持以及C2级安全认证。

微软退休工程师戴夫·普拉默也参与了这场讨论。他指出,NT并不是卡特勒第一次从零开始设计操作系统内核,此前他已经参与过RSX-11M和VMS,因此NT实际上是卡特勒第三次从头打造内核。
不过,NT并不是简单地把VMS换上Windows的外壳。它最初被称为NT OS/2,是一款强调可移植性的操作系统,最早甚至针对英特尔i860处理器进行开发,随后又转向MIPS架构。微软最终改变了NT的主要产品方向,从OS/2转向Win32,其中一个重要背景是Windows 3.1在短短六个月内售出了1600万份。
柯克所赞赏的核心之一,是NT的“对象”设计。在微软自己的技术术语中,NT并不是传统意义上使用C++等语言实现的“面向对象操作系统”,而是采用了“基于对象”的架构。进程、线程、文件、设备、注册表键、互斥体、作业以及访问令牌等资源,都被作为对象进行管理。

NT内部的对象管理器负责创建和销毁这些对象、维护对象命名空间、跟踪每个进程持有哪些对象,并管理相应的访问权限。不同系统组件通过对象所属组件提供的接口来使用这些对象,因此底层组件的内部实现发生变化时,可以在一定程度上避免影响其他组件。
普通Windows程序员最容易接触到这一设计的地方就是“句柄”。当应用程序打开一个文件时,Windows不会简单地把文件本身交给应用程序,而是返回一个句柄,并将已经授予该句柄的权限记录下来。之后程序对该文件进行操作时,系统会依据这些权限进行检查。如果一个句柄被复制,其权限可以进一步减少,却不能通过复制操作凭空增加。
柯克认为,这种对不同系统资源采用相对统一的管理方式非常优雅,也是NT架构的重要优势之一。
NT的安全模型同样建立在资源、身份和权限之上。用户登录Windows后,系统会创建一个访问令牌,其中包含用户的安全标识符SID、所属用户组以及相关系统权限。用户启动的进程通常会获得相应的访问令牌,而每一个可以被保护的对象则拥有安全描述符,其中包括访问控制列表,用于规定哪些SID可以获得哪些权限或者必须被拒绝。
当进程尝试访问一个对象时,Windows会将访问令牌与对象的访问控制列表进行匹配,然后返回一个具有相应权限的句柄。此外,安全描述符还可以包含用于审计的系统访问控制列表,从而记录对象访问成功或者失败的情况。
不过,这并不意味着拥有完善设计的内核就自动等于一个绝对安全的操作系统。Windows NT 3.5曾经获得C2安全评级,但当时的认证环境是没有网络连接的独立计算机,而且微软还针对文件和注册表默认权限进行了强化。随着Windows进入联网时代,驱动程序、默认配置以及几十年来积累的兼容性要求同样会对系统安全产生巨大影响。
柯克对Linux的主要批评之一,则是Linux在安全和权限管理方面采用了多个相互配合的机制。她提出的问题包括UID、GID、ACL、cgroups、各种安全策略、SELinux以及文件系统权限等,并认为这些机制之间缺少一个统一、直观的权限关系图。

不过,这种复杂性也正是Linux设计方式的一部分。UID和GID用于识别用户和用户组,文件权限和ACL负责保护文件,Capabilities可以把传统root账户拥有的能力拆分开来,例如允许一个Web服务器绑定80端口,却不必获得完整root权限。Namespaces则可以让进程看到独立的文件系统挂载、进程或者网络环境,容器技术正是建立在这一机制之上。cgroups则负责限制CPU、内存等资源的使用,而SELinux以及其他Linux Security Module则可以在此基础上施加额外的安全策略。
Linux的这些机制确实有不少是在内核发展过程中陆续加入的。例如SELinux最初由美国国家安全局在2001年以独立补丁形式提出,Linux随后建立了Linux Security Module框架,使不同安全模型可以通过统一的内核钩子进行接入。如今Linux内核已经支持SELinux、AppArmor、Smack、TOMOYO、Landlock等多种安全机制。
因此,两种操作系统的设计哲学实际上存在明显区别。NT倾向于围绕统一的对象模型进行集中管理,而Linux则更加注重可组合性,让不同机制承担不同任务,并允许发行版、管理员和应用场景自行组合。
柯克认为,这种差异在人工智能代理快速发展的今天尤其值得重新审视。她提出的核心问题是:“一个AI代理到底被允许做什么?”
传统程序通常按照用户明确发出的指令逐项执行,而AI代理可能在几分钟内连续执行数千个操作,自己生成并运行代码,读取文件,并把多个权限串联起来完成复杂任务。因此,操作系统不仅需要判断“谁”在运行程序,还需要更加明确地定义一个AI代理究竟能够访问什么资源、在什么范围内操作以及如何记录这些行为。
柯克认为,NT的对象模型能够让操作系统针对不同资源建立更加明确的权限关系,并在AI代理失控时提供更加集中和清晰的审计记录。不过,她也承认这仍然属于一种架构层面的设想,而不是已经得到证明的结论。
实际上,Linux也已经针对这一问题提供了越来越多的工具。Linux 5.13加入的Landlock允许即使没有特权的进程主动限制自身能够访问的文件系统和网络资源。这些限制可以继承给子进程,并且只能进一步收紧,不能被子进程放宽。再结合seccomp、Namespaces、cgroups以及各种LSM机制,Linux同样能够对AI代理进行较为严格的隔离。
微软自己也正在朝着类似方向发展。微软在2026年的Build大会上宣布了Microsoft Execution Containers,也就是MXC,让开发者声明AI代理能够访问哪些资源,并由Windows在运行期间执行这些限制。MXC还可以为代理创建独立的用户账户,使系统能够将代理执行的每项操作归属于特定身份。Windows 11现有的Agent Workspace也使用ACL来限制代理账户,使其权限不会超过用户本身。
换句话说,微软如今正在利用SID、访问令牌和ACL等NT传统机制解决AI代理权限问题,这恰好也是柯克认为NT架构具有优势的地方。不过,这并不意味着微软已经证明Linux无法胜任AI代理。微软自己推进AI操作系统的同时,也曾警告AI代理可能产生新的恶意软件和安全风险。

柯克随后提出了自己最有趣的架空历史设想:微软当年其实应该推出一个“Open NT”。
她设想的Open NT并不一定需要像GPL软件那样完全开放,而是允许大型企业在保持微软制定的基础安全和兼容性标准的情况下,对内核中的特定组件进行修改。例如,亚马逊在早期建设EC2云计算平台时,可以从Open NT派生出一个名为“AmazonNT”的版本,自行修改调度器、网络栈或者内存分配器,同时仍然遵守微软定义的核心兼容性和安全规范。
实际上,微软过去确实曾经在一定程度上尝试过类似模式。微软的Shared Source计划曾向大约1600家企业客户、大学和政府机构提供Windows源代码访问权限。2001年,奥地利内政部成为第一个获得Windows XP源代码的欧洲政府。
2006年,微软还推出了Windows Research Kernel,允许高校研究人员修改NT的调度器和内存管理器,用于教学和研究。不过,这些项目本质上仍然属于有限的源代码共享,并没有允许亚马逊等企业创建并商业发行自己的Windows NT分支。
至于微软为什么没有进一步开放NT,文章认为其中可能涉及授权收入、知识产权、技术支持成本,以及微软最为看重的Windows兼容性承诺。允许第三方长期修改内核,很可能意味着微软需要面对大量不同版本之间的兼容和安全问题。
Linux开发者则从另一个角度对Open NT设想提出了质疑。长期参与Linux内核图形子系统开发的David Airlie认为,真正的问题在于维护一个内核分支的长期成本。即使源代码完全开放,企业如果20年后仍然需要维护自己修改过的内存管理器或者调度器,也必须持续投入专门的工程团队。
Airlie指出,大量企业曾经尝试派生Linux版本,但经过几年后往往发现维护自己的分支成本太高,最终还是选择将修改提交回主线。Java生态中的不同JVM实现之所以能够长期存在,是因为它们背后拥有明确的商业客户和收入来源;而一个只服务于企业内部的NT分支则可能很难长期承担这种成本。
如果亚马逊真的修改了NT的调度器,那么微软每个月发布的安全修复都必须被重新合并、测试和验证。时间越长,这个分支就越接近于一个需要独立维护的操作系统内核团队。Linux的模式则是将大量企业需要的修改尽可能提交回主线,由整个社区共同维护。
NT本身也并非没有历史包袱。部分工程师指出,VMS当年的一致性设计并没有完全无损地传递到现代NT。Windows的注册表长期以来也一直是工程师争议较大的系统组件之一。

另一个争议来自图形系统。Windows NT 4.0时期,微软将Window Manager、GDI以及图形驱动程序移入内核空间,以提升图形性能。这意味着存在严重问题的图形驱动程序可能直接导致整个操作系统崩溃。Windows 2000随后进一步加入Windows Driver Model、即插即用、电源管理、WMI和作业对象等大量机制。
因此,今天Windows 11中的NT内核早已不是1993年NT 3.1刚发布时的那个内核。柯克真正称赞的是NT建立之初的一些基本架构理念,而不是认为现代Windows的所有设计都天然优于Linux。
从历史结果来看,Linux最终在服务器和云计算领域取得了NT没有实现的地位。Linux的开放许可证使任何组织都可以修改内核、运行在各种硬件上,并将改进提交回主线。随后出现的容器、开发工具以及Android等庞大生态,都进一步强化了这种发展模式。
而有趣的是,微软近年来反而一直在努力让Windows更好地运行Linux。Windows Subsystem for Linux不断获得性能和网络方面的改进,微软还推出了WSL Containers等功能,让用户可以直接在Windows环境中运行Linux容器。Google也开始为自己的AI工具加入WSL支持。
与此同时,柯克还提到了BSD。她认为,如果今天重新设计操作系统内核,那么除了NT之外,也可能会出现类似BSD的架构。她认为BSD整体结构相对整洁,而且早期就拥有Jails等隔离机制。
FreeBSD Jails可以限制进程看到的文件系统、用户和网络环境,而Capsicum则更加接近柯克所强调的能力模型。进入Capability Mode之后,进程无法随意访问全局命名空间,只能使用通过文件描述符明确授予自己的权限。有意思的是,Capsicum项目当年是在剑桥大学完成的,并获得了Google的研究资助。
从这个角度来看,柯克真正讨论的其实并不是Windows与Linux谁在所有场景下更优秀,而是一个更加基础的问题:操作系统究竟应该如何表示和控制“权限”。
NT的思路是让资源拥有明确类型,将访问权限附加到资源之上,并尽可能由操作系统统一检查和记录。Linux则从更加灵活的Unix基础出发,通过多个可以组合的机制满足不同环境的需要。两种方式都不能单独保证系统安全。
而AI代理的出现,正在让这个问题变得更加重要。过去操作系统最重要的问题是确认“哪个用户”正在执行操作;未来则必须进一步回答,一个AI代理可以代表谁、访问哪些资源、拥有多长时间的权限、能够执行什么操作,以及系统能否准确证明它到底做过什么。
Windows NT并没有成为服务器和云计算世界的主导者,这一位置最终由Linux获得。但从NT 3.1问世至今已经超过30年,Windows仍然在使用对象、句柄、访问令牌和ACL等最初设计理念,而微软如今又开始利用这些机制解决AI代理的权限隔离问题。
因此,劳里·柯克设想中的“Open NT”或许永远只会存在于架空历史之中,但随着计算机开始越来越多地替人类主动执行任务,一个越来越现实的问题正在摆在所有操作系统面前:当软件开始代表人类行动时,我们究竟应该允许它走多远。