千亿球友会

新闻中心

谷歌研究员称Windows NT内核设计仍显优越

劳里·柯克,这位曾在微软担任四年逆向工程师,目前在谷歌任职的研究员,再次点燃了关于Windows与Linux的争论。她公开表示,从工程设计的角度来看,Windows NT内核至今仍然被视为一项“工程奇迹”,在许多方面甚至超越了Linux。她大胆提出,如果微软在21世纪初推出一款允许大型企业自由修改和衍生的“Open NT”,今天的服务器和云计算环境可能会截然不同。

柯克强调,她所欣赏的并非Windows 11的开始菜单、Copilot或广告,而是其底层的NT内核架构。她认为,NT自初始阶段就建立了较为完整的对象模型和安全体系,而Linux则是基于传统Unix逐步添加Capabilities、Namespaces、SELinux等安全机制,因此显得更加分散。她在社交平台上表示,从编程的简化视角来看,NT更贴近“面向对象”的设计,自问世以来便拥有强大的安全模型;相比之下,Linux的许多安全特性是在后期逐渐增添的。

如果从头设计一个未来的操作系统内核,柯克认为最终版本可能会更接近于NT,甚至可能与某些BSD分支相似。实际上,Windows NT自1993年以来成为所有主要Windows版本的技术基础,包括当前的Windows 11。微软在1988年聘请了戴夫·卡特勒,他曾在DEC负责开发VMS操作系统。微软表示,卡特勒带领的一个小团队在编写代码前花费了约半年的时间进行规范设计,初始目标涵盖了可移植性、多处理器支持和C2级安全认证。

此外,微软退休工程师戴夫·普拉默也参与了这场讨论,他指出,NT并不是卡特勒第一次从零开始设计内核。实际上,在此之前他已经参与了RSX-11M和VMS的开发,因此NT是他第三次从头构建内核。值得注意的是,NT并不只是给VMS盖上了Windows的外壳。最初称为NT OS/2的它,是一款强调可移植性的操作系统,起初甚至针对英特尔i860处理器开发,随后又转向MIPS架构。最终,微软调整了NT的主要产品方向,从OS/2转向Win32,部分原因是Windows 3.1在短短六个月内售出了1600万份。

柯克特别赞赏的,是NT的“对象”设计。根据微软的术语,NT并非传统意义上的“面向对象操作系统”,而是一种“基于对象”的架构。无论是进程、线程、文件还是设备,所有资源都作为对象进行管理。NT内部的对象管理器负责创建和销毁这些对象,维护对象命名空间,并跟踪每个进程持有哪些对象,同时管理相应的访问权限。不同系统组件通过对象所属组件提供的接口来使用这些对象,因此当底层组件实现发生变化时,对其他组件的影响可保持在一定程度的范围内。

Windows程序员最常接触到的设计就是“句柄”。当应用程序打开文件时,Windows不会直接将文件交给应用程序,而是返回一个句柄,并记录已授予该句柄的权限。后续的文件操作中,系统会依据这些权限进行检查。即便一个句柄被复制,其权限仍可减少,但不能通过简单复制来增添新权限。柯克认为,这种对不同系统资源的统一管理方式是NT架构的一个重要优势。

NT的安全模型同样是建立在资源、身份和权限的基础上。用户登录Windows后,系统会创建一个访问令牌,里面包含用户的安全标识符SID、所属用户组及相关权限。用户启动的进程通常会获得相应的访问令牌,而每个可被保护的对象都会有安全描述符,规定哪些SID可以获得权限或被拒绝。当进程尝试访问对象时,Windows会将访问令牌与对象的访问控制列表进行匹配,返回具有相应权限的句柄。此外,安全描述符还可以包含审计功能,以记录对象访问的成功或失败情况。

然而,拥有精心设计的内核并不意味着操作系统就一定安全。Windows NT 3.5曾获得C2安全评级,但当时的认证环境是在没有网络连接的独立计算机上进行的,而且微软还强化了文件和注册表的默认权限。进入网络时代后,驱动程序、默认配置以及多年来的兼容性要求显著影响了系统安全。

柯克对Linux的批评之一在于其在安全和权限管理上采用了多个相互作用的机制。她指出,包括UID、GID、ACL、cgroups、各种安全策略以及SELinux等,这些机制之间缺乏一种统一且直观的权限关系图。虽然这种复杂性其实也是Linux设计的一部分,但她认为,在进行安全管理时缺少一种清晰的结构可能导致潜在的问题。UID和GID用于标识用户和用户组,而文件权限及ACL则负责保护文件安全。

[无下一篇]

这家足球俱乐部的环境非常好,场地宽敞,设备齐全,学到了很多实战技巧,提升了自己的球技!...