华北电力大学操作系统试验报告_第1页
华北电力大学操作系统试验报告_第2页
华北电力大学操作系统试验报告_第3页
华北电力大学操作系统试验报告_第4页
华北电力大学操作系统试验报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华力也力士管综合实验报告(2013--2014年度第一学期)名 称:计算机操作系统题目:计算机操作系统实验院 系:计算机系 班 级:网里 学号: 学生姓名: 指导教师: 设计周数: 2周 成绩: 日期:2013年11月华北电力大学实验报告 实验1^验环境的使用 一、实验目的1、熟悉操作系统集成实验环境OSLab的基本使用方法。2、练习编译、调试EOS操作系统内核以及EOS应用程序。二、预备知识阅读本书第1章,对EOS操作系统和OSLab集成实验环境有一个初步的了解。重点学习第1.3节,掌握EOS操作系统内核和EOS应用程序的源代码是如何生成可执行文件的,以及OSLab是如何将这些可执行文件写入软盘镜像文件并开始执行的。三、实验内容1、启动OSLab.在安装有OSLab的计算机上,可以使用两种不同的方法来启动OSLab:在桌面上双击叮6丫@班健OSLab”图标。或者点击“开始”菜单,在“程序”中的“TevationOSLab”中选择“TevationOSLab”。.OSLab每次启动后都会首先弹出一个用于注册用户信息的对话框(可以选择对话框标题栏上的“帮助”按钮获得关于此对话框的帮助信息工在此对话框中填入学号和姓名后,点击“确定”按钮完成本次注册。.观察OSLab主窗口的布局。OSLab主要由下面的若干元素组成:菜单栏、工具栏以及停靠在左侧和底部的各种工具窗口,余下的区域用来放置编辑器窗口。2、学习OSLab的基本使用方法新建Windows控制台应用程序项目新建一个Windows控制台应用程序项目的步骤如下:.在“文件”菜单中选择“新建”,然后单击“项目”。.在“新建项目”对话框中,选择项目模板“控制台应用程序(c)”。.在“名称”中输入新项目使用的文件夹名称“oslab”。.在“位置”中输入新项目保存在磁盘上的位置“C:\test”。.点击“确定”按钮。我警器 ▼口X-口头文件 z二壬亍苣:…⑹console,h 豆〔二亍点-3源文件生成项目口£口工曰c使用“生成项目”功能可以将程序的源代码文件编译为可执行的二进制文件,方法十分简单:在“生成”菜单中选择“生成项目”。在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。如果源代码中不包含语法错误,会在最后提示生成成功,如图:第页共页华北电力大学实验报告输出生成正在编译,…,一,3司已启动生成:项目:consol配置:Debug console,g正在链接...console-统计到。个错误,0输出生成正在编译,…,一,3司已启动生成:项目:consol配置:Debug console,g正在链接...console-统计到。个错误,0个警告====================生成:成功====================执行项目在OSLab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的Windows控制台应用程序。启动执行后会弹出一个Windows控制台窗口,显示控制台应用程序输出的内容。按任意键即可关闭此Windows控制台窗口。调试项目在开始练习各种调试功能之前,首先需要对刚刚创建的例子程序进行必要的修改,步骤如下:.右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。.在弹出的“添加新文件”对话框中选择“C源文件”模板。.在“名称”中输入文件名称“func”。.点击“添加”按钮,添加并自动打开文件func.c,此时的“项目管理器”窗口会如图:项目管理器 ▼草x日工星|coitECile-&头文件=”…团cunsole.hS-&源文件i“5寸Cunholy,cfuns,c2.4.1使用断点中断执行1.在main函数中定义变量n的代码行intn=0;上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,个断点,如图:会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一intFunc(intn);//声明Func函数intn=0;n=Func(10);printf("H已11口Worldl^0;2.在“调试”菜单中选择“启动调试”Windows控制台应用程序开始执行,随后OSLab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码),如图:intFunc(intn);//声明Func函数intn=0;n=Func(10);printf("H已11口Worldl^0;2.4.2单步调试按照下面的步骤练习使用“逐过程”功能:第页共页华北电力大学实验报告.在OSLab的“调试”菜单中选择“逐过程”,“逐过程”功能会执行黄色箭头当前指向的代码行,并将黄色箭头指向下一个要执行的代码行。.按F10(“逐过程”功能的快捷键),黄色箭头就指向了调用printf函数的代码行。查看控制台应用程序窗口,仍然没有任何输出。.再次按F10执行printf函数,查看控制台应用程序窗口,可以看到已经打印出了内容。.在“调试”菜单中选择“停止调试”,结束此次调试。.4.3查看变量的值在调试的过程中,OSLab提供了三种查看变量值的方法,按照下面的步骤练习这些方法:.按F5启动调试,仍然会在之前设置的断点处中断。.将鼠标移动到源代码编辑器中变量n的名称上,此时会弹出一个窗口显示出变量n当前的值(由于此时还没有给变量n赋值,所以是一个随机值)。.在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,可以使用“快速监视”对话框查看变量n的值。然后,可以点击“关闭”按钮关闭“快速监视”对话框。.在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“添加监视”,变量n就被添加到了“监视”窗口中。使用“监视”窗口可以随时查看变量的值和类型。此时按F10进行一次单步调试,可以看到“监视”窗口中变量n的值会变为0,如图监视名称值类型n0x0int2.4.4调用堆栈.按F5启动调试,仍然会在之前设置的断点处中断。.选择“调试”菜单“窗口”中的“调用堆栈”激活“调用堆栈”窗口。可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函数地址)。.按F11(“逐语句”功能的快捷键)调试,直到进Nunc函数,查看“调用堆栈”窗口可以发现在堆栈上有两个函数Func和main。其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。说明是在main函数中调用YFunc函数。3、EOS内核项目的生成和调试新建EOS内核项目新建一个EOS内核项目的步骤如下:.在“文件”菜单中选择“新建”,然后单击“项目”。.在“新建项目”对话框中,选择项目模板“EOSKernel”。.在“名称”中输入新项目使用的文件夹名称“eos”。.在“位置”中输入新项目保存在磁盘上的位置“C:\”。.点击“确定”按钮。.2生成项目.按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。.打开C:\eos\debug文件夹,查看生成的对象文件和目标文件。找到boot.bin、loader.bin和kernel.dll三个二进制文件,这三个文件就出。5操作系统在运行时需要的可执行文件。3.3调试项目第页共页

华北电力大学实验报告.在“项目管理器”窗口的ke文件夹中找到start.c文件节点,双击此文件节点使用源代码编辑器打开start.c文件。.在start.c文件中KiSystemStartup函数的“KiInitializePic();”语句所在行(第61行)添加一个断点,如图9-7。EOS启动时执行的第一个内核函数就KiSystemStartup函数。//KilnitializePic();KilnitializePit。;.4查看软盘镜像文件中的内容在“项目管理器”窗口中双击软盘镜像文件Floppy.img,就会使用FloppyImageEditor工具打开此文件(在FloppyImageEditor工具中按F1可以查看此工具的帮助文件)。在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,这两个文件都是在启动调试时被写入软盘镜像文件的(可以查看这两个文件的修改日期)。boot.bin文件在启动调试时被写入了软盘镜像的引导扇区中,不受软盘文件系统的管理,所以在文件列表中找不到此文件。关闭FloppyImageEditor工具。.5查看EOSSDK(SoftwareDevelopmentKit)文件夹1.点击OSLab工具栏上的“项目配置”下拉列表,选择下拉列表中的“Release”项目配置,“Release”项目配置被设置为新的活动项目配置(原来的活动项目配置是“Debug”)。如图::海,上▼谓发芸|£-二通|•▼-▼|>|口叱uq IT博WRITEPORTUCHAR 二|&1gRelease:-=-=一c।1cua目区匚*|_±注* DebugRelease配置管理器,-I4、EOS应用程序项目的生成和调试新建EOS应用程序项目.在“文件”菜单中选择“新建”,然后单击“项目”。.在“新建项目”对话框中,选择项目模板“EOS应用程序”。.在“名称”中输入新项目使用的文件夹名称“eosapp”。.在“位置”中输入新项目保存在磁盘上的位置“C:\”。.点击“确定”按钮。生成项目.按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。.打开C:\eosapp\debug文件夹,查看生成的对象文件和目标文件。其中的EOSApp.exe就是EOS应用程序的可执行文件。调试项目查看软盘镜像文件中的内容修改EOS应用程序项目名称COMSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)UelcometoEOSshell>AutorunA:\MyApp.exe5、退出OSLab.在“文件”菜单中选择“退出”。.在OSLab关闭前会弹出一个保存数据对话框(可以选择对话框标题栏上的“帮助”按钮获得帮助信息),核对学号和姓名无误后点击“保存”按钮,OSLab关闭。.在OSLab关闭后默认会自动使用Windows资源管理器打开数据文件所在的文件夹,并且选中刚刚保存的数据文件(OUD文件)。将数据文件备份保存在自己的文件中。第页共页华北电力大学实验报告 实验2操作系统的启动 一、实验目的1、跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。2、查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。二、预备知识阅读本书第3章,了解£。5操作系统的启动过程。阅读第2章中的第2.4节,复习汇编语言的相关知识,并掌握NASM汇编代码的特点。阅读附录A,了解Bochs和VirtualPC这两款虚拟机软件的特点,重点熟悉Bochs的调试命令。三、实验内容准备实验.启动OSLab。.新建一个EOSKernel项目。.在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。boot.asm是软盘引导扇区程序的源文件,loader.asm是loader程序的源文件。简单阅读一下这两个文件中的NASM汇编代码和注释。.按F7生成项目。调试EOS操作系统的启动过程使用Bochs做为远程目标机.在“项目管理器”窗口中,右键点击项目节点,在弹出的快捷菜单中选择“属性”。.在弹出的“属性页”对话框右侧的属性列表中找到“远程目标机”属性,将此属性值修改为“BochsDebug"(此时按F1可以获得关于此属性的帮助)。.点击“确定”按钮关闭“属性页”对话框。接下来就可以使用Bochs模拟器调试BIOS程序和软盘引导扇区程序了。调试8105程序<0>[BxfffffffB]f000:ff£0<unk.ctxt>:jnpfarf000:e05b ;ea5be000F0kbochs:1>_1.在Console窗口中输入调试命令sreg后按回车Kbochs:1>sregcs:s=BxfBBB,dh=BxffBB93ff,dl=0x00BBffff,ualid=7ds:s=0x0000,dh=0x00009300,dl=0x0000ffff,ualid=7ss:s=0x0000,dh=0x00009300,dl=0x0000ffff,ualid=7es:s=0x0000,dh=0x00009300,dl=0x0000ffff,ualid=7fs:5=0x0000,dh=0x00009300,dl=0x0000ffff,ualid=7gs:5=0x0000,dh=0x00009300,dl=0x0000ffff,ualid=7Idtr:s=0x0000,dh=0x00008200,dl=0x0000ffff,ualid=ltr:s=0x0000,dh=0x00008b00,dl=0x0000ffff,ualid=lgdtr:base ,limit=0xffffidtr:base ,limit=0xffffkbochs:2>一第页共页华北电力大学实验报告rax:0X00000000:00000000rex:rdx:0X00000000:QQQQ0f2&rbx:rsp:0X00000000:00000000rbp:rsi:0X00000000:华北电力大学实验报告rax:0X00000000:00000000rex:rdx:0X00000000:QQQQ0f2&rbx:rsp:0X00000000:00000000rbp:rsi:0X00000000:00000000rdi:r8:QyiQQQQQQQQ-00000000r9:P10:QyiQQQQQQQQ-00000000rll:p12:QvlQQQQQQQQ:00000000r13:f14:0X00000000:00000000rl5:^ip:0X00000000:0000FFF01eflags0x00000002iduipuifacuntrfntIOPL=0<bochs:2>r<bochs:3>0X00000000:000000000X00000000:000000000X00000000:000000000X00000000:000000000X00000000:000000000X00000000:000000000X00000000:000000000X00000000:00000000ofdfiftfsfzfafpfcf3.2.4调试加载程序调试内核EOS启动后的状态和行为在控制台中输入命令“ver”后按回车OSLabFC-licrosoftVirtualFC200T-In]x|ActionEditCDFloppyHelpCOMSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)UelcometoEOSshell>uerTeuationEOS[UersionNumber1.0]在控制台中输入命令“pt”后按回车第页共页华北电力大学实验报告 实验3进程的创建 一、实验目的1、练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。2、调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。二、预备知识阅读本书第5.1节,重点理解程序和进程的关系,熟悉进程控制块结构体以及进程创建的过程。仔细学习CreateProcess函数和其它与创建进程相关的函数的说明,注意理解这些函数的参数和返回值的意义。三、实验内容3.1准备实验按照下面的步骤准备本次实验:.启动OSLab。.新建一个EOSKernel项目。.分别使用Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOSSDK文件夹。.新建一个EOS应用程序项目。.使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。.2练习使用控制台命令创建EOS应用程序的进程.在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像文件。.将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中。Hello.exe一个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c源文件。.在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。.按F7生成EOS应用项目。CONSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)Ue1cometoEOSshell>AutorunA:\EOSApp.exeHellouorId!A:\EOSApp.exeexituith0x00000000.>A:\Hello.exeHeilojuorId*1HeilojuorId*2HeilojuorId*3HeilojuorId*4Hello..uorld?5Bue-bue?A:\Hello.exeexituith0x00000000.华北电力大学实验报告3.3练习通过编程的方式让应用程序创建另一个应用程序的进程.使用NewProc.c文件中的源代码替换之前创建的EOS应用程序项目中的EOSApp.c文件内的源代码。.按F7生成修改后的EOS应用程序项目。.按F5启动调试。OSLab会首先弹出一个调试异常对话框。.在调试异常对话框中选择“否”,继续执行。CONSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)Ue1cometoEOSshell>AutorunA:\EOSApp.exeCreateaprocessanduaitfortheprocessexit...Heilojuorld*1Heilojuorld*HHeilojuorld*3Heilojuorld*HHello^orld*5Bye-bye?Theprocessexitwith0.A:\EOSApp.exeexitwith0x00000000..4调试CreateProcess函数.按F5启动调试EOS应用程序,OSLab会首先弹出一个调试异常对话框。.选择“是”调试异常,调试会中断。.在main函数中调用CreateProcess函数的代码行(第57行)添加一个断点。.按F5继续调试,在断点处中断。.按F11调试进入CreateProcess函数。此时已经开始进入£。5内核进行调试。.5调试PsCreateProcess函数.在PsCreateProcess函数中找到调用PspCreateProcessEnvironment函数的代码行(create.c文件的第163行),并在此行添加一个断点。.按F5继续调试,到此断点处中断。.按F11调试进入PspCreateProcessEnvironment函数。.6练习通过编程的方式创建应用程序的多个进程使用OSLab打开本实验文件夹中的参考源代码文件NewTwoProc.c,仔细阅读此文件中的源代码。使用NewTwoProc.c文件中的源代码替换EOS应用程序项目中EOSApp.c文件内的源代码,生成后启动调试,查看多个进程并发执行的结果。第页共页

华北电力大学实验报告第页共页华北电力大学实验报告 实验4线程的状态和转换 一、实验目的1、调试线程在各种状态间的转换过程,熟悉线程的状态和转换。2、通过为线程增加挂起状态,加深对线程状态的理解。二、预备知识阅读本书第5.2.3节,了解线程都有哪些状态以及EOS是如何定义这些状态的。了解线程是如何在这些状态之间进行转换的,特别是要阅读一下EOS中用于线程转换的相关函数的源代码。阅读本书第5.2.4节,了解£。5为线程添加的挂起状态,以及Suspend和Resume原语操作。线程状态的转换和线程的同步、线程的调度是不可分割的,所以建议读者简单学习一下第5.3和5.4节中的内容。三、实验内容3.1准备实验按照下面的步骤准备实验:.启动OSLab。.新建一个EOSKernel项目。.2调试线程状态的转换过程.按F7生成在本实验3.1中创建的EOSKernel项目。.按F5启动调试。.待EOS启动完毕,在EOS控制台中输入命令“loop”后按回车。.结束此次调试。100P命令执行的效果可以参见图:■OSLabFC-licrosoftVirtualFC200TActionEditCDFloppyHelpCOMSOLE-l(PressCtrl+F1~F8toswitchconsoleuindou...)LoopthreadID31:133573线程由阻塞状态进入就绪状态线程由运行状态进入就绪状态线程由就绪状态进入运行状态线程由运行状态进入阻塞状态3.3为线程增加挂起状态.删除之前添加的所有断点。.按F5启动调试。.待EOS启动完毕,在EOS控制台中输入命令“loop”后按回车。此时可以看到100P线程的执行计数在不停增长,说明100P线程正在执行。记录下100P线程的ID。.按Ctrl+F2切换到控制台2,输入命令"suspend31"(如果100P线程的ID是31)后按回车。命令执行成功的结果如图12-2所示。.按Ctrl+1切换回控制台1,可以看到由于loop线程已经成功被挂起,其执行计数已经停止增长了。此时占用处理器的是EOS中的空闲线程。第页共页华北电力大学实验报告 实验5进程的同步 一、实验目的1、使用EOS的信号量,编程解决生产者一消费者问题,理解进程同步的意义。2、调试跟踪£05信号量的工作过程,理解进程同步的原理。3、修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。二、预备知识阅读本书第5章中的5.3节,学习EOS内核提供的三种同步对象(该实验没有涉及到Event同步对象)。重点理解各种同步对象的状态与使用方式。同时学习经典的生产者一消费者问题。阅读5.2节,学习在EOS应用程序中调用EOSAPI函数CreateThread创建线程的方法。三、实验内容3.1准备实验.启动OSLab。.新建一个EOSKernel项目。.生成EOSKernel项目,从而在该项目文件夹中生成SDK文件夹。.新建一个EOS应用程序项目。.使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。.2使用EOS的信号量解决生产者一消费者问题生产者一消费者同步执行的过程CONSOLE-1(PressCtr1+F1~F8tosuitchconsoleuindou...)Ue1cometoEOSshell>AutorunA:\EOSApp.exeProducea0Consumea0Producea1ProduceazProducea3Producea4Consumea1Producea5Producea6Producea7Producea8ConsumeazProducea9Producea10Producea11Producea1ZConsumea3Producea13Consumea4Producea14.3调试EOS信号量的工作过程创建信号量第页共页

华北电力大学实验报告等待、释放信号量等待信号量(不阻塞)释放信号量(不唤醒)等待信号量(阻塞)释放信号量(唤醒).4修改EOS的信号量算法在目前£。5Kernel项目的ps/semaphore.c文件中,PsWaitForSemaphore函数的Milliseconds参数只能是INFINITE,PsReleaseSemaphore函数的ReleaseCount参数只能是1。现在要求同时修改PsWaitForSemaphore函数和PsReleaseSemaphore函数中的代码,使这两个参数能够真正起到作用,使信号量对象支持等待超时唤醒功能和批量释放功能。(a)main函数流程图;(b)Producer函数流程图;(c)Consumer函数流程图(C)(C)图1卜1.由数端程I轨的》曲眦虹丽鼓辘程犯㈤胸由MF的敷潦程图第页共页华北电力大学实验报告实验6时间片轮转调度一、实验目的1、调试EOS的线程调度程序,熟悉基于优先级的抢先式调度。2、为EOS添加时间片轮转调度,了解其它常用的调度算法。二、预备知识阅读本书第5章中的第5.4节。重点理解EOS当前使用的基于优先级的抢先式调度,调度程序执行的时机和流程,以及实现时间片轮转调度的细节。三、实验内容3.1准备实验按照下面的步骤准备实验:.启动OSLab。.新建一个EOSKernel项目。.2阅读控制台命令“rr相关的源代码阅读ke/sysproc.c文件中第690行的ConsoleCmdRoundRobin函数,及该函数用到的第649行的ThreadFunction函数和第642行的THREAD_PARAMETER结构体,学习“rr”命令是如何测试时间片轮转调度的。没有时间片轮转调度时“r命令的执行效果.3调试线程调度程序调试当前线程不被抢先的情况正像上图中显示的,新建的第0个线程会一直运行,而不会被其它同优先级的新建线程或者低优先级的线程抢先。按照下面的步骤调试这种情况^spSelectNextThread函数中处理的过程。.结束之前的调试。.在ke/sysproc.c文件的ThreadFunction函数中,调用fprintf函数的代码行(第680行)添加一个断点。.按F5启动调试。.待EOS启动完毕,在EOS控制台中输入命令“rr”后按回车。“rr”命令开始执行后,会在断点处中断。.查看ThreadFunction函数中变量pThreadParameter->丫的值应该为0,说明正在调试的是第0个新建的线程。.激活虚拟机窗口,可以看到第0个新建的线程还没有在控制台中输出任何内容,原因fprintf函数还没有执行。.激活OSLab窗口后按F5使第0个新建的线程继续执行,又会在断点处中断。再次激活虚拟机窗口,第页共页

华北电力大学实验报告可以看到第0个新建的线程已经在控制台中输出了第一轮循环的内容。可以多按几次F5查看每轮循环输出的内容。3.3.2调试当前线程被抢先的情况3.4为EOS添加时间片轮转调度(行时间片轮转调度时“rr”令的执行效果)修改ps/sched.c文件中的PspRoundRobin函数(第337行),在其中实现时间片轮转调度算法。.代码修改完毕后,按F7生成EOS内核项目。.按F5启动调试。.在EOS控制台中输入命令“rr”后按回车。应能看到20个线程轮流执行的效果,如图。■OSLabFC-licrosoftVirtualPC2007_lnl:|■OSLabFC-licrosoftVirtualPC2007_lnl:|ActionEditCDFloppyHelpF8toswitchconsoleuimoiij...)396014z3o361270344-446763796334-440750949987523442F8toswitchconsoleuimoiij...)396014z3o361270344-446763796334-440750949987523442co55COcJCOc353836373130JJ>7JJCOCOCO8COCOcc((ccCOMSOLE-1Thread0Thread.1Thread.ZThread.3Thread4Thread.Thread56Thread7ThreadBThread.9Thread.10Thread11Thread.12Thread.13Thread14Thread.15Thread16Thread.17Thread.18Thread19第页共页华北电力大学实验报告实验7物理存储器与进程逻辑地址空间的管理一、实验目的1、通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。2、通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。二、预备知识阅读本书第6章。重点阅读第6.3节和第6.6节,了解物理存储器的管理方式和进程逻辑地址空间的管理方式。三、实验内容3.1准备实验按照下面的步骤准备实验:.启动OSLab。.新建一个EOSKernel项目。3.2阅读控制台命令“pm”相关的源代码,并查看其执行的结果(pm,喻令的执行结果)按照下面的步骤执行控制台命令“pm”,查看物理存储器的信息:.按F7生成在本实验3.1中创建的EOSKernel项目。.按F5启动调试。.待EOS启动完毕,在EOS控制台中输入命令“pm”后按回车。观察命令执行的结果,如图所示,可以了解当前物理存储器的使用情况。3.3分配物理页和释放物理页(配物理页或者释放物理页后物理存储器的变化情况)接下来,在pm命令函数中添加分配物理页和释放物理页的代码,单步调试管理物理页的方法。按照下面的步骤修改pm命令的源代码:.使用OSLab打开本实验文件夹中的pm.c文件(将文件拖动到OSLab窗口中释放即可打开)。此文件中有一个修改后的ConsoleCmdPhysicalMemory函数,主要是在原有代码的后面增加了分配物理页和释放物理页的代码。.使用pm.c文件中ConsoleCmdPhysicalMemory函数的函数体替换ke/sysproc.c文件中ConsoleCmdPhysicalMemory函数的函数体。.按F7生成修改后的EOSKernel项目。第页共页

华北电力大学实验报告4.按F5启动调试。5.待EOS启动完毕,在EOS控制台中输入命令“pm”后按回车。3.4阅读控制台命令“vm”相关的源代码,并查看其执行的结果使用“vm命令查看系统进程虚拟地址描述符的结果&OSLabFC-licrosoftVirtualFC2007_|n|XActicmEditCDFloppyHelpCOMSOLE-l(PressCtrl+F1~F8tosuitchconsoleuiindou...)Z4 Y Z4 Uaiting 1 0x80018Z6DZ5 Y Z4 Uaiting 1 0x80018Z6D26 ¥ 24 Uaiting 1 0x80018Z6D27 Y Z4 Uaiting 1 0x80018Z6D28 Y Z4 Uaiting 1 0x80018Z6D>um1TotalUpnfrom655360to657407.(OxAOOOOOOO-OxAOPFFFFF)litUad Include 1 Upn From 65536。 to 655360. (OxAOOOOOOO - OxAOOOOFFF)ZttUad Include Z Upn From 655361 to 65536Z. (OxAOOOlOOO - OxAOOOZFFF)3ttUad Include Z Upn From 655365 to 655366. (0xAOOO5000 - 0xA0006FFF)4ttUad Include Z Upn From 655367 to 655368. (OxAOOOPOOO - OxAOOOBFFF)5#Uad Include Z Upn From 655369 to 655370. (OxAOOOSOOO - OxAOOOAFFF)6ttUad Include Z Upn From 655371 to 65537Z. (OxAOOOBOOO - OxAOOOCFFF)7ttUad Include Z Upn From 655373 to 655374. (OxAOOODOOO - OxAOOOEFFF)8ttUad Include Z Upn From 655375 to 655376. (OxAOOOFOOO - OxAOOlOFFF)UadIncludeZUpnFrom655377to655378.(OxAOOllOOO-OxAOOlZFFF)lOttUadIncludeZUpnFrom655379to655380.(0xA0013000-OxAOOMFFF)liftUadIncludeZUpnFrom655381to65538Z.(QxA0015QQQ-0xAQQ16FFF)TotalUpnCount:Z048.AllocatedUpnCount:21.FreeUpnCount:20Z7.|>|93H经,1*使用pt命令查看有应用程序运行时进程和线程的信息第页共页

华北电力大学实验报告第页共页华北电力大学实验报告3.5在系统进程中分配虚拟页和释放虚拟页TatiaOVpnEran曰:5538to&5MdCTT_[O^CKWCKKIO-0k-WjFWFF?ddddddddd^

siissyn

;I;;:m出交ss黑yd:N2,J22222222-鎏第需E!

寻寻3.5寻55sS华北电力大学实验报告3.5在系统进程中分配虚拟页和释放虚拟页TatiaOVpnEran曰:5538to&5MdCTT_[O^CKWCKKIO-0k-WjFWFF?ddddddddd^

siissyn

;I;;:m出交ss黑yd:N2,J22222222-鎏第需E!

寻寻3.5寻55sS5S岳sEHas3汪岳&邑mGG6G6廿石帽sgrm及st翼寻耳一da耳a_d4手导季声寻宝寻寻一H导缶寻&&寻耳G&曰6&曰el-iQ*4g3mmIQHKKUQ3IQMECO3300IObc^CEKIjOOOIUHKKi800lax^croroooIUkM口OT33l'qmKIH337777777^7FFJ尸广PF尸尸FT尸碧器得盅*雀ss^aaaaaaaaakkgK.K.K.K.K.K.K.KIGO'oqaoqaqcioTataJVon匚―匕二20-fc3.A3]aesiL-ffdVttiCaunt2J.FreeI'emCo«inLz202T_Zt'rcwdPiiVKiczalTlidhCount:O.Vf7ul%s-siczziliT1daerGaunt:T326LT>Ts-2ifddrcss;QK.-WOT^eWOL=;Ok1QWLclclcldclclclclclMgw

w或罂嚣:S:T

HHH工H出七工阳me上旧VVKamm与5一口3-0ommm寻s&&sa&-6&&■&e6tlHti。66e二■■■■”■■■“川川川EKEeeM宣s皿嚣墨建急要通3年事31国s3Km-a--3--dS33s_dasas与季Hi寻寻导导a导暴寻&&tl.&曰回&46&疝IOkl^OCKITOOOICmKKJROOlO^CCOSGOO।cmxKimoo『口归4口30513lo^ccoroooIQKKKIDO3iPdgiNSEms”nw(口讯ADOmDOTrak.^oaiaoooFFFFFT尸FrH日H室第鼾器容雀tsssssojeoaoao0aao-AJJocDt.^d\EinCowitzLZZ.Frpe?HeeCauriL:20GG-EerordPvsgiczzi1HjeeCjcHjnt:d_Freeni>~sicalFaj^rCourtzT126LPr^re?31sLiselkh曰^ldi"叱sh二 030-33MLS33>e™dk].-addILL]1L11L。出』』匿』慝意皿最需M强蔓耳_d耳耳一,耳斗百斗一H寻导导与三导导寻导&■&廿a&&片4&曰廿qqqqrlqq内qhLLLLttLtLL翥密案需登sS言S555S555M&33三3汪岳京&&-tlHGeiHatlmtl10”400383la^ccowooIQkM口OTMJ3IOk^CCOjOOOina-4nmtnmoaoA]]aeat^dt'reiCaunt21一FreeVEmCo^intz202T_EeraedPtivsiczalIVuzeCount:Q_/■""euV>i炉Mjuzi】PijjwCaunfc.:丁12工3.6在应用程序进程中分配虚拟页和释放虚拟页在应用程序进程中分配虚拟页和释放虚拟页第页共页华北电力大学实验报告 实验8分页存储器管理 一、实验目的1、学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。2、查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。3、编程修改页目录和页表的映射关系,理解分页地址变换原理。二、预备知识阅读本书第6章。了解1386处理器的二级页表硬件机制,EOS操作系统的分页存储器管理方式,以及进程地址空间的内存分布。三、实验内容准备实验按照下面的步骤准备本次实验:.启动OSLab。.新建一个EOS应用程序项目。.2查看EOS应用程序进程的页目录和页表.使用memory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的源代码。.右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。.在弹出的“添加新文件”对话框中选择“asm源文件”模板。.在“名称”中输入文件名称“func”。.点击“添加”按钮添加并自动打开文件func.asm。.将getcr3.asm文件中的源代码复制到func.asm文件中。.按F7生成修改后的EOS应用程序项目。.按F5启动调试。.应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OSLab“输出”窗口中,输出内容如图16-2(a)。.将“输出”窗口中的内容复制到一个文本文件中。3查看应用程序进程和系统进程并发时的页目录和页表.结束之前的调试。.取消EOSApp.c第121行语句的注释(该行语句会等待10秒)。.按F7生成修改后的EOS应用程序项目。.按F5启动调试。.在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程。利用其等待10秒的时间,按Ctrl+F2切换到“Console-2”。.在“Console-2”中输入命令“mm”后按回车,会将系统进程的二级页表映射信息输出到虚拟机窗口和OSLab的“输出”窗口,输出内容如图16-2(b)。注意,在图16-2(b)中添加了一些空行,方便与图16-2(a)比较。“Console-1”中的应用程序在等待10秒后,又会输出和图2(a)一致的内容。第页共页

华北电力大学实验报告.将“输出”窗口中的内容复制到一个文本文件中。.4查看应用程序进程并发时的页目录和页表.结束之前的调试。.取消EOSApp.c第201行语句的注释(该行语句会等待10秒)。.按F7生成修改后的EOS应用程序项目。.按F5启动调试。.在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程。利用其等待10秒的时间,按Ctrl+F2切换到“Console-2”。.在“Console-2”中输入“eosapp”后按回车,再执行一个EOSApp.exe。.由EOSApp.exe创建的两个并发进程会先后在各自的控制台和OSLab“输出”窗口中,输出各自的二级页表映射信息。输出的内容如图16-3。.将“输出”窗口中的内容复制到一个文本文件中。EOS应用程序进程的二级页表映射信息oooa相卷荐住荐住隹岸rrl'rTVTTrrJ1PTY]2QooQoa。。0OOIKQOErorgrargrarargrararoraMrata

SSSTGSSSXJk-LUI:KiirE2Qk-L2]K--L32W2MK-t2-tk-125K-tSl-比凡%oooa相卷荐住荐住隹岸rrl'rTVTTrrJ1PTY]2QooQoa。。0OOIKQOErorgrargrarargrararoraMrata

SSSTGSSSXJk-LUI:KiirE2Qk-L2]K--L32W2MK-t2-tk-125K-tSl-比凡%宫■CJkO-Ok1QnHQICIkSWKJOTW?-™k-VO3m11T行」okoiOKaaaooaoa>->oik£jOn]tOw^CMaiaoa>-:uCiN]zOs&ZrFraKjsa3rroacj?-xik3ft[□K.MDOOOOOCO-XJr.403=cmEaiAoooMadj-xjk-ko5;0k1fonSQCWJQaC?-Wis-K?a=口grakiA00020005-xiimot二 K«L<^KKJ3KO>->eiK-i]c二aco(oKaSoaa.nWJGf-Mkwa=cjsdSra^oaasooci^-xjk-kjr=0k7■0K.^-MK?7WQf-Wk1QGz0晶 Mtoa源jos—巾gtau二DE©kA口OTW06-XITOH=口修)「口kAWWW0口5s一内kR尸rOkefas.itixnEwooj-™k41a二QkC 口OTgoa-xim二口kbraK-SoaaDaoo?-™c-iiz:asdp:EaK.«kcoaEooo?-xjk-<j3:QkT位:OiClO=OK]]「QCWrOicJG二Ok34MWratWG-BK-iJ,aiE.Jooioooa>--Qw-ijaOK.^cnjicco>->c1k1=16ox.joaj-xioa>--ok-1is"juoiorio8%Tcmq二Gic]^[01£800:1303;•一XImdHA:axisroK.^zo3(«oa:i--Qk-UB:aKi-Ex.g:"mm:・7en凶二a0:]3[OK.«aisooa>-^ciK-i:z.^i;axMMQanaE--Okua-troidoamaaaci?—io。z口门〔口江gai006一不nu-口白8l;OidC3a3MOa0>-XJkWJ;口启约WrtG338gOTC!>-XJkWJ:asc2SJIGs<U2S]Oaa>-<Jkw-t:Bumdca3Moera« I.QkG033JQK??-^CJKtQC[0kOD4JIXJOT0'>->0&<402二m【口犹处rc»o口>一"i里也自Uh炉m:i<zz31I'uj-igrTok=i]:JOEsbil^i炉为ian】>krmry-Tn1口口二 日TOEb:::Ok3^JRgazrtfldo;■「巾r3rtz।口m口aooacw)-X3k-1=O3:OkO0x33U0EO>->Ok4OS占QkI。冗ACWG4KW卜一了mOh2□xxoaa2coa>-^oh4=cij:Ok3OK."waa3cscw—ic:OkS幻nACM05OEM¥ta、=OkSOK.^oaosoaa>->Ok-4=oib占QkTQk.-W^^WW¥->0x1=8:6c国OK.^oaoacDa>-^ox4cro:□《勺以K33gOM、->0k-4=OT占QkAQK.-Wflft^WW¥一>*±府:OKfffiOK.swaaEiCDa>-^ok4jo:OkC©=33QCCKW+->de431:OkDgMJWaOEOGM J2-OmEOH.ajCKiabCDa>-^Ok4:J3占QkFBeKCWHEW)一新 J-i:0x30ioDcwajCKMOj-mi3:6c1]UDMOCH1CMOJ-XJK-43G占Ok32(4?k.WO33£WO>-XJktlT:OxJ3rox.woi-3aaoj-Psc・t:i,zOxJ4lO^WO]tCMd>-XJKiiy=Ok3AE:[OKS03FEXJO0S-XJJD3FH:0bc]otobqWO]3OT0>-MisdiJA:Om36IOM-iJOG1f»0O?--aK-4=1:0x17的工 仔母:ok]^lOK.wajsaao-xiK'tsAra^cMooaOT:-Ia^CMWKJCWJ-XIk-LOO『叮五二oK3aolOidCCECKWiXJS-XIk4O]T'TF;=QkZSQ但代02型wmj-X!KdgFF::OkZSJ(OrfC0Qa]OO0>":dk4O1RF::Ok3302d・d3aws'f灯kimTTE二0K8J3时:mmom?foitEl1IB-::□*81[OHCCMzOOaOO170202J*ris-x3<□=)]ILfp丁口上日]二lU^i-3rtih's3<dis]J-kTiaryT口t二口;卡二雨饰有应用程序进程时,系统进程的二级页表映射信息第页共页

华北电力大学实验报告匚R3-FM8043-Xlw-tai],»::did[□三二Qk1Hk4jKI(™卜Fk43:O'l?::口肩(OkWIOOT?1rn::OkI「QscMIOOTLPkZ]'Jt::Ok2tGic4O2am>->Ok4]]mt::Qk2(Oic4fl2aao?->OKi3aIF::0e3(0|(403000>-?<JrL20lit::Qk3(0»:403000?-?<]«43]IF:二口M值加4000%-P/】11rTK:口k4r0K4£H0tM>-XJK432Tit::口启山㈤RO0;■一国mt:: micMLiBML不花433I'll::口洎国⑻制足广不团工mt::OKfiRicdJMOOTL不k<34P1F:OtTraK4OjtJtM>Bit::Qk7rOic4JCJ70aO?->OK43a:rit:二。沟(oifWaaOT?->Ak^2^Ulf:;Qk3(0K-UCKa»?->flK43eiT1Y'-口沟(Oic4O^aO0?>Ort26mt::Qrg(OKdjeryaaaj-xjK^SjTit::akAgKdCUWmLE阻了mt::Oka(aK-ia^«M>-xjK43arit::OmBtaK4janaoa>->a(t<2snit::QkB(ai;4jOflacM>->aK43gJ'W::0f2OTKkiBEKTOL冲k4DIK0k2CKIr0KaOMOTW;->flK0l■e二OhOfOjdaaaaooot]?-?OK0二叮上二OkOfoK8aaooaaa?->aidaJ'lt:;Ok:Ii。■OCUECJ"第k】11rn::Ok:i[oKatMOjaoa>->aK]lit::CJk3H:『口闻DTK:CJkJIEfaki8O3FKJa0?->0ir3H:m::cjkSWfQKaa/i+oaQLXJic*nir: 「QkSos丽aaLXJrStrmOnssa©Moaaoas-2K4031口三二cuss口fot^aaaaaaa?-唱(h03]E::口加[aKA0tM0tM0>-XJkW511rn::口k。〔口口⑪如必广:口必归IF:Ok:IPkAOCKI™o>-XJk4O6mt::OkI8KAeMECOTLACmKIE::口总值d000汹9一冷网7nt::0k2i(kAOTO2cxML*k4CJ7]1t::akJra^OCOJaaQ?-Oiei]Cmt::Qk.jraK.waojaaa?->Oiei]c1TI::0k4[aicAOCKi-KKiO?-XJk\2Umt::Qk\fckAOTECXWLgK4^]F:Om值小必3tMs-2皿,11rTK:0k58KMWECXMLgm、ITt::口泊\QvAWWQ>-XJsWtimt::QKdraK.woa™?->0K40filit::Oilj[Oic^OCDjOOO?-Ok4OCmt::Qk7toKAaaajaaa?->Oieiocin::口困(a^oaaaaaQ?-o»hoiiDir:QkS(aK.was[»a?->OKAonjit:;口㈤ra^oajyciaQ?-Ok4olUTt:;Qk9raK.WCiOyM»?->Ur?iat:IE:: iOkAOtM至as-冷kWI.mt::NAiCkAtMOWCXMLgKi"IF:口阈gkAOCKlfKMS-第mt::口酒8也⑪情⑼尸:口武口口if:口比raKAoaacnao>-xjirL]iitk:awefaK.™cKaaa>->OK\]i]it::OkDErAociaioas一弟㈤卫lit::QkD(QK.WCiOeOTa?->Or?i]l!lit::aKt:(Gic^oaatoat]?-OieiisDir:Ort:(aKAaa0t:aaa?->0iei]3]E::口才『口小OtMHMS一第m11rn::口油『口k.vmofc™:«->口日14itf:akin(atcviainaoaJ-xjH:inlit::0k]O(dtWCJ]OTad>->CJK4]nm::at.iiraK.™:naoa>->oic4]ti11rTf:0K:l1(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论