计算机操作系统启动流程实验报告,操作系统的启动实验报告.doc

操作系统实验报告

课程名称

操作系统

课程编号

0906553

实验项目名称

操作系统的启动

学号

年级

姓名

专业

计算机科学与技术

学生所在院

计算机科学与技术学院

指导老师

实验室名称

哈尔滨工程大学

计算机科学与技术学院

一.实验概述

实验名称:操作系统的启动

实验目的:

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

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

实验类型:验证,设计

实验内容:

准备实验,启动OS Lab,新建一个EOS Kernel项目;

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

使用Bochs作为远程目标机

调试BIOS程序

调试软盘引导扇区程序

调试加载程序

调试内核

查看EOS启动后的状态和行为

二.实验环境

操作系统:windows XP

编译器:Tevalaton OS Lab

语言:C++

三.实验过程

1.设计思路和流程图:

CPU从默认位置执行BIOS的开机自检和初始化程序之后,

CPU从默认位置执行BIOS的开机自检和初始化程序之后,BIOS将软盘引导扇区加载到0x7C00并执行

软盘引导扇区中的Boot程序开始执行

软盘引导扇区中的Boot程序开始执行,将软盘根目录中的Loader程序文件Loader.bin加载到0x1000并执行

Kernel

Kernel.dll开始执行,初始化EOS内核,EOS启动完毕

Loader程序开始执行

Loader程序开始执行,先加载Kernel.dll,然后启动保护模式和分页机制,最后调到Kernel.dll的入口点执行

2.实验过程:

1)在Console窗口中输入调试指令sreg,查看当前CPU中各个段寄存器的值,其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000。

2)输入调试命令r,显示当前CPU中各个通用寄存器的值,“rip: 00000fff0”表示 IP 寄存器的值为 0xfff0。

3)输入调试命令 xp /1024b 0x0000,查看开始的 1024 个字节的物理内存。在 Console 中输出的这 1K 物理内存的值都为 0,说明 BIOS 中断向量表还没有被加载到此处。

4)输入调试命令 xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都 为 0,说明软盘引导扇区还没有被加载到此处。

可以验证 BIOS 第一条指令所在逻辑地址中的段地址CS寄存器值是一致的,偏移地址和 IP 寄存器 的值是一致的。由于内存还没有被使用,所以其中的值都为0。

5) 输入调试命令 vb 0x0000:0x7c00,这样就在逻辑地址 0x0000:0x7c00(相当于物理地址 0x7c00)处添加了一个断点。输入调试命令 c 继续执行,在 0x7c00 处的断点中断。中断后会在 Console 窗口中输出下一个要 执行的指令,即软盘引导扇区程序的第一条指令。

6) 输入调试命令 sreg 验证 CS 寄存器(0x0000)的值。

7) 输入调试命令 r 验证 IP 寄存器(0x7c00)的值。

8)输入调试命令 xp /512b 0x0600 可验证第一个用户可用区域是空白的。

9)设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。

10)软盘引导扇区程序的主要任务就是将软盘中的 loader.bin 文件加载到物理内存的 0x1000 处,然后跳 转到 loader 程序的第一条指令(物理地址 0x1000 处的指令)继续执行 loader 程序。

输入调试命令xp /8b 0x1000查看内存0x1000处的数据,验证此块内存的前三个字节和loader.lst 文件中的第一条指令的字节码是相同的。

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

12)调试内核,在项目管理器中打开start.c文件,对其中的操作系统内核入口点函数KiSystemStartup添加断点及监视,在监视窗口中可以看到此函数的地址,与在虚拟内存保存的函数入口地址相同,说明的确是由loader程序进入了操作系统内核。

13)在控制台中输入命令“ver”,可得EOS的的版本,在控制台中输入命令“pt”,课查看输出的进程和线程信息。

在进程列表中只有一个 ID 为 1 的系 统进程,其优先级为 24,包含有 10 个线程,其中的 ID 为 2 的线程是该进程的主线程,系统进程没有映像 名

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值