计算机组成相关
启动可以分为三个阶段:
第一阶段:BIOS或UEFI启动。读取cmos中的设置,检查硬件状态,初始化设备,读取中断向量表等内容。同时从指定的启动设备里加载启动程序(普通情况就是硬盘,u盘启动就是u盘)。在这个阶段中也可以根据要求,按F10等按钮进入BIOS设置。
第二阶段:引导程序启动。在这个阶段,BIOS从硬盘的第一个扇区读取MBR(主引导记录),里面包含了引导程序和分区表,再由引导程序加载操作系统。UEFI则从EFI文件加载引导程序。安卓设备有所不同,他们用bootloader来加载boot。
第三阶段:操作系统启动
由于历史原因,windows启动时,设备首先进入实模式。在这个模式下,不存在虚拟地址和物理地址之分,也不区分用户态和内核态,应用程序可以操作任意实际位置的内存。应用程序操作完再将资源交还给系统,
(程序读入内存后,大体还是按data段、指令段、栈段等段来区分的,而cs ss就是用来存储每部分段的首地址。切换程序时,这些寄存器的值也会被替换为新程序的数据)
保护模式:在启动时经过实模式后,计算机会进入保护模式,保护模式下,程序权限会受到限制
相比于实模式下程序直接访问物理地址。保护模式对这一严重风险进行了修正,增加了虚拟地址的设计。每个应用程序都可以访问从0开始的地址,但这一地址需要经过地址转换机构(MMU)转化才能变成实际可访问的物理地址,这样就避免了程序越界访问到不该访问的内存,方便进行权限管理。
长模式:相比于保护模式,长模式进一步将地址拓宽到了64位,并弱化了内存的段管理机制,采用页面管理的方式并引进了MMU进行内存地址转换。
参考: 进入内核态究竟是什么意思? - 知乎 (zhihu.com)