操作系统实验报告附思考题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验报告附思
考题
文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]
课程设计(综合实验)报告
( 2015 -- 2016 年度第 1 学期)
名称:操作系统综合实验
题目: oslab综合实验
院系:计算机系
班级:
学号:
学生姓名:
指导教师:
设计周数:分散进行
成绩:
日期: 2015 年 10 月 29 日
实验1 实验环境的使用
一、综合实验的目的与要求
熟悉操作系统集成实验环境OS Lab 的基本使用方法。
练习编译、调试EOS 操作系统内核以及EOS 应用程序。
二、实验正文
1.启动 OS Lab
执行项目
Windows 控制台窗口内容显示
调试项目
使用断点中断执行
单步调试
.3单步调试结果显示:
练习使用“逐语句”功能和“跳出”功能
查看变量的值
快速监视
添加监视
调用堆栈
调用堆栈显示内容
进入Func 函数
双击 main 函数所在的行表示此函数是当前调用堆栈中的活动函数。
3 新建EOS 内核项目
4 EOS 应用程序项目的生成和调试
新建EOS 应用程序项目
调试项目
添加断点后单步调试结果显示
查看软盘镜像文件中的内容
修改EOS 应用程序项目名称
5 退出OS Lab
6 保存EOS 内核项目
三、综合实验总结或结论
思考与练习:
1.在哪些情况下应该使用“逐过程”调试,在哪些情况下应该使用“逐语句”调试。
答:逐语句为每执行一行语句,如果碰到函数调用它就会进入到函数里面。而逐过程碰到函数时不进入函数,把函数调用当成一条语句去执行。
2. 生成EOS SDK 文件夹的目的和作用。明白文件夹的组织结构和各个文件的来源和作用。查看EOS 应用程序包含了SDK 文件夹中的哪些头文件,是如何包含的
(1)EOSSDK为应用程序调用系统API提供服务,可作为用户编程中使用的工具包集合。(2)其主要包括INC头文件LIB文件夹、导入库文件和BIN文件夹、动态链接库、可执行程序、二进制文件。
(3)包含的头文件有:负责导出API函数,声明负责导出函数类型的定义,负责导出错误码。
(4)EOS应用程序在项目的头文件中只是包含了文件,在文件中又包含了和文件。
实验 2 操作系统的启动
一、综合实验的目的与要求
跟踪调试 EOS 在 PC 机上从加电复位到成功启动全过程,了解操作系统的启动过程。
查看 EOS 启动后的状态和行为,理解操作系统启动后的工作方式。
二、实验正文
1. 准备实验
新建一个 EOS Kernel 项目。打开和两个汇编文件。生成项目。找到文件,记录下此文件的大小 1566 字节。
2 调试 EOS 操作系统的启动过程
使用 Bochs 做为远程目标机
找到“远程目标机”属性,将此属性值修改为“BochsDebug”
调试 BIOS 程序
在 Console 窗口中输入调试命令 sreg 后按回车,其中 CS 寄存器信息行中的
“ s=0xf000”表示 CS 寄存器的值为 0xf000。
输入调试命令 r 后按回车,显示当前 CPU 中各个通用寄存器的值。其中
“ rip:0x00000000:0000fff0”表示 IP 寄存器的值为 0xfff0。
输入调试命令 xp /1024b 0x0000,查看开始的 1024 个字节的物理内存。在 Console 中输出的这1K 物理内存的值都为 0,说明 BIOS 中断向量表还没有被加载到此处。
输入调试命令 xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为 0,说明软盘引导扇区还没有被加载到此处。
可以验证 BIOS 第一条指令所在逻辑地址中的段地址和 CS 寄存器值是一致的,偏移地址和 IP 寄存器值是一致的。由于内存还没有被使用,所以其中的值都为 0。
调试软盘引导扇区程序
输入调试命令 vb 0x0000:0x7c00,添加断点
输入调试命令 c 继续执行
输入调试命令 sreg 验证 CS 寄存器( 0x0000)的值。
输入调试命令 r 验证 IP 寄存器( 0x7c00)的值。
输入调试命令 xp /1024b 0x0000 验证此时 BIOS 中断向量表已经被载入。
输入调试命令 xp /512b 0x7c00 显示软盘引导扇区程序的所有字节码。
输入调试命令 xp /512b 0x0600 验证图 3-2 中第一个用户可用区域是空白的。
输入调试命令 xp /512b 0x7e00 验证图 3-2 中第二个用户可用区域是空白的。
自己设计两个查看内存的调试命令,验证这两个用户可用区域的高地址端是空白的。(1) xp /512b 0x7f00 (2) xp /512b0x0700
输入调试命令 xp /512b 0xa0000 验证图 3-2 中上位内存已经被系统占用。
自己设计一个查看内存的调试命令,验证上位内存的高地址端已经被系统占用。
xp /512b 0xb0000
输入调试命令 xp /8b 0x1000 查看内存
0x1000 处的数据,验证此块内存的前三个字节和文件中的第一条指令的字节码是相同的。
根据之前记录的文件的大小,自己设计一个查看内存的调试命令
文件的大小为1566个字节,转换为十六进制的61E,所以程序最后八个字节在物理内存的0x1616到0x161D的位置,所以调试命令为xp/8b 0x1616。经检验,程序结束位置字节码与反汇编命令相同。
注:查看文件的大小应在“属性”对话框中看。
调试加载程序
在“监视”窗口中可以看到KiSystemStartup 函数地址为
{void (PVOID)} 0x800***** KiSystemStartup>
EOS 启动后的状态和行为
三、综合实验总结或结论
1.为什么 EOS 操作系统从软盘启动时要使用和两个程序使用一个可以吗它们各自的主要功能是什么如果将的功能移动到文件中,则文件的大小是否仍然能保持小于512 字节
答:在IDE环境启动执行EOS操作系统时,会将,,三个二进制写入软件镜像文件中,然后让虚拟机来执行软盘中的EOS操作系统,使用其中一个是不能运行的。