- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
入栈操作JOS操作系统的结构(续)
第三章 系统的启动和初始化(include lab1) 提纲 系统的启动 显示输出 JOS操作系统的结构 系统的启动 物理内存的分布 物理内存的0x000A0000 -0VGA显示存储、BIOS ROM以及扩展ROM 物理内存的高端0xefffffff-0xffffffff往往被PCI设备的外设I/O所占据。 系统的启动(续) BIOS的加载 80386在设计的时候必须考虑向下兼容性,所以80386以及其后的机器在启动后,仍然是处于实模式; 在PC启动的时候,首先会在实模式下运行BIOS; PC启动的Bochs模拟演示 系统的启动(续) BIOS加载完成后…… BIOS主要完成系统自检、以及启动前的准备工作(如让各个设备做好准备工作) BIOS的工作完成后,BIOS将会读取硬盘的MBR(Master Boot Record,硬盘的第0柱面、0磁道、0扇区。512字节)到内存的0x7c00到0x7dff的位置(被装入的程序又被称为Boot Loader),紧接着再执行一个跳转指令将CS设置为0x0000,IP设置为0x7c00,即刚被装入的Boot Loader 找到JOS中Boot loader的程序 系统的启动(续) JOS 中的 Boot Loader Boot Loader的源程序是由一个叫做的boot.S的ATT汇编程序与一个叫做main.c的C程序组成的。 boot.S主要是将处理器从实模式转换到32位的保护模式,这是因为只有在保护模式中我们才能访问到物理内存高于1MB的空间; main.c的主要作用是将内核的可执行代码从硬盘镜像中读入到内存中。 理解boot.S,和main.c 系统的启动(续) 链接地址和加载地址 /boot/Makefrag $(V)$(LD) $(LDFLAGS) -N -e start -Ttext 0x7C00 -o $@.out $^ 系统演示 系统的启动(续) ELF文件头 .text节:可执行指令的部分 .rodata节:只读全局变量部分 .stab节:符号表部分 .stabstr节:符号表字符串部分 .data节:可读可写的全局变量部分 .bss节:未初始化的全局变量部分,这一部分不会在磁盘有存储空间,因为这些变量并没有被初始化,因此全部默认为0,于是在将这节装入到内存的时候程序需要为其分配相应大小的初始值为0的内存空间 .comment节:注释部分,这一部分不会被加载到内存 系统的启动(续) ELF文件头的数据结构 e_entry是可执行程序的入口地址 e_phoff和e_phnum可以用来找到所有的程序头表项 e_phoff是程序头表的第一项相对于ELF文件的开始位置的偏移 e_phnum则是表项的个数 e_ shoff和e_ shnum可以用来找到所有的节头表项 系统的启动(续) Code walk ELF文件的装入 显示输出 在JOS中实现字符显示的过程 Code walk 8进制数据的显示 JOS操作系统的结构 分为boot和kern两个部分 kernel部分的程序链接地址和加载地址的分析 程序执行时,如何从链接地址转化到加载地址? 为什么要这样设计? JOS操作系统的结构(续) Kernel部分 在void i386_init(void)函数中,有以下定义: extern char edata[], end[]; 然而,我们发现edata和end并没有在某个.h或者.c文件定义 kern.ld: PROVIDE(edata = .); .bss : { *(.bss) } PROVIDE(end = .); 说明这两个变量都是在链接(生成ELF文件时)产生的地址,GCC会在生成二进制文件的时候将这两个符号置换成地址 GCC这一特性非常强大,在后面的实验中也会用到这一特性 JOS操作系统的结构(续) 栈的原理 JOS操作系统的结构(续) 简单Shell的实现 Code walk JOS操作系统的结构(续) Kern栈(stack) 初始化stack,stack的大小 函数调用时栈的变化 通过栈进行回溯 * * struct Elf { uint32_t e_magic; // 标识文件是否ELF文件 uint8_t e_elf[12]; // 魔数和相关信息 uint16_t e_type; // 文件类型 uint16_t e_machine;// 针对体系结构 uint32_t e_version; // 版本信息 uint32_t e_entry; // Entry point 程序入口点 uint32_t e_ph
您可能关注的文档
- KLD-03智能阀门定位器中英文使用说明书-河北科隆电力技术有限公司.doc
- KTF滑块系列参数表(表一)-磁致伸缩位移传感器.doc
- KSGZ2011-G-010-公共资源交易.doc
- K1325ATF0808C系列加工中心配置单.doc
- JL475Q1发动机介绍.ppt
- l6O腔离精度热流道注射模具的设计.PDF
- LED款三棍闸参数说明接线图菜单设置说明控制板按键MENU菜单.doc
- LC-SOLUTION的定量操作指南.doc
- Linux基本应用培训-红旗.ppt
- linux系统dhcp服务器搭建步骤.doc
- 全国计算机等级考试一级笔试试卷WINDOWS.doc
- 全日制中专班(学制三年)序号专业名称培养目标机及主要开设课程1.doc
- 免耕播种机漏播补偿系统设计与试验-农业机械学报.PDF
- 兰州大学实验室安全管理办法.doc
- 共挤出技术研究进展.PDF
- 关于举办2016年衢州市数控车工、数控铣工职工职业技能-衢州市总工会.doc
- 关于对2017年度拟命名市级安全文化建设示范企业和拟表彰市级安全.doc
- 关于河南黎明重工YRQ4503-8-130KW电机断轴的原因分析.PDF
- 关于组团参加2014年德国汉诺威工业博览会-浙江省轴承工业协会.doc
- 关于规范研究生学位论文评阅与答辩费报账流程及-财务处-暨南大学.doc
最近下载
- 《射频识别技术原理与应用实战》全套教学课件.pptx
- 羊的同期发情技术.pptx VIP
- T-CAGHP 035—2018地质灾害排水治理工程设计规范(试行).docx VIP
- 第二批重点监管危险化学品名录.doc VIP
- 劳技课件教学课件.pptx VIP
- Unit 1 I love sports Part 1 (课件)2025-2026学年度外研版(三起)英语四年级上册.pptx VIP
- DBJ43_T393-2022:湖南省房屋建筑和市政工程消防质量控制技术标准.pdf VIP
- 2024年-2025年政工师(初级)理论考试题库及答案(综合题型).pdf VIP
- T∕ZZB 0900-2018 液晶调光玻璃团体标准.pdf VIP
- 朗朗阅读周周练四年级上册(1).pdf VIP
文档评论(0)