百科问答小站 logo
百科问答小站 font logo



操作系统是不是也是加载到内存中再执行的? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

不是完全加载,只加载必要的组件。

在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一样也可以用,只不过没桌面……任何非嵌入式系统,操作系统都是分步骤加载的,先加载一个基本内核,再一点点加载驱动、外壳等等,并不是一下就完全加载完。




  

相关话题

  为什么桌面领域没有一款 Linux 或 UNIX 能与 Windows 鼎足而立? 
  中国做编译器的人才大多数都在华为吗? 
  在桌面领域,为什么免费的 Linux 输给了收费的 Windows? 
  64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据? 
  如何看待 iPhone 13 以及 iPhone 13 mini 仅有 4G(RAM)内存? 
  x86 global页在新的page directory里不存在会发生什么? 
  各位大佬们,笔记本电脑一开机运行内存就占用了40%,怎么清内存可以将运行内存降到20%30%这样的? 
  “此应用专为旧版鸿蒙打造”是什么意思? 
  从操作系统内存管理来说,malloc申请一块内存的背后原理是什么? 
  为什么编程更关注内存而很少关注CPU? 

前一个讨论
如何评价C语言让数组退化为指针的设计?
下一个讨论
如何看待京津铁路推出 30 日定期、20 次计次新型票制产品?将对京津跨城生活工作的乘客产生哪些影响?





© 2024-05-18 - tinynew.org. All Rights Reserved.
© 2024-05-18 - tinynew.org. 保留所有权利