操作系统的启动实验报告
操作系统实验报告
课程名称
操作系统
课程编号
0906553
实验项目名称
操作系统的启动
学号
年级
姓名
专业
计算机科学与技术
学生所在院
计算机科学与技术学院
操作系统的启动实验报告
操作系统实验报告
课程名称
操作系统
课程编号
0906553
实验项目名称
操作系统的启动
学号
年级
姓名
专业
计算机科学与技术
学生所在院
计算机科学与技术学院
指导老师
实验室名称
哈尔滨工程大学
计算机科学与技术学院
:
1)在Console窗口中输入调试指令sreg,查看当前CPU中各个段寄存器的值,其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000。
2)输入调试命令r,显示当前CPU中各个通用寄存器的值,“rip: 0x00000000:0000fff0”表示 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)软盘引导扇区程序的主要任务就是将软盘中的 文件加载到物理内存的 0x1000 处,然后跳 转到 loader 程序的第一条指令(物理地址 0x1000 处的指令)继续执行 loader 程序。
输入调试命令xp /8b 0x1000查看内存0x1000处的数据, 文件中的第一条指令的字节码是相同的。
11)根据之前记录的 文件的大小,自己设计一个查看内存的调试命令,查看内存中 loader 程序结束位置的字节码,并与 文件中最后指令的字节码比较,验证 loader 程序被完 全加载到了正确的位置。
12)调试内核,,对其中的操作系统内核入口点函数KiSystemStartup添加断点及监视,在监视窗口中可以看到此函数的地址,与在虚拟内存x80001117处保存的函数入口地址相同,说明的确是由loader程序进入了操作系统内核。
13)在控制台中输入命令“ver”,可得EOS的的版本,在控制台中输入命令“pt”,课查看输出的进程和线程信息。
在进程列表中只有一个 ID 为 1 的系 统进程,其优先级为 24,包含有 10 个线程,其中的 ID 为 2 的线程是该进程的主线程,系统进程没有映像 名称。在线程列表中有 10 个线程,它们都是系统线程。其中优先级为 0 的是空闲线程,当没有优先级大 于 0 的线程占用处理器时,空闲线程就会在处理器上运行并处于运行状态(Running),否则就处于就绪状 态(Ready)。 ID 为 20 的线程是控制台派遣线程,用于将键盘事件派遣到活动的控制台线程,所以在没有键盘事件发生的时间里,该线程都处于阻塞状态(Waiting)。 余下的八个线程都是控制台线程,分别对应 于八个控制台,由于它们执行的是同一个控制台线程函
数(ke/ 文件中的 KiShellThread 函数), 所以它们开始执行的地址都是相同的。控制台线程只有在处理控制台命令的时候才会处于运行状态,其它 时间它们都在等待控制台命令的输入,
操作系统的启动实验报告 来自淘豆网m.daumloan.com转载请标明出处.