
BIOS
Basic input and output systemROMRead only memory
RAMRandom access memory 启动流程 BIOS 主板上电。将BIOS中的命令映射到内存0XF0000到0XFFFFF。CPU中CS寄存器值设为0XFFFF,IP寄存器设为0,所以物理地址为0XFFFF0,正好是BIOS占用的部分。运行指向的jmp指令跳到BIOS中的硬件检查部分然后继续执行。运行BOIS建立中断向量表,注册各种IO中断,同时将内容存到视频显示RAM输出到屏幕。
内存使用示意
- ROM->BIOS
- 存储器拓展区RAM
- 视频显示RAM
- 普通内存
- BIOS数据中断服务程序
- BIOS中断向量表
启动流程 Bootloader
BIOS结束,查找启动盘。
启动盘判定标准:第一个扇区512字节,以0XAA55结束。 运行启动盘内第一个扇区内的boot.img
启动盘内的代码是Linux工具GRUB2(Grand Unified Bootloader Version 2)放的。boot.img相关代码boot.S。 boot.S相当于一个指路牌,运行指向内核镜像core.img。
core.img 同样是GRUB2放的。core.img 不是只Linux内核,是指grub内核。core.img分三个部分。
diskboot.img。
相关代码diskboot.S。用来解压/调用起 lzma_decompress.img。 lzma_decompress.img。
因为实模式下内存只有1M,所以在此切换到保护模式。用来解压/调用起kernel.img。保护模式下启用分段/分页
分段更方便进程管理分页是可选的(当然现在大部分都是段页式),是为了让内存中更少的段冗余。还有额外的好处:内存可以虚拟化啦,在TLB转换之前一直指向的都是虚拟地址了。 kernel.img
grub内核映像。选择可调用的内核,内核要从这里启动!欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)