操作系统的启动实验报告
- 格式:doc
- 大小:1.49 MB
- 文档页数:13
windows的实验报告(完整版)实验标题:Windows的实验报告一、实验目的本实验旨在深入了解Windows操作系统的基本原理和功能,并掌握Windows操作系统的安装、配置和使用方法。
二、实验内容1. Windows操作系统的安装通过制作启动盘或使用光盘安装,选择适当的版本和安装选项进行Windows操作系统的安装。
2. Windows操作系统的配置进行系统设置,包括语言和区域设定、时区设定、键盘和鼠标设置等。
3. Windows操作系统的使用掌握Windows操作系统的基本操作,包括桌面管理、文件和文件夹管理、应用程序的安装和卸载、系统设置等。
4. Windows操作系统的网络配置了解并设置Windows操作系统的网络连接,包括有线网络和无线网络的配置。
三、实验步骤1. Windows操作系统的安装按照安装引导界面的指示,选择合适的选项完成安装过程。
注意选择适配的驱动程序并进行相应设置。
2. Windows操作系统的配置在系统设置中,选择适当的语言和区域,设定正确的时区。
根据个人需求,进行键盘和鼠标相关设置。
3. Windows操作系统的使用3.1 桌面管理:了解和使用桌面的基本布局,包括桌面图标的添加、删除、移动等操作。
3.2 文件和文件夹管理:学习使用资源管理器对文件和文件夹进行管理,包括创建、复制、粘贴、删除等操作。
3.3 应用程序的安装和卸载:了解如何通过Windows商店或第三方应用程序进行安装,并学会使用控制面板进行软件的卸载。
3.4 系统设置:掌握系统设置的方法,包括背景壁纸的更换、屏幕分辨率的调整、电源管理等。
4. Windows操作系统的网络配置4.1 有线网络的配置:了解如何通过网线连接计算机和局域网以及设置IP地址、子网掩码等网络参数。
4.2 无线网络的配置:学习如何连接无线网络并进行密码设置,了解无线网络的高级配置选项。
四、实验结果经过以上实验步骤的操作,成功完成了Windows操作系统的安装、配置和使用。
操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。
实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。
三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。
在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。
通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。
2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。
通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。
在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。
(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。
通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。
2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。
在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。
(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。
u盘启动实验报告U盘启动实验报告引言:U盘启动是一种常见的计算机启动方式,它不仅方便快捷,还可以帮助我们解决一些计算机故障。
本报告将介绍U盘启动的原理、实验过程和实验结果,并探讨其在实际应用中的意义。
一、U盘启动的原理U盘启动是指通过将操作系统安装在U盘上,并将计算机的启动顺序设置为从U盘启动,从而实现使用U盘来启动计算机。
U盘启动的原理主要涉及两个方面:操作系统的安装和启动顺序的设置。
1. 操作系统的安装在进行U盘启动前,我们需要先将操作系统安装到U盘上。
具体步骤如下:(1)准备一个可用的U盘,并将其格式化;(2)下载操作系统的安装镜像文件,并使用专业的软件将其写入U盘;(3)将U盘插入计算机,并重新启动计算机。
2. 启动顺序的设置在计算机重新启动后,我们需要设置计算机的启动顺序为U盘启动。
具体步骤如下:(1)进入计算机的BIOS设置界面,通常可以通过按下特定的按键(如Del、F2等)进入;(2)在BIOS设置界面中,找到启动选项,并将U盘启动设为第一启动项;(3)保存设置并退出BIOS,计算机将会重新启动。
二、实验过程为了验证U盘启动的可行性,我们进行了一次实验。
实验所需材料包括一台计算机、一根U盘和一个操作系统的安装镜像文件。
1. 准备工作(1)选择一款适合自己的操作系统,并下载其安装镜像文件;(2)将U盘插入计算机,并备份其中的重要数据;(3)使用专业的软件将操作系统的安装镜像文件写入U盘。
2. 设置启动顺序(1)将U盘插入计算机,并重新启动计算机;(2)在计算机重新启动后,按下特定的按键(如Del、F2等)进入BIOS设置界面;(3)在BIOS设置界面中,找到启动选项,并将U盘启动设为第一启动项;(4)保存设置并退出BIOS,计算机将会重新启动。
3. 进行U盘启动(1)计算机重新启动后,会自动从U盘启动;(2)按照操作系统的安装向导进行安装,并选择U盘作为安装目标;(3)等待操作系统的安装完成,然后重新启动计算机。
标题:大一计算机Windows实验报告引言:本实验旨在帮助大一计算机专业的学生熟悉Windows操作系统的基本功能和操作方法,为日后的学习和工作打下坚实的基础。
通过实际操作,我们能够更好地理解Windows操作系统的特点和优势,并学会使用各种常见的应用程序。
实验环境:本实验使用的硬件为一台配置较高的计算机,操作系统为Windows 10,并且安装了Microsoft Office套件以及其他必要的工具软件。
实验步骤:1.首先,我们启动计算机并登录到Windows操作系统。
2.接下来,我们熟悉桌面界面和任务栏的布局,了解如何打开和关闭应用程序。
3.我们学会使用Windows资源管理器,浏览计算机文件和文件夹的层次结构,并掌握复制、剪切和粘贴文件的方法。
4.然后,我们深入学习Windows操作系统的设置选项,包括个性化设置、网络连接设置和安全设置等。
5.我们尝试使用Windows自带的文本编辑器编写简单的文档,并保存到指定位置。
6.进一步,我们学习如何使用Microsoft Office中的Word处理程序创建和格式化文档。
7.在Microsoft Excel中,我们探索如何创建表格、进行基本的数据处理和生成图表。
8.最后,我们使用Windows自带的邮件应用程序设置邮箱,并发送和接收电子邮件。
实验结果:通过本次实验,我成功地掌握了Windows操作系统的基本功能和操作方法。
我熟悉了桌面界面、任务栏布局,学会了打开和关闭应用程序。
我能够轻松浏览计算机文件和文件夹,并使用复制、剪切和粘贴功能进行文件操作。
此外,我还学会了个性化设置、网络连接设置和安全设置等重要选项。
在Microsoft Office套件中,我能够熟练地使用Word处理程序编写和格式化文档,以及在Excel 中创建表格、进行数据处理和生成图表。
最后,我成功地设置了邮箱,并能够发送和接收电子邮件。
分析与讨论:在实验过程中,我遇到了一些小问题,例如文件操作时出现了拷贝错误和命名错误。
《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。
实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。
三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。
在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。
2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。
在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。
3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。
在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。
4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。
在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。
四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。
(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。
(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
一、实验目的1. 掌握操作系统安装的基本方法。
2. 熟悉操作系统安装过程中的注意事项。
3. 提高动手操作能力,为以后使用操作系统打下基础。
二、实验环境1. 硬件环境:- CPU:Intel Core i5- 内存:8GB- 硬盘:500GB- 显卡:NVIDIA GeForce GTX 1050- 主板:华硕PRIME H310M-E2. 软件环境:- 操作系统:Windows 10- 安装工具:Windows 10安装镜像三、实验步骤1. 准备安装镜像- 将Windows 10安装镜像烧录到U盘或光盘上。
2. 设置BIOS启动顺序- 进入主板BIOS设置界面,将U盘或光盘设置为第一启动设备。
3. 启动计算机- 重启计算机,从U盘或光盘启动。
4. 开始安装操作系统- 进入Windows 10安装界面,点击“现在安装”按钮。
5. 选择安装类型- 选择“自定义:仅安装Windows(高级)”选项。
6. 选择安装磁盘- 在“驱动器选项”下,选择要安装Windows的磁盘分区,点击“新建”按钮创建新的分区,然后将所有磁盘空间分配给新分区。
7. 格式化磁盘- 在弹出的窗口中,选择“将磁盘格式化为NTFS文件系统”,点击“下一步”按钮。
8. 安装操作系统- 等待操作系统安装完成,期间会自动重启计算机。
9. 设置账户信息- 在安装完成后,根据提示设置用户名、密码等信息。
10. 安装驱动程序- 根据需要安装显卡、网卡等驱动程序。
11. 安装常用软件- 安装Office、QQ、浏览器等常用软件。
四、实验结果与分析1. 实验结果- 成功安装Windows 10操作系统,并完成了基本配置。
2. 实验分析- 本次实验中,按照步骤顺利完成操作系统安装,但在安装过程中遇到了以下问题:(1)在设置BIOS启动顺序时,需要根据主板型号进行设置,否则无法从U 盘或光盘启动。
(2)在格式化磁盘时,需要注意选择合适的文件系统,以免影响系统性能。
linux系统使用实验报告Linux 系统使用实验报告一、实验目的本次实验旨在深入了解和熟悉 Linux 操作系统的基本操作、命令行使用以及系统配置,掌握常见的文件管理、进程管理、用户权限管理等功能,提高对 Linux 系统的实际应用能力。
二、实验环境1、操作系统:Ubuntu 2004 LTS2、实验工具:终端模拟器(Terminal)三、实验内容与步骤(一)系统登录与基本命令1、启动计算机,选择 Ubuntu 操作系统,输入用户名和密码登录系统。
2、打开终端模拟器,熟悉常用的基本命令,如`ls` (列出当前目录下的文件和文件夹)、`cd` (切换目录)、`mkdir` (创建新目录)、`rmdir` (删除空目录)等。
(二)文件管理1、在用户主目录下创建一个名为`experiment` 的文件夹,使用`mkdir experiment` 命令。
2、进入该文件夹,使用`cd experiment` 命令。
3、在`experiment` 文件夹中创建一个文本文件`filetxt` ,使用`touch filetxt` 命令。
4、使用`vi` 或`nano` 编辑器打开`filetxt` 文件,输入一些文本内容,并保存退出。
5、查看文件的内容,使用`cat filetxt` 命令。
6、复制文件,使用`cp filetxt file_copytxt` 命令。
7、移动文件,使用`mv filetxt/`命令将文件移动到上级目录。
8、删除文件,使用`rm file_copytxt` 命令。
(三)进程管理1、运行一个后台进程,例如`ping &`,然后使用`jobs` 命令查看后台进程。
2、将后台进程切换到前台,使用`fg %1` (其中%1 为后台进程的编号)命令。
3、终止进程,使用`Ctrl + C` 组合键终止正在运行的进程。
4、查看系统当前运行的进程,使用`ps aux` 命令。
(四)用户权限管理1、创建一个新用户,使用`sudo adduser username` 命令,其中`username` 为新用户的用户名。
《操作系统》实验报告实验序号:01 实验项目名称:操作系统环境学号1107xxx 姓名xxx 专业、班级软件工程1103 实验地点计—502 指导教师徐冬时间2013.9.23 实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;由此,进一步熟悉Windows操作系统的应用环境。
工具/准备工作在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Windows 操作系统的计算机。
实验内容与步骤1. 计算机管理2. 事件查看器3. 性能监视4. 服务5. 数据库 (ODBC)为了帮助用户管理和监视系统,Windows提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
如图2所示。
图2 基于虚拟机的操作系统计算环境管理步骤1:登录进入Windows。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) Internet 信息服务;管理IIS,Internet 和Intranet站点的WEB服务器。
2) Server Extensions 管理器;Server Extensions管理器。
3)计算机管理;管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4)性能;显示系统性能图表以及配置数据日志和警报。
5)本地安全策略;查看和修改本地安全策略,如用户权限和审核策略。
6)事件查看器;显示来自于Windows和其他程序的监视与排错消息。
7)组件服务;配置和管理COM+应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
华北电力大学
实验报告
|
|
实验名称操作系统综合实验
课程名称操作系统
|
|
专业班级:网络学生姓名:
学号:成绩:
指导教师:王德文/姜丽梅实验日期:2015年11月4日
2. 当loop线程在控制台1中执行,并且在控制台2中执行suspend命令时,为什么控制台1中的loop线程处于就绪状态而不是运行状态?
答:当在控制台2 中执行suspend命令时,实质上是优先级为24的控制台2线程抢占了处理器,也就是控制台2线程处于运行状态,所以此时loop线程处于就绪状态了。
图 1 调试EOS信号量的工作过程。
华北电力大学实验报告
第页共页。
华北电力大学实验报告||实验名称 EOS操作系统实验课程名称操作系统||专业班级:网络1202 学生姓名:李忠明学号:************ 成绩:指导教师:王德文实验日期:2.2生成项目2.3执行项目在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的2. 在“调试”菜单中选择“启动调试”,Windows3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,调试命令2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,其中表示IP寄存器的值为0xfff0。
3. 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。
在物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。
查看EOS启动后的进程和线程的信息:1)在控制台中输入命令“pt”后按回车。
2)输出的进程和线程信息如下图所示6. 查看有应用程序运行时进程和线程的信息:1)待 EOS启动完毕,在EOS控制台中输入命令“hello”后按回车。
此时Hello.exe应用程序就开始执行。
2)迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。
输出的进程和线程信息如下图所示四、实验总结通过本次试验,对操作系统的启动有了一定了解,对后面的实验有了最基本的认识,实验过程中只要对照课本就可以很好地完成,需要细心操作。
实验三进程的创建一、实验目的及要求练习使用EOS API函数CreateProcess创建进程,掌握创建进程的方法,理解程序和进程的区别,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源的分配单位。
二、所用仪器、设备OS Lab实验环境三、实验原理四、实验方法与步骤1.启动OS Lab、新建一个EOS Kernel项目,用debug和release模式分别生成项目,新建EOS应用程序项目;2.练习使用控制台命令创建EOS应用程序的进程3.调试CreateProcess函数4.调试PsCreateProcess函数5.练习通过编程的方式创建应用程序的多个进程去在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建5个进程。
操作系统实验报告哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称操作系统的启动2. 实验目的○1跟踪调试 EOS 在 PC 机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
○2查看EOS 启动后的状态和行为,理解操作系统启动后的工作方式。
3. 实验类型验证性实验4. 实验内容调试EOS 操作系统的启动过程包括:(1).使用Bochs 做为远程目标机;(2).调试BIOS 程序;(3).调试软盘引导扇区程序;(4).调试加载程序;(5).调试内核;(6).查看EOS 启动后的状态和行为二、实验环境EOS 操作系统和配套的IDE 集成开发环境。
三、实验过程1.设计思路和流程图图2-1.EOS 操作系统的启动过程流程图2.算法实现:验证性试验,无算法。
3.需要解决的问题及解答(试验指导)(1).为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?使用一个可以吗?它们各自的主要功能是什么?如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于512字节?答:boot文件夹包含了两个汇编文件boot.asm和loader.asm。
这两个文件生成的二进制文件boot.bin和loader.bin会被写入软盘镜像文件。
操作系统启动时boot.bin和loader.bin引导软盘加载程序,二者缺一不可。
使用Boot.bin的主要功能是引导软盘;loader.bin的主要功能是加载程序。
如果把loader.bin功能移动到boot.bin程序中,必然导致程序规模扩大,可能使其大于512字节。
(2).软盘引导扇区加载完毕后内存中有两个用户可用的区域,为什么软盘引导扇区程序选择将loader.bin加载到第一个可用区域的0x1000处呢?这样做有什么好处?这样做会对loader.bin文件的大小有哪些限制。
答:首先用户只用两个可用区域,加载位置非此即彼。
第一个可用用户区是低地址区,且空间大小比较小,适合容纳小文件,所以我们选择将占用空间小的loder.bin加载到第一用户区。
优点:由低地址开始,便于检索查找。
小文件占用小空间,节约资源。
限制:loader.bin文件必须小于1c00k.(3).练习使用Bochs单步调试BIOS程序、软盘引导扇区程序和loader程序,加深对操作系统启动过程的理解。
(4).仔细比较实验指导10-5图和图10-6,尝试说明哪个是应用程序的进程,它和系统进程有什么区别,哪个是应用程序的主线程,它和系统线程有什么区别。
答:图10-6是应用程序的进程,在进程列表中只有一个ID为1的系统进程,其优先级为24,包含有10个线程,其中的ID为2的线程是该进程的主线程,系统进程没有映像名称。
在线程列表中有10个线程,它们都是系统线程。
区别:主线程的优先级别高。
存放在物理内存的低端。
4.主要数据结构、实现代码及其说明:验证性实验,无此项目。
5.源程序并附上注释:验证性实验,无此项目。
6.程序运行时的初值和运行结果,实验过程1. 调试BIOS程序(1). 在Console窗口中输入调试命令sreg后按回车,显示当前CPU中各个段寄存器的值,如图2-1。
其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000.(2).输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,如图10-3。
其中“rip: 0x00000000:0000fff0”表示IP寄存器的值为0xfff0。
(3). 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。
在Console中输出的这1K物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。
(4). 输入调试命令xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。
输出的内存值都为0,说明软盘引导扇区还没有被加载到此处。
2. 调试软盘引导扇区程序a. 输入调试命令vb 0x0000:0x7c00,这样就在逻辑地址0x0000:0x7c00(相当于物理地址0x7c00)处添加了一个断点。
b. 输入调试命令c继续执行,在0x7c00处的断点中断。
中断后会在Console窗口中输出下一个要执行的指令,即软盘引导扇区程序的第一条指令,如下 (0) [0x00007c00] 0000:7c00 (unk. ctxt): jmp .+0x006d (0x00007c6f) ; eb6dc. 为了方便后面的使用,先在纸上分别记录下此条指令的字节码(eb6d)和此条指令要跳转执行的下一条指令的地址(括号中的0x00007c6f)。
d. 输入调试命令sreg验证CS寄存器(0x0000)的值。
e. 输入调试命令r验证IP寄存器(0x7c00)的值。
f. 由于BIOS程序此时已经执行完毕,输入调试命令xp /1024b 0x0000验证此时BIOS中断向量表已经被载入。
g. 输入调试命令xp /512b 0x7c00显示软盘引导扇区程序的所有字节码。
观察此块内存最开始的两个字节分别为0xeb和0x6d,这和引导程序第一条指令的字节码(eb6d)是相同的。
h. 输入调试命令xp /512b 0x0600验证图3-2中第一个用户可用区域是空白的。
i. 输入调试命令xp /512b 0x7e00验证图3-2中第二个用户可用区域是空白的。
j. 自己设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。
k. 输入调试命令xp /512b 0xa0000验证图3-2中上位内存已经被系统占用。
l. 自己设计一个查看内存的调试命令,验证上位内存的高地址端已经被系统占用。
查看boot.lst文件1). 在“项目管理器”窗口中,右键点击“boot”文件夹中的boot.asm文件。
2). 在弹出的快捷菜单中选择“打开生成的列表文件”,在源代码编辑器中就会打开文件boot.lst。
3). 将boot.lst文件和boot.asm文件对比可以发现,此文件包含了boot.asm文件中所有的汇编代码,同时在代码的左侧又添加了更多的信息。
4). 在boot.lst中查找到软盘引导扇区程序第一条指令所在的行(第73行) 73 00000000 EB6D jmp short Start 此行包含的信息有:● 73是行号。
● 00000000是此条指令相对于程序开始位置的偏移(第一条指令应该为0)。
● EB6D是此条指令的字节码,和之前记录下来的指令字节码是一致的。
软盘引导扇区程序的主要任务就是将软盘中的loader.bin文件加载到物理内存的0x1000处,然后跳转到loader程序的第一条指令(物理地址0x1000处的指令)继续执行loader程序。
按照下面的步骤调试此过程:1). 在boot.lst文件中查找到加载完毕loader.bin文件后要跳转到loader程序中执行的指令(第278行) 278 00000181 EA00100000 jmp 0:LOADER_ORG 根据此指令相对于程序开始(0x7C00)的偏移(0x0181)可以得到此指令的逻辑地址为0x0000:7D81。
2). 输入调试命令vb 0x0000:0x7d81添加一个断点。
3). 输入调试命令c继续执行,到断点处中断。
在Console窗口中显示 (0)[0x00007d81] 0000:7d81 (unk. ctxt): jmp far 0000:1000 ; ea00100000 此条指令会跳转到物理内存0x1000处(即Loader程序的第一条指令)继续执行。
4). 按照打开boot.lst文件的方法打开loader.lst文件,并在此文件中查找到loader程序的第一条指令(第33行) 33 00000000 E91801 jmp Start5). 输入调试命令xp /8b 0x1000查看内存0x1000处的数据,验证此块内存的前三个字节和loader.lst文件中的第一条指令的字节码是相同的。
6). 根据之前记录的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst文件中最后指令的字节码比较,验证loader程序被完全加载到了正确的位置。
调试加载程序Loader程序的主要任务是将操作系统内核(kernel.dll文件)加载到内存中,然后让CPU进入保护模式并且启用分页机制,最后进入操作系统内核开始执行(跳转到kernel.dll的入口点执行)。
按照下面的步骤调试上述过程:1. 在loader.lst文件中查找到准备进入EOS操作系统内核执行的指令(第755行)755 0000014F FF15[17010080] call dword [va_ImageEntry]2. 计算此条指令的物理地址要复杂一些:偏移地址实际上是相对于节(节SECTION是NASM汇编中的概念)开始的。
由于在boot.asm程序中只有一个节,所以之前计算的结果都是正确的,但是在loader.asm程序中有两个节,并且此条指令是在第二个节中。
下面引用的代码是loader.lst中第一个节的最后一条指令(第593行) 593 000003C1 C20600 ret 6 因为第一个节中最后一条指令的偏移为0x03c1,并占用了3个字节(字节码为C20600),所以可以计算出进入内核执行的指令所在的物理地址为0x1513(0x1000+0x03c1+0x3+0x14f)。
3. 使用添加物理地址断点的调试命令pb 0x1513添加一个断点。
4. 输入调试命令c继续执行,到断点处中断。
在Console窗口中显示要执行的下一条指令(注意,此时的逻辑地址都为虚拟地址): (0) [0x00001513] 0008:0000000080001513 (unk. ctxt): call dword ptr ds:0x80001117 ;ff1517110080 由于这里使用了函数指针的概念,所以,根据反汇编指令可以确定内核入口点函数的地址就保存在虚拟地址0x8000117处的四个字节中。
5. 使用查看虚拟内存的调试命令x /1wx 0x80001117查看内存中保存的32位函数入口地址,在Console窗口中会输出类似下面的内容: 0x0000000080001117<bogus+ 0>: 0x800***** 记录下此块内存中保存的函数地址,后面的实验会验证内核入口点函数的地址与此地址是一致的。
调试内核:1). 在OS Lab的“项目管理器”窗口中打开ke文件夹中的start.c文件,此文件中只定义了一个函数,就是操作系统内核的入口点函数KiSystemStartup。