OS综合实验报告1要点

上传人:s9****2 文档编号:429694132 上传时间:2023-01-03 格式:DOCX 页数:22 大小:133.01KB
返回 下载 相关 举报
OS综合实验报告1要点_第1页
第1页 / 共22页
OS综合实验报告1要点_第2页
第2页 / 共22页
OS综合实验报告1要点_第3页
第3页 / 共22页
OS综合实验报告1要点_第4页
第4页 / 共22页
OS综合实验报告1要点_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《OS综合实验报告1要点》由会员分享,可在线阅读,更多相关《OS综合实验报告1要点(22页珍藏版)》请在金锄头文库上搜索。

1、华先号综合实验报告(2013 - 2014 年度第1学期)名 称:操作系统综合实验题 目:基于OS Lab的操作系统综合实验院 系:计算机系班 级:学 号:学生姓名:指导教师:王德文,王艳设计周数:1成 绩:日期:2013年 月 日、课程设计(综合实验)的目的与要求1 .正文为宋体,五号字行间距为211 , 12 . 2二、设计(实验)正文1 .正文为宋体,五号字行间距为211 , 12 . 2三、课程设计(综合实验)总结或结论1 .正文为宋体,五号字行间距为211 , 12 . 2四、参考文献1作者1,作者2.书名.出版单位,版本.出版日期附录(设计流程图、程序、表格、数据等)一.实验环境的

2、使用1 .实验目的熟悉操作系统集成实验环境OS Labi勺基本使用方法。练习编译、调试EOSM乍系统内核以及EO甑用程序。2 .实验内容:.学习OS Labi勺基本使用方法a.启动OSlabb.新建windows控制台程序项目,eos内核项目,eos应用程序项目;c.生成项目d.执行项目e.调试项目f.项目名称的修改及项目的保存.实验中代码的修改:1)在func.c 文件中添加函数:int Func (int n) n = n + 1; return n; 2)点击源代码编辑器上方的 console.c标签,切换到console.c文件。将main函数修改为: int main (int ar

3、gc, char* argv)int Func (int n); / 声明 Func函数int n = 0;n = Func(10);printf (Hello World!n);return 0;问题答案:EOS SDk文件夹的目的和作用:主要供EOS应用程序使用。EOS内核提供的API函数及重要的数据类型都是 通过将相关的头文件复制到SDK文件夹中,然后EOS应用程序再包含SDK文 件夹中的头文件,使EOS应用程序可以调用这些函数或使用数据类型来定义变 量。同时,SDK文件夹中还保存了 Debug和Release版本的二进制文件,分别为 两个版本的应用程序使用。CONSOLE1 (Pres

4、s Ctrl+F1FO to switch console window.) Uelccme to EOS shellA:MyApp.exe运行结果图示实验总结及体会:通过本次实验,对EOS操作系统和OS Lab集成实验环境有一个初步的了解, 学会了创建三种项目,项目的调试,执行及保存,还有一些文件的含义。实验三 .进程创建1 . 实验目的:练习使用EOS AP函数CreateProcess创建一个进程,掌握创建进程的方法, 理解进程和程序的区别。试跟踪 CreateProcess 函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。2 .实验内容:练习使用控制台命令创建 EOS 应

5、用程序的进程;练习通过编程的方式让应用程序创建另一个应用程序的进程;调试 CreateProcess1;调试 PsCreateProcessS数;练习通过编程的方式创建应用程序的多个进程。实验中修改的代码:1 .#include EOSApp.hint main(int argc, char* argv)int i;for (i = 1; i = 5; i+) printf(Hello,world! %dn, i);Sleep(1000);printf(Bye-bye!n);return 0;2 . /*#include EOSApp.hint main(int argc, char* arg

6、v) STARTUPINFO StartupInfo;PROCESS_INFORMA TION ProcInfo;ULONG ulExitCode; / 子进程退出码INT nResult = 0;/ main 函数返回值。 0 表示成功,非0 表示失败。#ifdef _DEBUG_asm(int $3n nop);#endifprintf(Create a process and wait for the process exit.nn);StartupInfo.StdInput = GetStdHandle(STD_INPUT_HANDLE);StartupInfo.StdOutput =

7、 GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError = GetStdHandle(STD_ERROR_HANDLE);if (CreateProcess(A:Hello.exe, NULL, 0, &StartupInfo, &ProcInfo) WaitForSingleObject(ProcInfo.ProcessHandle, INFINITE);GetExitCodeProcess(ProcInfo.ProcessHandle, &ulExitCode);printf(nThe process exit with %d.n, ul

8、ExitCode);CloseHandle(ProcInfo.ProcessHandle);CloseHandle(ProcInfo.ThreadHandle); else printf(CreateProcess Failed, Error code: 0x%X.n, GetLastError();nResult = 1;return nResult;3 /*#include EOSApp.hint main(int argc, char* argv)STARTUPINFO StartupInfo;PROCESS_INFORMA TION ProcInfoOne, ProcInfoTwo;U

9、LONG ulExitCode; / 子进程退出码INT nResult = 0;/ main 函数返回值。 0 表示成功,非0 表示失败。#ifdef _DEBUG_asm(int $3n nop);#endifprintf(Create two processes and wait for the processes exit.nn);StartupInfo.StdInput = GetStdHandle(STD_INPUT_HANDLE);StartupInfo.StdOutput = GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdErro

10、r = GetStdHandle(STD_ERROR_HANDLE);if (CreateProcess(A:Hello.exe, NULL, 0, &StartupInfo, &ProcInfoOne)& CreateProcess(A:Hello.exe, NULL, 0, &StartupInfo, &ProcInfoTwo) WaitForSingleObject(ProcInfoOne.ProcessHandle, INFINITE);WaitForSingleObject(ProcInfoTwo.ProcessHandle, INFINITE);GetExitCodeProcess

11、(ProcInfoOne.ProcessHandle, &ulExitCode);printf(nThe process one exit with %d.n, ulExitCode);GetExitCodeProcess(ProcInfoTwo.ProcessHandle, &ulExitCode);printf(nThe process two exit with %d.n, ulExitCode);CloseHandle(ProcInfoOne.ProcessHandle);CloseHandle(ProcInfoOne.ThreadHandle);CloseHandle(ProcInf

12、oTwo.ProcessHandle);CloseHandle(ProcInfoTwo.ThreadHandle); else printf(CreateProcess Failed, Error code: 0x%X.n, GetLastError();nResult = 1;return nResult;问题解答:PspCreateProcessEnvironmenfi数的主要功能是创建进程控制块,并且为 进程山建了地址空间和分配了句柄表,PspLoadProcessImage1将进程的可执 行映像加载到了进程的地址空间中。PspCreateThreac&J建了进程的主线程。这三个函数的被

13、调用顺序是不能改变的,就像上面所描述的,加载可执行文 件之前必须已经为进程创建地址空间,这样才能确定可执行映像可以被加载 到内存的什么位置,在创建主线程之前必须已经加载了可执行映像,这样主 线程才能够知道自己从哪里开始执行,执行那些命令。CONSOLE 1L CPz-ess C tr 1 -F ILFB Lo -a i Luh 仁。w i iidoiL B . Me 1 oone 七口 KO)S she 1 1 Ai.itor-Liin Ai:、七LUSCpp . iemc He 1 l1dttZIe 1 1 o woir 1 dl f 3He: 1 1 o , UOX 1 eft * /He

14、: lo j. kvoir 1 d * SHye-bye: ?A:XHe11o.exe ex it with xOOOOOOOO.TliC PJTOCCSS CM 1 t LJ 1 Xtl O1 u.A - oxo qx i-t mi 1 +】 0x00000000 ,实验中一些运行结果实验总结:通过本次实验了解到当EOS应用程序eosapp.exe存储在软盘上的时 候,它是静态的,只包含应用程序的指令和数据。而创建进程后,进程不但 包含应用程序的指令和数据,也会包含操作系统内核(kernel.dll )的指 令和数据,同时也了解到一个进程可以包含多个程序,就该实验而言:该进 程包含了 eosa pp.exe和kernel.dll 两个程序。进程的创建过程:当 EOS 创建一个进程时,会首先创建一个进程对象,并且进程对象的对象体使用的 就是PCB结构体。接下来,操作系统会为进程分配一个进程地址空间和一 个句柄表。一般情况下,每个进程都是由一个可执行文件 (后缀名为EXE的 文件)来创建的,所以,操作系统会将可执行文件装入进程地址空间的用户 地址空间中,并和内核地址空间中的内核进行动态链接( Dynamic Li

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号