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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

合肥工业大学计算机与信息学院实验报告课程:计算机操作系统专业班级:计算机科学与技术2班学号:姓名:实验1实验环境的使用一.实验目的1.熟悉操作系统集成实验环境OSLab的基本使用方法。2.练习编译、调试EOS操作系统内核以及EOS应用程序。二.实验内容1.启动OSLab2.学习OSLab的基本使用方法2.1新建Windows控制台应用程序项目2.2生成项目2.3执行项目2.4调试项目2.4.1使用断点中断执行2.4.2单步调试2.4.3查看变量的值2.4.4调用堆栈3.EOS内核项目的生成和调试3.1新建EOS内核项目3.2生成项目3.3调试项目3.4查看软盘镜像文件中的内容3.5查看EOSSDK(SoftwareDevelopmentKit)文件夹4.EOS应用程序项目的生成和调试4.1新建EOS应用程序项目4.2生成项目4.3调试项目4.4查看软盘镜像文件中的内容4.5修改EOS应用程序项目名称5退出OSLab6保存EOS内核项目三.实验结果本实验主要是熟悉EOS操作系统的基本操作,练习了:(1)新Windows控制台应用程序项,1.“文件”菜单中选择“新建”,然后单击“项目”。2.在“新建项目”对话框中,选择项目模板“控制台应用程序(c)”。3.在“名称”中输入新项目使用的文件夹名称“oslab”。4.在“位置”中输入新项目保存在磁盘上的位置“C:\test”。新建完毕后,OSLab会自动打开这个新建的项目。(2)在“生成”菜单中选择“生成项目”。结果如图(3)执行项目:选择“调试”菜单中的“开始执行”(4)调试项目:1.右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。2.在弹出的“添加新文件”对话框中选择“C源文件”模板。3.在“名称”中输入文件名称“func”。4.点击“添加”按钮,添加并自动打开文件func.c,此时的“项目管理器”窗口会如图:(5).在func.c文件中添加函数:intFunc(intn){n=n+1;returnn;}(6).点击源代码编辑器上方的console.c标签,切换到console.c文件。将main函数修改为:intmain(intargc,char*argv[]){intFunc(intn);//声明Func函数intn=0;n=Func(10);printf(HelloWorld!\n);return0;}代码修改完毕后按F7实验结果为输出:HelloWorld!(7).在main函数中定义变量n的代码行intn=0;上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一个断点练习使用“逐过程”,“逐语句”,“跳出”功能(8).在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,进行单步测试,观察n结果依次为0,11(9)调用堆栈,选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函数地址)。按F11(“逐语句”功能的快捷键)调试,直到进入Func函数,其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。说明是在main函数中调用了Func函数。(10)查看软盘镜像文件中的内容,在“项目管理器”窗口中双击软盘镜像文件Floppy.img四.实验总结今天第一次进行操作系统这门课的实验,这也是将抽象的理论知识应用到实践的一个很好的机会,同时,我们也学习了使用OSLab的这个实验环境,OSLab的操作界面和MicrosoftVisualStudio2010很像,所以使用起来很快就能上手,对于实验内容,今天主要练习了:新建Windows控制台应用程序项目、生成项目、执行项目、调试项目以及EOS应用程序项目的生成和调试;设置间断点,并且在它的基础上进行了单步操作;详细观察了通过“快速监视“标记的数的值的变化过程等基本操作,这也为以后实验的顺利进行打下了良好的基础。五.实验截图实验2操作系统的启动一.实验目的1.跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。2.查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。二.实验内容1准备实验2调试EOS操作系统的启动过程2.1使用Bochs做为远程目标机2.2调试BIOS程序2.3调试软盘引导扇区程序2.4调试加载程序2.5调试内核2.6EOS启动后的状态和行为三.实验结果1.新建一个EOSKernel项目。2.使用Bochs做为远程目标机(1)在“项目管理器”窗口中,右键点击项目节点,在弹出的快捷菜单中选择“属性”。(2)在弹出的“属性页”对话框右侧的属性列表中找到“远程目标机”属性,将此属性值修改为“BochsDebug”(3)点击“确定”按钮关闭“属性页”对话框。接下来就可以使用Bochs模拟器调试BIOS程序和软盘引导扇区程序了。3.按F5启动调试,此时会弹出两个Bochs窗口。标题为“Bochsforwindows-Display”的窗口相当于计算机的显示器,显示操作系统的输出。标题为“Bochsforwindows-Console”的窗口是Bochs的控制台,用来输入调试命令,输出各种调试信息。4.启动调试后,Bochs在CPU要执行的第一条指令(即BIOS的第一条指令)处中断。此时,Display窗口没有显示任何内容,Console窗口显示要执行的BIOS第一条指令的相关信息,并等待用户输入调试命令5.然后查看CPU在没有执行任何指令之前主要寄存器中的数据,以及内存中的数据(1)在Console窗口中输入调试命令sreg后按回车,显示当前CPU中各个段寄存器的值(2)输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值(3)输入调试命令xp/1024b0x0000,查看开始的1024个字节的物理内存。在Console中输出的这1K物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。(4)输入调试命令xp/512b0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为0,说明软盘引导扇区还没有被加载到此处。6.EOS启动后的状态和行为(1)在控制台中输入命令“ver”后按回车。结果如图(2)查看EOS启动后的进程和线程的信息:在控制台中输入命令“pt”后按回车。输出的进程和线程信息如图所示四.实验总结今天的实验在实验一的基础上学习了EOS操作系统的启动、跟踪调试以及EOS在PC机上从加电复位到成功启动的全过程,这让我们对EOS这个平台有了初步的掌握,同时我们也练习了查看了EOS启动后的状态和行为,学会了查看CPU主要寄存器中以及内存中的数据的方法。五.实验截图实验3进程的创建一,实验目的:1,练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。2,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。二,预备知识:阅读本书第5.1节,重点理解程序和进程的关系,熟悉进程控制块结构体以及进程创建的过程。仔细学习CreateProcess函数和其它与创建进程相关的函数的说明,注意理解这些函数的参数和返回值的意义。三,主要实验内容及步骤:1,准备实验;2,练习使用控制台命令创建EOS应用程序的进程:练习使用控制台命令创建EOS应用程序进程的具体步骤如下:(1)在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像文件。(2)将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中。Hello.exe一个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c源文件。(3)在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。(4)按F7生成EOS应用项目。(5)按F5启动调试。OSLab会弹出一个调试异常对话框,并中断应用程序的执行。(6)在调试异常对话框中选择“否”,忽略异常继续执行应用程序。(7)激活虚拟机窗口,待该应用程序执行完毕后,在EOS的控制台中输入命令“A:\Hello.exe”后回车。(8)Hello.exe应用程序开始执行,观察其输出如图11-1。(9)待Hello.exe执行完毕后可以重复第7步,或者结束此次调试。3.练习通过编程的方式让应用程序创建另一个应用程序的进程使用OSLab打开本实验文件夹中的NewProc.c文件(将此文件拖动到OSLab窗口中释放即可)按照下面的步骤查看应用程序创建另一个应用程序的进程的执行结果:(1)使用NewProc.c文件中的源代码替换之前创建的EOS应用程序项目中的EOSApp.c文件内的源代码。(2)按F7生成修改后的EOS应用程序项目。(3)按F5启动调试。OSLab会首先弹出一个调试异常对话框。(4)在调试异常对话框中选择“否”,继续执行。(5)激活虚拟机窗口查看应用程序输出的内容,如图11-2。结合图11-1,可以看到父进程(EOSApp.exe)首先开始执行并输出内容,父进程创建了子进程(Hello.exe)后,子进程开始执行并输出内容,待子进程结束后父进程再继续执行。(6)结束此次调试。4.调试CreateProcess函数按照下面的步骤调试CreateProcess函数创建进程的过程:(1)按F5启动调试EOS应用程序,OSLab会首先弹出一个调试异常对话框。(2)选择“是”调试异常,调试会中断。(3)在main函数中调用CreateProcess函数的代码行(第57行)添加一个断点。(4)按F5继续调试,在断点处中断。(5)按F11调试进入CreateProcess函数。此时已经开始进入EOS内核进行调试。.5,调试PsCreateProcess函数创建进程最主要的操作就是创建进程控制块(PCB),并初始化其中的各种信息(也就是为进程分配各种资源)。所以在PsCreateProcess函数中首先调用了PspCreateProcessEnvironment函数来创建进程控制块。调试PspCreateProcessEnvironment函数的步骤如下:(1)在PsCreateProcess函数中找到调用PspCreateProcessEnvironment函数的代码行(create.c文件的第163行),并在此行添加一个断点。(2)按F5继续调试,到此断点处中断。(3)按F11调试进入PspCreateProcessEnvironment函数。由于PspCreateProcessEnvironment函数的主要功能是创建进程控制块并初始化其中的部分信息,所以在此函数的开始,定义了一个进程控制块的指针变量NewProcess。在此函数中查找到创建进程控制块的代码行(create.c文件的第418行)Status=ObCreateObject(PspProcessType,NULL,sizeof(PROCESS)+ImageNameSize+CmdLineSize,0,(PVOID*)&NewProcess);这里的ObCreateObject函数会在由EOS内核管理的内存中创建了一个新的进程控制块(也就是分配了一块内存),并由NewProcess返回进程控制块的指针(也就是所分配内存的起始地址)。按照下面的步骤调试进程控制块的创建过程:(1)在调用ObCreateObject函数的代码行(create.c文件的第418行)添加一个断点。(2)按F5继续调试,到此断点处中断。(3)按F10执行此函数后中断。(4)此时为了查看进程控制块中的信息,将表达式*NewProcess添加到“监视”窗口中。(5)将鼠标移动到“监

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功