Lab1:练习4——如何分析bootloader加载ELF格式操作系统的过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2835个文字,预计阅读时间需要12分钟。
练习四:分析bootloader加载ELF格式的OS的过程
1. 项目要求: 通过阅读bootmain.c,了解bootloader如何加载ELF格式的OS。 分析源代码,并通过qemu运行和调试bootloader及OS,观察bootloader如何读取硬盘扇区。
练习四:分析bootloader加载ELF格式的OS的过程。 1.题目要求通过阅读bootmain.c,了解bootloader如何加载ELF文件。通过分析源代码和通过qemu来运行并调试bootloader&OS,
- bootloader如何读取硬盘扇区的?
- bootloader是如何加载ELF格式的OS?
提示:可阅读“硬盘访问概述”,“ELF执行文件格式概述”这两小节。
2.整个流程假定进入了保护模式之后,bootloader需要能够加载ELF文件。因为kenerl(就是ucore os)是以ELF的形式存在硬盘上的。
bootloader如何读取硬盘扇区的?就是说boot loader能够访问硬盘,bootloader把硬盘数据读取出来之后,要把其中ELF格式文件给分析出来。从而知道ucore它的代码段应该放在什么地方,应该有多大一块空间放这个代码段数据。哪一段空间是放数据段的数据,然后把它加载到内存中去,同时还知道跳转到ucore哪个位置去执行。
读取扇区是readsect函数,用到了in b,out b这种机器指令。in b,out b的实现都是内联汇编来实现的,它采取了一种IO空间的地址寻址方式,能够把外设的数据给读到内存中来,这也是x86里面的寻址方式。除了正常的memory方式之外,还有IO这一种寻址方式。
本文共计2835个文字,预计阅读时间需要12分钟。
练习四:分析bootloader加载ELF格式的OS的过程
1. 项目要求: 通过阅读bootmain.c,了解bootloader如何加载ELF格式的OS。 分析源代码,并通过qemu运行和调试bootloader及OS,观察bootloader如何读取硬盘扇区。
练习四:分析bootloader加载ELF格式的OS的过程。 1.题目要求通过阅读bootmain.c,了解bootloader如何加载ELF文件。通过分析源代码和通过qemu来运行并调试bootloader&OS,
- bootloader如何读取硬盘扇区的?
- bootloader是如何加载ELF格式的OS?
提示:可阅读“硬盘访问概述”,“ELF执行文件格式概述”这两小节。
2.整个流程假定进入了保护模式之后,bootloader需要能够加载ELF文件。因为kenerl(就是ucore os)是以ELF的形式存在硬盘上的。
bootloader如何读取硬盘扇区的?就是说boot loader能够访问硬盘,bootloader把硬盘数据读取出来之后,要把其中ELF格式文件给分析出来。从而知道ucore它的代码段应该放在什么地方,应该有多大一块空间放这个代码段数据。哪一段空间是放数据段的数据,然后把它加载到内存中去,同时还知道跳转到ucore哪个位置去执行。
读取扇区是readsect函数,用到了in b,out b这种机器指令。in b,out b的实现都是内联汇编来实现的,它采取了一种IO空间的地址寻址方式,能够把外设的数据给读到内存中来,这也是x86里面的寻址方式。除了正常的memory方式之外,还有IO这一种寻址方式。

