从开机加电到Main函数执行前笔记内内容.doc

TOC \o 1-3 \h \u HYPERLINK \l _Toc1567 Linux内核设计的艺术 PAGEREF _Toc1567 1 HYPERLINK \l _Toc25707 (0) 硬件设计-加电进入实模式,加电瞬间指向BIOS入口 PAGEREF _Toc25707 1 HYPERLINK \l _Toc11522 基础知识 PAGEREF _Toc11522 1 HYPERLINK \l _Toc21694 (一) 加载BIOS,建立中断向量表和中断服务程序 PAGEREF _Toc21694 2 HYPERLINK \l _Toc5429 1 BIOS启动 PAGEREF _Toc5429 2 HYPERLINK \l _Toc14396 2 建立中断向量表和中断服务程序 PAGEREF _Toc14396 2 HYPERLINK \l _Toc16276 (二)加载bootsect(int19中断,启动加载服务程序) PAGEREF _Toc16276 2 HYPERLINK \l _Toc16180 (三)运行bootsect,加载setup--(int13中断)和系统模块(调用read_it) PAGEREF _Toc16180 2 HYPERLINK \l _Toc2697 1 规划内存 PAGEREF _Toc2697 2 HYPERLINK \l _Toc26715 2 复制bootsect PAGEREF _Toc26715 3 HYPERLINK \l _Toc29728 3 将setup加载到内存 PAGEREF _Toc29728 3 HYPERLINK \l _Toc29454 4 加载系统模块 PAGEREF _Toc29454 3 HYPERLINK \l _Toc6590 (四)执行setup程序 PAGEREF _Toc6590 4 HYPERLINK \l _Toc23730 1提取机器系统数据 PAGEREF _Toc23730 4 HYPERLINK \l _Toc19068 2 开始向32位模式转变(保护模式下) PAGEREF _Toc19068 4 HYPERLINK \l _Toc2586 (2.1)关中断cli,将内核移动到内存地址的起始位置0x00000 PAGEREF _Toc2586 4 HYPERLINK \l _Toc27002 (2.2)设置中断描述符表和全局描述符表 PAGEREF _Toc27002 5 HYPERLINK \l _Toc1308 (2.3)打开A20,实现32位寻址 PAGEREF _Toc1308 5 HYPERLINK \l _Toc1956 (2.4)为在保护模式下执行Head.s做准备 PAGEREF _Toc1956 5 HYPERLINK \l _Toc14259 (五) head.s开始执行 PAGEREF _Toc14259 6 HYPERLINK \l _Toc6333 1 head执行整体策略 PAGEREF _Toc6333 6 HYPERLINK \l _Toc6508 2 建立页目录表 PAGEREF _Toc6508 6 HYPERLINK \l _Toc1455 3 创建分页机制 PAGEREF _Toc1455 7 Linux内核设计的艺术 硬件设计-加电进入实模式,加电瞬间指向BIOS入口 基础知识 1. Intel 80X86系列的CPU可以分别在16位实模式和32位保护模式下运行,但为了兼容,解决最开始的启动问题,Intel将所有 80X86系列的CPU的硬件都设计为加电进入16位实模式状态运行。 2. 还有一个硬件逻辑设计为加电瞬间强行设置CS和IP的值,使得执行BIOS入口0xFFFF0。BIOS固化在计算机主机板上的ROM芯片,只有8KB,所占地址段为0xFE0000xFFFFF。 3. LINUX 0.11 在实模式状态下,寻址的最大范围是2^20=1M(1048576). 4.各个寄存器详解 1 CS 代码段寄存器,指向CPU当前执行代码在内存中的区域 2 IP 指令指针寄存器,记录要执行的指令在代码段内的便宜地址。 3 4 5 6 加载BIOS,建立中断向量表和中断服务程序 1 BIOS启动 BIOS启动,会检测显卡,内存...,有一项工作是 会在内存中建立中断向量表及中断服务程序,对启动boot也就是之后的操作系统至关重要。 2 建立中断向量表和中断服务程序 首先,在内存最开的位置0x00000--0x003FF,1KB(256个中断向量表,每个占4字节),构建中断向量表。 然后,紧挨着

文档评论(0)

1亿VIP精品文档

相关文档