虚也实也,你的Windows 10被架空了么?

    Windows 10有一个很大的新功能,被称为Windows历史上最大的一个改动。这个功能很神秘,虽然安装好Windows 10它就存在了,但它可能没有被启用,因为它是动态启用的。即使启用了这个新功能,你可能也不知道,因为它很隐蔽,没有界面,深藏不露。

    莫说是普通用户,即使是专业的软件工程师,对它也知之甚少。个别人可能听说过它,但很可能也搞不太清楚,因为从技术角度来说,完全理解它的难度很大。它到底叫什么呢?这个简单的问题也不太好回答,因为它有很多个名字。

    坦率说,老雷不喜欢这个功能。因此也不愿意谈它。之所以要写这个短文,是想提醒大家注意,并教大家如何禁用它。(冒着得罪微软的巨大风险)

    前些天老雷的Windows 10一直“嚷嚷”要求自动升级,有一天下午有些空闲,老雷便答应了。可是这一升级,就是几个小时的时间。

    先是在0%的阶段持续了若干分钟。

    之后的每个1%都停顿很久,举步维艰。到18%时,就用了1个半小时还多。  

    看到这个速度,老雷不想在办公室里继续等待了,合上本子,将其放进背包,回家。

    又过了至少一个小时后,进度条似乎走完了100%,屏幕显示“还可能需要几分钟” ,并再三嘱咐“请勿关闭电脑”(关了可能就再也起不来了,呵呵) 。

   接下来的提示信息,让老雷颇感惊诧,屏幕上方呈现两行文字,第一行是“剑阁峥嵘而崔嵬,一夫当关,万夫莫开。”

    只看这一行,真是很好地形容了这次升级的艰难,堪比让CPU行走于“地崩山摧壮士死,然后天梯石栈相钩连”的蜀道,如果CPU会说话,可能早就高喊“噫吁戏,危呼高哉”了。不知道这条消息出自哪位高人之手。没错,原作是李白,老雷指的是把这句话引用到这里的人。难道是翻译么?不知道英文原文是什么.

    继续读第二句,“这些更新将为你的网络之旅保驾护航。”调子变了,看来两句话都是描述这次更新的内容,是给电脑增加一夫当关万夫莫开的安全组件。真好。

    整个升级过程大约花了2个小时,重启,输入密码登录,顺利进入系统。这样老雷松了一口气。

    因为后半部分是电池供电进行的,所以进入系统后就看到电池电量不足的提示。(有格友或许大喊,不插电CPU跑不快啊,老雷也知道,可是忘了啊,没有想到要用这么久时间呀)

    升级好了系统后,一个明显的变化就是速度变慢。尤其是启动一向比较缓慢的Visual Studio时,要花数秒钟的时间。打开Caffe项目,又是一阵好等。

    这样升级后速度变慢的情况当然令人不悦,格友厌之,老雷亦厌之。

    Ctrl + Shift + Esc唤出任务管理器,排查好人坏人,果然发现异端。

    诸位看官,睁大眼睛看上面的截图,注意加亮那一行和它上面一行。两行一个叫System,另一个叫Secure System,最后一列的描述部分居然都一样,都叫NT Kernel & System。

    了解NT内核的各位知道,进程ID为4的System进程是内核的宿主进程,是NT系统的总指挥部,一个系统里只有一个,现在怎么多了一个?

    “闲言碎语不要讲”,这个变化就是本文开头所说的Windows历史上的最大改动。简而言之,这个改动的一个基本特征就是系统里由原来的一个内核变为两个。那么一山岂容二虎,它们不打架么?两个内核都直接管理硬件当然不行,解决的方法是把它们都“架空”,分别跑在各自的虚拟机里。那么这样的话,需要一个VMM(虚拟机监视器)来管理啊,诚然。但这对于微软来说,没有难度。用微软的话来说:“俺们家有Hyper-v,现成的,这太好办了!”

    用老雷画的架构图,新的系统布局是这样的:Hyper-V上面运行着两个虚拟机,左边是用户看得见的普通环境,右边是所谓的安全内核和隔离的用户空间(简称IUM)。

    按照微软官方的说法,这个新功能的主要目的是为了安全。右侧的虚拟机提供了一个隐秘的“安全”环境,用来执行敏感的操作,防止被嗅探和窃密。

    使用内核调试,也可以看到上面提到的第二个系统进程,即下图中的Secure System。

    它其实是运行在普通NT虚拟机中的一个影子进程,用于两个虚拟机之间的通信。这个进程的特点是没有任何线程。

    安全是需要的,但是如此改变系统架构的代价也太大了。首先会影响系统的性能,原本直接跑在硬件上的Windows 10改为在虚拟机里运行,很多操作会导致VM EXIT,CPU转换到-1层的VMM运行,VMM层处理好了,再执行VM RESUME,让CPU回到虚拟机执行(这几句仅给geek们啊 :-)),这样兜圈子当然会影响速度。或许可以用架空这个词来简单形容这个变化,原本是系统老大的NT内核现在被“架空”了。

    这样架空NT内核的另一个代价是可能导致兼容性故障,一些时间敏感的驱动可能会受到影响而罢工。比如老雷第一次看到这样的系统就是因为有同事调试显卡驱动的兼容性问题。

    做了上面一番查看后,可以确认Windows 10在升级时自动启用了安全内核(姑且这样称呼它吧)。是的,自动启用,没有增求意见。也没有询问这是谁的电脑?(哈哈)

    那么,如何禁止这个功能呢?办法很简单,几句话就说的清,一学就会。但是微软如果问了,千万别说是老雷教的啊!:-)

    启动一个管理员权限的控制台,执行bcdedit,可以看到hypervisorlaunchtype项应该是auto或者on(第三种检测方法,前面已经介绍了两种)。

    然后bcdedit /set hypervisorlaunchtype off

    当然了,需要重启才能生效。

    在关于Windows 10主题的庐山研习班上,以及去年的微软Ignite技术大会上,老雷都曾仔细介绍过IUM。并且都引用了孔子的话来评价这个功能。

    “吾党之小子狂简,斐然成章,不知所以裁之。”对于狂简二字,朱熹给出了非常经典的注解:“志大而略于事也”。在老雷收集的和刻线装本《论语》残卷中,刚好包含了这句话。“子在陈,曰:归于,归于,吾党之小子狂简......”

    软件难做,做Windows这样的系统软件更难,(微软的同行们看了这几句话或许舒心一些)。其实对于工作在类似Windows这样“成熟”项目中的人而言,都存在一个“修旧”还是“加新”的选择。修补现有功能不好做,往往牵一发而动全身。还不如增加新功能,或者索性改变布局,开辟出一个亮堂堂的新天地,这样看起来大气,说起来好听,容易出成绩。或许就因为这个原因,几乎所有软件都越做越大,需要减肥,但却“不知所以裁之”。

    不仅是Windows本身的开发不好做,在Windows环境上开发驱动和应用的难度其实也越来越高。不过短文已经不断,有兴趣的同行请关注软件调试研习班针对Windows的特别专题

    

***********************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生。

欢迎关注格友公众号

    


    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值