第三章系统的启动和初始化includelab.ppt

上传人:sccc 文档编号:5292907 上传时间:2023-06-23 格式:PPT 页数:17 大小:337.03KB
返回 下载 相关 举报
第三章系统的启动和初始化includelab.ppt_第1页
第1页 / 共17页
第三章系统的启动和初始化includelab.ppt_第2页
第2页 / 共17页
第三章系统的启动和初始化includelab.ppt_第3页
第3页 / 共17页
第三章系统的启动和初始化includelab.ppt_第4页
第4页 / 共17页
第三章系统的启动和初始化includelab.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《第三章系统的启动和初始化includelab.ppt》由会员分享,可在线阅读,更多相关《第三章系统的启动和初始化includelab.ppt(17页珍藏版)》请在三一办公上搜索。

1、第三章 系统的启动和初始化(include lab1),提纲,系统的启动显示输出JOS操作系统的结构,系统的启动,物理内存的分布物理内存的0 x000A0000 0 x00100000为VGA显示存储、BIOS ROM以及扩展ROM物理内存的高端0 xefffffff0 xffffffff往往被PCI设备的外设I/O所占据。,系统的启动(续),BIOS的加载80386在设计的时候必须考虑向下兼容性,所以80386以及其后的机器在启动后,仍然是处于实模式;在PC启动的时候,首先会在实模式下运行BIOS;PC启动的Bochs模拟演示,系统的启动(续),BIOS加载完成后BIOS主要完成系统自检、以

2、及启动前的准备工作(如让各个设备做好准备工作)BIOS的工作完成后,BIOS将会读取硬盘的MBR(Master Boot Record,硬盘的第0柱面、0磁道、0扇区。512字节)到内存的0 x7c00到0 x7dff的位置(被装入的程序又被称为Boot Loader),紧接着再执行一个跳转指令将CS设置为0 x0000,IP设置为0 x7c00,即刚被装入的Boot Loader找到JOS中Boot loader的程序,系统的启动(续),JOS 中的 Boot Loader Boot Loader的源程序是由一个叫做的boot.S的AT&T汇编程序与一个叫做main.c的C程序组成的。boo

3、t.S主要是将处理器从实模式转换到32位的保护模式,这是因为只有在保护模式中我们才能访问到物理内存高于1MB的空间;main.c的主要作用是将内核的可执行代码从硬盘镜像中读入到内存中。理解boot.S,和main.c,系统的启动(续),链接地址和加载地址/boot/Makefrag$(V)$(LD)$(LDFLAGS)-N-e start-Ttext 0 x7C00-o$.out$系统演示,系统的启动(续),ELF文件头.text节:可执行指令的部分.rodata节:只读全局变量部分.stab节:符号表部分.stabstr节:符号表字符串部分.data节:可读可写的全局变量部分.bss节:未初

4、始化的全局变量部分,这一部分不会在磁盘有存储空间,因为这些变量并没有被初始化,因此全部默认为0,于是在将这节装入到内存的时候程序需要为其分配相应大小的初始值为0的内存空间.comment节:注释部分,这一部分不会被加载到内存,系统的启动(续),ELF文件头的数据结构e_entry是可执行程序的入口地址e_phoff和e_phnum可以用来找到所有的程序头表项e_phoff是程序头表的第一项相对于ELF文件的开始位置的偏移e_phnum则是表项的个数e_ shoff和e_ shnum可以用来找到所有的节头表项,struct Elf uint32_t e_magic;/标识文件是否ELF文件uin

5、t8_t e_elf12;/魔数和相关信息uint16_t e_type;/文件类型uint16_t e_machine;/针对体系结构uint32_t e_version;/版本信息uint32_t e_entry;/Entry point 程序入口点uint32_t e_phoff;/程序头表偏移量uint32_t e_shoff;/节头表偏移量uint32_t e_flags;/处理器特定标志uint16_t e_ehsize;/文件头长度uint16_t e_phentsize;/程序头部长度uint16_t e_phnum;/程序头部个数uint16_t e_shentsize;/节

6、头部长度uint16_t e_shnum;/节头部个数uint16_t e_shstrndx;/节头部字符索引;,系统的启动(续),Code walkELF文件的装入,显示输出,在JOS中实现字符显示的过程Code walk8进制数据的显示,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操作系统的结构(续),栈的原理,(A)出栈操作,(B)入栈操作,JOS操作系统的结构(续),简单Shell的实现Code walk,JOS操作系统的结构(续),Kern栈(stack)初始化stack,stack的大小函数调用时栈的变化通过栈进行回溯,本章结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号