操作系统课程设计实验报告(附思考题答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计(综合实验)报告( 2015 -- 2016 年度第 1 学期)

名称:操作系统综合实验

题目:oslab综合实验

院系:计算机系

班级:

学号:

学生姓名:

指导教师:

设计周数:分散进行

成绩:

日期:2015 年10 月29 日

一、综合实验的目的与要求

1. 理解和掌握操作系统的基本概念、基本组成与工作原理;

2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;

3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。

二、实验正文

实验1:实验环境的使用

1.1实验目的:

1.熟悉操作系统集成实验环境OS Lab的基本使用方法。

2.练习编译、调试EOS操作系统内核以及EOS应用程序。

1.2实验内容:

1.启动OS Lab

2.学习OS Lab的基本用法

●新建Windows 控制台应用程序项目

(1)在“文件”菜单中选择“新建”,然后单击“项目”。

(2)在“新建项目”对话框中,选择项目模板“控制台应用程序 (c)”。

(3)在“名称”中输入新项目使用的文件夹名称“oslab”。

(4)在“位置”中输入新项目保存在磁盘上的位置“C:\test”。

(5)点击“确定”按钮。

●生成、执行项目

●调试项目(断点中断执行、单步调试、查看变量的值、调用堆栈)

使用断点中断执行查看变量的值

3.EOS内核项目的生成和调试

●新建EOS内核项目并按F7生成项目

●调试项目

●查看软盘镜像文件中的内容、EOS SDK(Software Development Kit)文件夹

4.EOS应用程序项目的生成和调试

●新建EOS应用程序项目

●生成并调试项目

●查看软盘镜像文件中的内容

●修改EOS应用程序项目名称

5.退出OS Lab

6.保存EOS内核项目

1.3思考与练习

●在实验1中,生成EOS SDK文件夹的目的和作用是什么?

答:SDK文件夹中提供了开发EOS应用程序需要的所有文件。debug文件夹是在使用debug配置生成项目时生成的,其中存放了调试版本的EOS二进制文件。release文件夹是在使用release配置生成项目时生成的,其中存放了发布版本的EOS二进制文件(不包含调试信息)。SDK文件夹中的inc文件夹,此文件夹中存放了EOS用于导出API函数和重要数据类型定义的头文件,在编写EOS应用程序时必须包含这些头文件。每次在开发EOS应用程序之前都应该使用EOS Kernel项目的debug配置和release配置来生成EOS Kernel项目,这样才得到完全版本的SDK文件夹供EOS应用程序使用。

实验2:操作系统的启动

2.1实验目的:

1. 跟踪调试EOS在PC机上从加电复位到成功启动全过程,了解操作系统的启动过程。

2. 查看EOS 启动后的状态和行为,理解操作系统启动后的工作方式。

2.2实验内容:

1.准备实验:启动OS Lab,新建一个EOS Kenel项目

2.调试EOS操作系统的启动过程:

●使用Bochs作为远程目标机

●调试BIOS程序

(1)启动调试后,Bochs 在CPU 要执行的第一条指令处中断

(2)在Console窗口中输入调试命令sreg 后按回车,显示当前CPU中各个段寄存器的值。其中CS 寄存器信息行中的“s=0xf000”表示CS 寄存器的值为0xf000。

(3)输入调试命令r 后按回车,显示当前CPU 中各个通用寄存器的值,如图10-3。其中“rip: 0x00000000:0000fff0”表示IP寄存器的值为0xfff0

(4)输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。在Console 中输出的这1K物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。输入调试命令xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为0,说明软盘引导扇区还没有被加载到此处。

●调试软盘引导扇区程序

(1)输入调试命令vb 0x0000:0x7c00,这样就在逻辑地址0x0000:0x7c00处添加了一个断点,输入调试命令c 继续执行,输入调试命令sreg 验证CS寄存器的值,输入调试命令r 验证IP 寄存器的值;

(2)输入调试命令xp /1024b 0x0000 验证此时BIOS 中断向量表已经被载入,输入调试命令xp /512b 0x7c00 显示软盘引导扇区程序的所有字节;

(3)输入调试命令xp /512b 0x0600 验证图3-2中第一个用户可用区域是空白的。输入调试命令xp /512b 0x7e00 验证图3-2中第二个用户可用区域是空白的。自己设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。

(4)输入调试命令xp /512b 0xa0000 验证图3-2中上位内存已经被系统占用。自己设计一个查看内存的调试命令,验证上位内存的高地址端已经被系统占用;

(5)输入调试命令vb 0x0000:0x7d81 添加一个断点,输入调试命令c继续执行,到断点处中断。按照打开boot.lst文件的方法打开loader.lst文件,输入调试命令xp /8b 0x1000查看内存0x1000处的数据,验证此块内存的前三个字节和loader.lst文件中的第一条指令的字节码是相同的。

(6)根据之前记录的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst 文件中最后指令的字节码比较,验证loader 程序被完全加载到了正确的位置。

●调试加载程序:

(1)使用添加物理地址断点的调试命令pb 0x1513添加一个断点,输入调试命令 c 继续执行,到断点处中断。

(2)使用查看虚拟内存的调试命令x /1wx 0x80001117 查看内存中保存的32 位函数入口地址。

●调试内核

●EOS启动后的状态和行为

(1)在控制台中输入命令“ver”后按回车,在控制台中输入命令“pt”后按回车

(2)将本实验文件夹中的Hello.exe 文件添加到软盘镜像文件中,待EOS启动完毕,在EOS控制台中输入命令“hello”后按回车,迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。

实验3:进程的创建

3.1实验目的:

1. 练习使用EOS API函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别;

相关文档
最新文档