合肥工业大学操作系统实验报告

上传人:s9****2 文档编号:485514455 上传时间:2023-12-21 格式:DOC 页数:30 大小:2.05MB
返回 下载 相关 举报
合肥工业大学操作系统实验报告_第1页
第1页 / 共30页
合肥工业大学操作系统实验报告_第2页
第2页 / 共30页
合肥工业大学操作系统实验报告_第3页
第3页 / 共30页
合肥工业大学操作系统实验报告_第4页
第4页 / 共30页
合肥工业大学操作系统实验报告_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《合肥工业大学操作系统实验报告》由会员分享,可在线阅读,更多相关《合肥工业大学操作系统实验报告(30页珍藏版)》请在金锄头文库上搜索。

1、合肥工业大学计算机与信息学院实验报告课 程: 计算机操作系统专业班级: 计算机科学与技术2班学 号: 姓 名: 实验1 实验环境的使用1.熟悉操作系统集成实验环境OS Lab的基本使用方法。 2.练习编译、调试EOS操作系统内核以及EOS应用程序。1启动OS Lab2. 学习OS Lab的基本使用方法 2.4.1 使用断点中断执行3. EOS内核项目的生成和调试3.5查看EOS SDK(Software Development Kit)文件夹4. EOS应用程序项目的生成和调试5 退出OS Lab6 保存EOS内核项目本实验主要是熟悉EOS操作系统的基本操作,练习了:(1)新Windows控制

2、台应用程序项,1.“文件”菜单中选择“新建”,然后单击“项目”。2. 在“新建项目”对话框中,选择项目模板“控制台应用程序 (c)”。3. 在“名称”中输入新项目使用的文件夹名称“oslab”。4. 在“位置”中输入新项目保存在磁盘上的位置“C:test”。新建完毕后, OS Lab 会自动打开这个新建的项目。(2)在“生成”菜单中选择“生成项目”。结果如图(3)执行项目:选择“调试”菜单中的“开始执行”(4)调试项目:1. 右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。 2. 在弹出的“添加新文件”对话框中选择“C 源文件”模板。 3.

3、 在“名称”中输入文件名称“func”。 4. 点击“添加”按钮,添加并自动打开文件func.c,此时的“项目管理器”窗口会如图: (5). 在 func.c 文件中添加函数: int Func (int n) n = n + 1; return n; (6). 点击源代码编辑器上方的console.c标签,切换到console.c文件。将 main 函数修改为: int main (int argc, char* argv) int Func (int n); / 声明Func函数 int n = 0; n = Func(10); printf (Hello World!n); return

4、 0; 代码修改完毕后按F7实验结果为输出:Hello World!(7). 在main函数中定义变量n的代码行 int n = 0; 上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一个断点练习使用“逐过程”, “逐语句”,“跳出”功能(8).在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,进行单步测试,观察n结果依次为0,11(9)调用堆栈,选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函

5、数地址)。 按F11(“逐语句”功能的快捷键)调试,直到进入Func函数 ,其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。说明是在main函数中调用了Func函数。 (10)查看软盘镜像文件中的内容,在“项目管理器”今天第一次进行操作系统这门课的实验,这也是将抽象的理论知识应用到实践的一个很好的机会,同时,我们也学习了使用OS Lab的这个实验环境,OS Lab的操作界面和Microsoft Visual Studio 2010很像,所以使用起来很快就能上手,对于实验内容,今天主要练习了:新建Windows控制台应用程序项目、生成项目、执行项目、调试项目以及EOS应用程序项

6、目的生成和调试;设置间断点,并且在它的基础上进行了单步操作;详细观察了通过“快速监视“标记的数的值的变化过程等基本操作,这也为以后实验的顺利进行打下了良好的基础。五. 实验截图实验2 操作系统的启动1.跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。 2.查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。 1 准备实验2 调试EOS操作系统的启动过程2.1 使用Bochs做为远程目标机2.2 调试BIOS程序2.3 调试软盘引导扇区程序2.4 调试加载程序2.5 调试内核2.6 EOS启动后的状态和行为1.新建一个EOS Kernel项目。 (1)在“项

7、目管理器”窗口中,右键点击项目节点,在弹出的快捷菜单中选择“属性”。 (2) 在弹出的“属性页”对话框右侧的属性列表中找到“远程目标机”属性,将此属性值修改为“Bochs Debug” (3)点击“确定”按钮关闭“属性页”对话框。接下来就可以使用Bochs模拟器调试BIOS程序和软盘引导扇区程序了。 3.按F5启动调试,此时会弹出两个Bochs窗口。标题为“Bochs for windows - Display”的窗口相当于计算机的显示器,显示操作系统的输出。标题为“Bochs for windows - Console”的窗口是Bochs的控制台,用来输入调试命令,输出各种调试信息。4.启动

8、调试后,Bochs在CPU要执行的第一条指令(即BIOS的第一条指令)处中断。 此时,Display窗口没有显示任何内容,Console窗口显示要执行的BIOS第一条指令的相关信息,并等待用户输入调试命令5.然后查看CPU在没有执行任何指令之前主要寄存器中的数据,以及内存中的数据(1)在Console窗口中输入调试命令sreg后按回车,显示当前CPU中各个段寄存器的值(2)输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值(3)输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。在Console中输出的这1K物理内存的值都为0,说明BIOS中断向量表还没有

9、被加载到此处。 (4)输入调试命令xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为0,说明软盘引导扇区还没有被加载到此处。 (1) 在控制台中输入命令“ver”后按回车。结果如图 (2)查看EOS启动后的进程和线程的信息: 在控制台中输入命令“pt”后按回车。输出的进程和线程信息如图所示今天的实验在实验一的基础上学习了EOS操作系统的启动、跟踪调试以及EOS在PC机上从加电复位到成功启动的全过程,这让我们对EOS这个平台有了初步的掌握,同时我们也练习了查看了EOS启动后的状态和行为,学会了查看CPU主要寄存器中以及内存中的数据的方法。五.实验截图实验3进

10、程的创建一,实验目的:1,练习使用 EOS API 函数 CreateProcess 创建一个进程, 掌握创建进程的方法, 理解进程和程序的区别。2,调试跟踪 CreateProcess 函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。二,预备知识:阅读本书第 5.1 节,重点理解程序和进程的关系,熟悉进程控制块结构体以及进程创建的过程。仔细学习CreateProcess函数和其它与创建进程相关的函数的说明, 注意理解这些函数的参数和返回值的意义。三,主要实验内容及步骤:1, 准备实验;2, 练习使用控制台命令创建EOS 应用程序的进程:练习使用控制台命令创建 EOS 应用程序进

11、程的具体步骤如下:(1) 在 EOS 应用程序项目的“项目管理器”窗口中双击 Floppy.img 文件,使用 FloppyImageEditor工具打开此软盘镜像文件。(2)将本实验文件夹中的 Hello.exe 文件拖动到 FloppyImageEditor 工具窗口的文件列表中释放,Hello.exe 文件即被添加到软盘镜像文件中。Hello.exe 一个 EOS 应用程序,其源代码可以参见本实验文件夹中的 Hello.c 源文件。(3)在 FloppyImageEditor 中选择“文件”菜单中的“保存”后关闭 FloppyImageEditor。(4)按 F7 生成 EOS 应用项目

12、。(5)按 F5 启动调试。OS Lab 会弹出一个调试异常对话框,并中断应用程序的执行。(6) 在调试异常对话框中选择“否”,忽略异常继续执行应用程序。(7) 激活虚拟机窗口,待该应用程序执行完毕后,在 EOS 的控制台中输入命令“”后回车。(8) Hello.exe 应用程序开始执行,观察其输出如图 11-1。(9)待 Hello.exe 执行完毕后可以重复第 7 步,或者结束此次调试。3. 练习通过编程的方式让应用程序创建另一个应用程序的进程使用 OS Lab 打开本实验文件夹中的 NewProc.c 文件(将此文件拖动到 OS Lab 窗口中释放即可) 按照下面的步骤查看应用程序创建另

13、一个应用程序的进程的执行结果:(1) 使用NewProc.c文件中的源代码替换之前创建的EOS应用程序项目中的EOSApp.c文件内的源代码。(2)按 F7 生成修改后的 EOS 应用程序项目。(3) 按 F5 启动调试。OS Lab 会首先弹出一个调试异常对话框。(4) 在调试异常对话框中选择“否”,继续执行。(5)激活虚拟机窗口查看应用程序输出的内容, 如图 11-2。 结合图 11-1, 可以看到父进程 (EOSApp.exe)首先开始执行并输出内容,父进程创建了子进程(Hello.exe)后,子进程开始执行并输出内容,待子进程结束后父进程再继续执行。(6)结束此次调试。4.调试 Cre

14、ateProcess 函数按照下面的步骤调试 CreateProcess 函数创建进程的过程:(1) 按 F5 启动调试 EOS 应用程序,OS Lab 会首先弹出一个调试异常对话框。(2) 选择“是”调试异常,调试会中断。(3)在 main 函数中调用 CreateProcess 函数的代码行(第 57 行)添加一个断点。(4)按 F5 继续调试,在断点处中断。(5)按 F11 调试进入 CreateProcess 函数。此时已经开始进入 EOS 内核进行调试。.5, 调试PsCreateProcess 函数 创建进程最主要的操作就是创建进程控制块(PCB),并初始化其中的各种信息(也就是为

15、进程分配各种资源) 。所以在 PsCreateProcess 函数中首先调用了 PspCreateProcessEnvironment 函数来创建进程控制块。调试 PspCreateProcessEnvironment 函数的步骤如下:文件的第 163 行) ,并在此行添加一个断点。(2) 按 F5 继续调试,到此断点处中断。(3) 按 F11 调试进入 PspCreateProcessEnvironment 函数。由于 PspCreateProcessEnvironment 函数的主要功能是创建进程控制块并初始化其中的部分信息,所以在此函数的开始,定义了一个进程控制块的指针变量 NewProcess。在此函数中查找到创建进程控制块的代码行(create.c 文件的第 418 行)Status = ObCreateO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号