基于i386体系结构的Linux启动代码分析.ppt

基于i386体系结构的Linux启动代码分析.ppt

ID:61748039

大小:151.50 KB

页数:30页

时间:2021-03-17

基于i386体系结构的Linux启动代码分析.ppt_第1页
基于i386体系结构的Linux启动代码分析.ppt_第2页
基于i386体系结构的Linux启动代码分析.ppt_第3页
基于i386体系结构的Linux启动代码分析.ppt_第4页
基于i386体系结构的Linux启动代码分析.ppt_第5页
资源描述:

《基于i386体系结构的Linux启动代码分析.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于i386体系结构的Linux启动代码分析xlanchen@2006.6.1启动代码文件linux/arch/i386/boot/bootsect.Slinux/arch/i386/boot/setup.Slinux/arch/i386/boot/compressed/head.Slinux/arch/i386/kernel/head.Slinux/arch/i386/kernel/init_task.clinux/arch/init/main.cxlanchen@2006.6.12EmbeddedOpera

2、tingSystems实模式实模式是为了兼容早期的CPU而设置的系统总是始于实模式实模式下地址总线:20位内存范围:0~1MB逻辑地址=段地址+段内偏移段地址=段寄存器中的值*16(或左移4位)段寄存器长度:16bitxlanchen@2006.6.13EmbeddedOperatingSystemsI386实模式下的内存布局图RAM1-MBROM-BIOSVIDEO-BIOSVRAM0xA00000xC00000xF00000x00000xlanchen@2006.6.14EmbeddedOperatingS

3、ystems软盘和硬盘启动软盘启动,bootsect.S0x7c000x900000x7c00,BIOS0x90000,lilo堆栈,0x3ff4(0x4000-12),向下增长磁盘参数表,12Bytes,0x3ff4~0x4000显示“Loading”Setup0x90200系统小内核,0x10000(64KB处),低装载大内核,0x100000(1MB处),高装载setup硬盘启动,两阶段引导装载LILO(LInuxLOader)第一个扇区…装载LINUXBootsect.S0x90000Setup.

4、S0x90200系统0x100000x100000跳转到setupxlanchen@2006.6.15EmbeddedOperatingSystemsSetup初始化硬件设备并为内核程序的执行建立环境内存检测键盘视频磁盘控制器IBM微通道总线MCAPS/2设备(总线鼠标)APMBIOS若低装载,将系统移动到0x1000处(4KB处) 否则,不必临时IDT和临时GDTFPUPIC,16个硬件中断中断向量32~47实模式保护模式Startup_32xlanchen@2006.6.16EmbeddedOpera

5、tingSystemsCompressed/head.SStartup_32初始化段寄存器和一个临时堆栈初始化BSS段解压缩高装载或低装载解压缩0x100000(1MB)跳转到0x100000处xlanchen@2006.6.17EmbeddedOperatingSystemsHead.SStartup_32初始化段寄存器建立进程0的内核堆栈Setup_idt拷贝系统参数识别处理器GDT、IDTStart_kernelxlanchen@2006.6.18EmbeddedOperatingSystemsThe

6、system-segmentregistersInprotected-modetheCPUneedsquickaccesstosomeimportantdata-structures,suchas:Memory-SegmentDescriptorsInterrupt-GateDescriptorsCall-GateDescriptorsTask-StateDescriptorsPage-DirectoryandPage-TableDescriptorsSpecialCPUregisterslocatethese

7、itemsxlanchen@2006.6.19EmbeddedOperatingSystemsGDTandIDTTwomostvitalsystemregistersforprotected-modeexecutionare:GDTR(GlobalDescriptorTableRegister)IDTR(InterruptDescriptorTableRegister)48-bitswide base-address+segment-limit (anarrayofdescriptors,theGDT&theI

8、DT)SpecialinstructionsSGDT/LGDT,SIDT/LIDTSegmentBase-AddressSegmentLimit471615016bits32bitsxlanchen@2006.6.110EmbeddedOperatingSystemsSystemRelationshipsdescriptordescriptordescriptordescriptord

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。