不是完全加载,只加载必要的组件。
在WinXP时代,如果使用“安全模式”启动Windows,是可以看到Windows具体加载了哪些内容:
可以看到Windows的核心组件并不多。要知道,即使是在WinXP里,Windows文件夹也是上GB的。
如果不看program files这些文件夹,只关注Windows文件夹的话,新装的系统里,里面的大头是System32,System32里主要放的是Windows的驱动和一些公共库。新装的系统可能有几百MB到上GB不等。
Windows启动加载的驱动大部分都在这里,但是非常的少,绝大多数驱动都用不上。但即使用不上,Windows安装的时候也会带上,原因是万一有一天用户更换硬件了,不需要重装Windows,也不一定需要找Windows的安装光盘。
类似的尺寸比较大的用户用不到的文件夹还有Windows字体,位于C:WindowsFonts,多数字体用户是从来不会用的,但Windows安装的时候会带上,没准哪一天就有用了。
对于64位Windows来说,它还附带一个32位库,用于支持32位应用,这也是一个非常巨大的文件夹,位于C:WindowsSysWOW64,这里的文件只有少部分对于用户才能用得上,但考虑到兼容性必须全带上。64位Windows相当于64位系统+32位系统。
真正Windows启动需要的东西,是列在了注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices下的各个表项里,启动类型是boot(0), system(1), auto(2)这三种的service都会被自动加载。
内核启动完成以后,剩下的就是用户外壳(shell),也就是explorer.EXE,用户看到的就是桌面这个东西,以及由explorer启动的放在用户启动项里的东西。
启动的大致过程就是由引导程序(boot partition)加载NTOSKRNL.EXE(截图的第一个文件名),然后加载CurrentControlSet里的service,启动explorer就完成了启动过程。
精心订制剪裁的Windows系统可以做的很小,但这样意义不大,万一有一天用户更换了硬件,系统就要重装了。
精心订制的系统,在非民用领域用的比较多,典型的就是嵌入式系统,一个带内核,带shell,甚至支持用户态的功能的RTOS,整个系统都可以控制在1MB以内,如果只要一个内核,可以剪裁到100KB甚至更少。但这种系统,只适用于某个特定型号的硬件,换一个硬件就要重新定制。
当Windows用的比较久以后:
最大的文件夹可能是C:WindowsInstaller(隐藏文件夹),Windows会把很多MSI类型的安装包备份到这里,后果就是这个文件夹会一直膨胀,并且难以清理,因为Windows自己也不太清楚具体哪些还有用,这是MSI设计的问题,也是各个厂商开发MSI安装包的时候没设计好的原因。
或者可能是C:WindowsWinSXS,WinSXS里可能包含着系统补丁、驱动备份之类的各种内容,跟MSI类似,删是不可以删的,至于里面哪些东西有用,哪些东西没有,没人说得清楚。
此外,Windows补丁备份等等这些也都是用户基本上用不到,但又不会有人删的内容(国内有些清理工具可以清理,但不建议用),路径位于C:Windowsservicing和C:WindowsSoftwareDistribution等位置。
加载的过程中,只要NTOSKRNL和基本的驱动加载完成了,Windows就可以运行东西了,Windows的桌面是单独的一个进程,理论上说,没有EXPLORER.EXE,Windows一样也可以用,只不过没桌面……任何非嵌入式系统,操作系统都是分步骤加载的,先加载一个基本内核,再一点点加载驱动、外壳等等,并不是一下就完全加载完。