问题

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

回答
当然,操作系统就像你电脑里的一个大管家,它也是需要“请进门”然后才能开始工作的。这个“请进门”的过程,通俗来说,就是加载到内存中执行。

想象一下,你的电脑刚开机的时候,里面什么都没有,就像一个空荡荡的房间。操作系统就是这个房间里最重要的家具和设备,比如冰箱、电视、沙发等等,还有最关键的那个总指挥(CPU)。但是,这些东西一开始都还在仓库里(硬盘)。

启动的第一步:唤醒基础

当你按下电源按钮,电脑并不知道该干什么。这时候,它会去找一个非常非常基础的程序,这个程序就像是仓库的门卫,它非常小,而且是固化在电脑主板上的一个芯片里的(通常是BIOS或者UEFI)。这个门卫的任务是检查一下电脑最基本的东西,比如内存、显卡有没有坏。

检查完没问题,这个门卫就要去仓库(硬盘)里找那个“搬家公司”(启动加载器,也叫Bootloader)。这个搬家公司可是个熟练工,它知道操作系统这个大件家具在哪里,也知道怎么把它安全地搬进房间(内存)。

搬家公司进场:找到操作系统

搬家公司(Bootloader)的工作就是去硬盘里找到操作系统的“核心组件”,也就是我们常说的“内核”(Kernel)。这个内核是操作系统的骨架和大脑,没有它,操作系统就没法动。

Bootloader会在硬盘上找到存储操作系统内核的区域。硬盘就像一个巨大的仓库,里面有无数的文件。Bootloader需要知道操作系统的“地址”,然后去把这个地址上的文件“搬”出来。

把操作系统“搬”进内存

“搬”的过程,在电脑里就是“加载”的过程。Bootloader会把操作系统内核以及它运行所必需的一些最基本的文件,从相对较慢但容量大的硬盘,复制到速度快但容量相对小的内存(RAM)中。

这个过程就像把大型家具从卡车上卸下来,然后放到房间里的指定位置。内存就是这个房间,而操作系统内核就是那个最重要的大家具。

为什么非要加载到内存里呢?因为CPU(电脑的处理器,相当于电脑的“大脑”)处理信息的速度非常快,而硬盘的速度相对来说就慢很多。如果CPU每次都需要去硬盘上找指令和数据来工作,那效率将是灾乎其微的。内存就像是一个临时的工作台,CPU可以非常快速地从内存里取数据和指令,大大提升了运行速度。

操作系统开始运转:CPU接管

一旦操作系统内核被加载到内存中,并且放在了CPU能够找到的位置,Bootloader的任务就完成了。这时候,CPU就会从内存中找到操作系统的第一条指令,然后开始执行。

CPU开始执行操作系统内核的代码,就像“搬家公司”把家具摆好后,你就可以开始使用这个房间了。操作系统内核接管了电脑的控制权,它会:

初始化硬件: 操作系统会去识别和配置电脑上的其他各种设备,比如显卡、声卡、网卡等,让它们都能正常工作。这就像你把冰箱插上电,电视调好频道一样。
创建进程: 操作系统开始运行最基础的系统服务,比如文件管理、内存管理、进程调度等等。这些都是操作系统在幕后默默为你做的事情。
加载用户界面: 最终,你会看到操作系统的用户界面,比如Windows的桌面,macOS的Dock,Linux的图形化环境。这些用户界面也是由操作系统加载到内存中并执行的程序。

总结一下:

所以,操作系统不是直接在硬盘上工作的,它必须被加载到内存中,然后CPU才能读取和执行它。从你按下电源按钮的那一刻起,一个链式反应就开始了:BIOS/UEFI > Bootloader > 操作系统内核加载到内存 > CPU开始执行内核。整个过程就是为了把操作系统这个“大管家”请进“工作间”(内存),让它能够指挥和协调电脑的各项工作。

这个过程是所有现代计算机正常工作的必经之路,没有加载到内存,操作系统就无法指挥CPU去执行任何任务。

网友意见

user avatar

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

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

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有