猎云网11月26日报道 (编译:绿岛的索拿大)
长期以来Windows系统就有内核版本号就和产品的号码在更新换代时不一致增长的脾性。举个例子来说,Windows 7对软件现实的内核版本号是6.1,Windows 8的内核版本号是6.2,Windows 8.1的是6.3.
目前公测版的Windows 10也在在一定程度上沿袭了这个怪癖,在很长一段时间以来,他的内核版本号是6.4,直到现在。不久前国内科技媒体公开了一张显示Windows 10内核版本号变为10的图片。BuildFeed的跟踪的内部版本号也显示了10的序号,其他来源也纷纷证实了这个消息。
我们的消息源也确认了内核版本号变更的消息,声称Win 10的版本号将会确定为10.0,结束Windows五年以来内核版本号和实际版本号不一致的怪癖。在Win 10内核版本号变更之前,我们也收到消息称有自称为9.0版本号的系统。
程序的兼容性是微软长期使用6.0这个本来只是为Vista用的内核版本号的原因。由于各种各样的原因,有些出于善意的目的,有些出于并不是很纯良的居心,软件往往会寻求系统的内核版本号并基于此运行一系列的计算。有些时候,这些设计纯粹是为了避免Windows的Bug,比如有选择性的去使用一些新特性中有用但并不关键的部分。
而有些时候,软件寻求内核版本号的目的就不是那么纯良了。诸如处于兼容性和测试的需求拒绝选用新版本Windows特性进行工作,或者软件仅仅想进行一些测试。当然,有时这种情况不是故意产生的,而仅仅是版本检查时出现的错误。
Windows Vista将版本提升到了6.0。内核版本号变更的决定和Vista决心介入软件安全性等一系列改变,直接导致了Vista成为了Windows系列在软件兼容性上最臭名昭著的版本。整整一个世代的软件都建立在系统内核版本号为5(Windows XP的内核版本号)的假设上,当内核版本号变更为6的时候,他们立刻无所适从了。
微软针对特定软件的内核版本兼容问题有一个解决方案。AppCompat框架在Windows系统中置入了许多被称为“垫片”的小改动,正如其名,“垫片”从细小的地方调整Windows系统的运行方式,以解决软件和内核版本兼容问题。“垫片”在处理这些问题时最常用的方法被称为“版本号欺骗”,正如其名,当特定版本的软件询问Windows内核版本号的时候,“垫片”给出一个事先设定好的虚假版本号,以解决兼容问题。
但是,AppCompat系统是选择性适用的。Windows系统提供了一个可编辑的数据库来向“垫片”指明对哪些特定的软件进行微调以避免兼容性问题的发生。但是如果这个软件并不在数据库内,个人定制的软件显然都不在其列,那么“垫片”就不会对他们采取行动。这时,真正的内核版本号就会被报告给软件,如果存在兼容性问题则毫无办法。这个数据库是随着Windows定期更新而改变的,同时,为了避免上文提出的问题,微软提供了一个客户端工具,允许电脑管理员自定义“垫片”适用数据库。
为了避免像Vista一样因为兼容性问题而臭名昭著,Windows 7的内核版本号并没有升级为7,而是仅仅变更为6.1,相应的,Windows 8选择了6.2,Windows 8.1选择了6.3.
其实,从宏观上看内核版本号和他的变更真的不重要。微软的怪癖仅仅是让那些注意到这些细微之处的人有稍许惊奇而已:既然我的操作系统叫做Windows 8.1,为什么内核版本号不是8.1呢?
Win 10早期公开的框架中的内核版本号是6.4,看上去微软打算坚持他的癖好,但是现在似乎微软又决心改变了。我们相信10.0的版本号并不是最终决定,微软依然有可能改变回去,就像之前的9.0版本号一样,微软对此并没有给出确定的答复。
依据现有的信息,我们并不能准确的判断最终确定的Win 10的内核版本号是多少,我们甚至不能准确的预测这个改变的意义。微软近几年来在版本一向是有比较多的小私心的。
微软的小私心起源于Win 7,在Win 7中,微软对于API兼容行为进行了一系列的调整,通过使用一款叫做清单—一系列嵌入的可执行单元——的应用,微软将这些API行为的改变仅仅套用与声称支持Win 7的程序,而那些不声明支持Win 7的则沿用Vista的API兼容操作。想要使用Win 7的API兼容性,软件需要声称支持Win 7以进入清单。在Win 8的时候,微软也使用了这种方式,除非软件声明支持Win 8以加入清单,否则会沿袭旧操作系统的兼容模式。
任务管理器的“操作系统环境”栏为我们揭示了微软在这里的小私心。没有进入清单的软件在这一栏会注明“Windows Vista”;只有Win 8.1的操作系统组件在是Win8.1的,而其余软件的则是中间的版本号,例如,Office2013,它的操作系统环境是Windows 7。
在Win 8.1上,微软则更加人性化了。不像以往由API询问软件的操作系统环境或者使用清单来予以区别,Win 8.1把所有没有明确支持Win 8.1的都归类于Win 8,通过这样人性化的处理,旧版软件就会认为他们还在Win 8环境下。
通过这样的不断改进,内核版本号的改变变得安全多了。对于像Vista一样因为内核版本不兼容而爆出各种恶名的恐惧已经成为了过去。只有声明支持Win 10的软件才会发现他的内核版本号是10。通过微软的小私心儿,现在Win 10可以安安全全的拥有10.0的内核版本号了。
Source: Ars