JOS LAB2实验记录

本文主要记录了MIT JOS Lab2的实验过程,涉及到的知识点包括JOS内核的调试信息处理、二分查找算法的应用以及JOS内存结构的理解。 1. **调试信息处理**: JOS的内核加载到内存时,会一同加载调试信息。这些信息存储在一个名为stab的结构体数组中,包含了函数名、类型、其他信息、描述和值等。stab结构体的解析通常基于`stab_binsearch`函数。调试信息由`kern.ld`中的配置和`gcc`编译器选项如`-gstabs`生成。`stab_binsearch`函数用于在stab结构体中查找特定类型的调试信息,如函数、代码区域等。 2. **stab_binsearch函数**: 这个函数采用二分搜索算法来定位特定类型和地址的调试信息。返回值为0表示找到目标,否则返回-1。它接受四个参数:调试信息数组的起始地址`stabs`,搜索范围的左右边界`region_left`和`region_right`,以及要查找的代码类型`type`和地址`addr`。该函数对于理解内核的调试过程至关重要,因为它的返回结果可以帮助确定代码区域和行号。 3. **Exercise 1:debuginfo_eip函数**: 在实现`debuginfo_eip`函数时,需要找到给定EIP(指令指针)对应的函数名和行号。通过`stab_binsearch`函数,可以找到EIP所在的函数和代码区域。进一步地,通过分析stab结构体,可以计算出函数内的偏移量,从而获取函数参数个数。 4. **JOS内存结构**: JOS的内存管理从引导加载器`boot.S`开始,其中定义了全局描述符表(GDT)。GDT的条目决定了内存段的基地址,例如,段选择符0x08对应于0x0000000的基地址。在系统启动后,JOS会将内核和其他数据加载到内存的不同区域,这些区域的管理是通过内存管理单元(MMU)和页表实现的。 实验者强调了文档的重要性和软件工程实践,指出理解JOS内核的调试信息和内存布局对后续实验至关重要。通过实验,学生不仅能学习到操作系统的基本原理,还能提升解决问题和分析代码的能力。




























剩余15页未读,继续阅读

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- YKSwiftNetworking-Swift资源
- 人工智能和儿童右脑开发趋势探究.docx
- matlab-Matlab资源
- 可编程控制器在电气控制中的应用与分析黄立忠.docx
- “教学中的互联网搜索”教学设计(识字).doc
- WebGIS架构棉花估产辅助决策系统的设计方案.doc
- 《机器学习所需的数学基础知识相关源码》
- 关于广电网络工程项目管理研究.docx
- 2016年“专转本”计算机应用基础统一测验试题(含答案).docx
- 2017年下半年-网络工程师-真题与答案详解.docx
- 企业大数据分析平台案例.pptx
- 《JAVA语言程序设计》期末考试考试卷及答案.doc
- 楼盘项目管理广告策划书.doc
- 现代商业中计算机数据挖掘技术的应用.docx
- 我国信息化发展经验-建国60周年看我国信息化发展.docx
- Mcontroller-v7-FanciSwarm-机器人开发资源



- 1
- 2
前往页