操作系统实验报告一

上传人:工**** 文档编号:470547179 上传时间:2023-07-28 格式:DOCX 页数:9 大小:257.12KB
返回 下载 相关 举报
操作系统实验报告一_第1页
第1页 / 共9页
操作系统实验报告一_第2页
第2页 / 共9页
操作系统实验报告一_第3页
第3页 / 共9页
操作系统实验报告一_第4页
第4页 / 共9页
操作系统实验报告一_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《操作系统实验报告一》由会员分享,可在线阅读,更多相关《操作系统实验报告一(9页珍藏版)》请在金锄头文库上搜索。

1、姓名:* 班级:2010级软件工程学号:* 日期:2012年10月19日一、 实验题目 Windows 2000进程的“一生”二、 实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。二、 实验内容本实验分为三个小实验分别为实验1.1、实验1.2、实验1.3,每个小实验的实验题目、实验目的、实验内容、实验过程、回答问题、实验总结分别如下:一、 实验题目 实验1.1:创建进程二、 实验目的1)通过创建进程的程序设计和调试

2、操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。三、实验内容:1) 调试实验3-5中的程序。2) 观察并分析程序。四、实验过程及结果:步骤1:登录进入Windows 2000 Professional。步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”“Microsoft Visual C+ 6.0”命令,进入Visual C+窗口。步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-5.cpp。步骤4:单击“Bui

3、ld”菜单中的“Compile 3-5.cpp”命令编辑3-5.cpp步骤5:编译完成后,单击“Build”菜单中的“Build 3-5.exe”命令,建立3-5.exe可执行文件。步骤6:在工具栏单击“Execute Program”(执行程序) 按钮,或者按Ctrl + F5键,或者单击“Build”菜单中的“Execute 3-5.exe”命令,执行3-5.exe程序。步骤7:按Ctrl + S键可暂停程序的执行,按Ctrl + Pause (Break) 键可终止程序的执行。运行结果分析:答:程序的运行结果如下图所示:图一图二分析运行结果:创建标志参数CREATE_NEW_CONSOL

4、E指示新进程分配它自己的控制台,所以在运行程序时,在任务栏上产生许多活动标记,如图一所示,一共产生了25个窗口,即创建了25个新进程。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。利用GetCurrentProcessId()函数获得进程的ID号,并输出。五、回答问题:1)(结合背景知识回答)该程序中使用的CreateProcess() API函数,此函数的大多数参数都可取缺省值,但是创建标志参数使用了:CREATE_NEW_CONSOLE_标志,指示新进程分配它自己的控制台,这使得运行示例程

5、序时,在任务栏上产生许多活动标记。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。2)CreateProcess() 函数有_10_个核心参数?本实验程序中设置的各个参数的值是:参数名称使用目的设置的各个参数的值LPCTSTR lpApplivationName全部或部分地指明包括可执行代码的EXE文件的文件名szFilenameLPCTSTR lpCommandLine向可执行文件发送的参数szCmdLineLPSECURIITY_ATTRIBUTES lpProcessAttributes返

6、回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承NULLLPSECURIITY_ATTRIBUTES lpThreadAttributes返回进程的主线程的句柄的安全属性NULLBOOL bInheritHandle一种标志,告诉系统允许新进程继承创建者进程的句柄FALSEDWORD dwCreationFlage特殊的创建标志 (如CREATE_SUSPENDED) 的位标记CREATE_NEW_CONSOLELPVOID lpEnvironment向新进程发送的一套环境变量;如为null值则发送调用者环境NULLLPCTSTR lpCurrentDirectory新进程的启

7、动目录NULLSTARTUPINFO lpStartupInfoSTARTUPINFO结构,包括新进程的输入和输出配置的详情&siLPPROCESS_INFORMATION lpProcessInformation调用的结果块;发送新应用程序的进程和主线程的句柄和ID&pi3)部分程序在Visual C+环境完成编译、链接之后,还可以在Windows 2000的“命令提示符”状态下尝试执行该程序,看看与在可视化界面下运行的结果有没有不同?为什么?答:在命令提示符下运行结果如下所示,与在可视化界面下运行结果是一样的。原因:六、实验总结经过本次实验,学习了进程创建的方法,CreateProcess

8、()的一些用法,它的10个参数的含义等等,在做实验的过程中遇到了以下问题:修改代码后,编译连接都没有问题,但运行时程序一直不停止,怎么关也关不掉程序,只能关机。解决方法是:去上机时电脑上有一个程序,跟我自己修改后的程序代码一样的,但运行后可以自动停止。现在仍不明白为什么原来的一样的代码运行后停止不了,周围很多同学也遇到了同样的问题。在main()中的代码if (argc 1) / 从第二个参数中提取克隆ID:sscanf(argv1 , %d , &nClone) ; 看不懂,不知道是怎么获得参数nClone的。询问了周围的同学及学长,但问题仍未解决一开始不知道进程的ID号具体是什么含义,但经

9、过查找资料了解到:操作系统通过进程ID来标识一个进程,进程ID是进程的唯一标识,在任务管理器中点击进程后点击查看,点击选择列,在PID前面勾选,就会显示出每个进程的ID号了。一、实验题目实验1.2:正在运行的进程二、实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。三、实验内容:1) 调试实验3-6中的程序。2) 观察并分析程序。四、实验过程及结果:步骤1:在Visual C+ 窗口的工具栏中单击“打开”按钮,在“打

10、开”对话框中找到并打开实验源程序3-6.cpp。步骤2:单击“Build”菜单中的“Compile 3-6.cpp”命令,再单击“是”按钮确认。系统对3-6.cpp进行编译。步骤3:编译完成后,单击“Build”菜单中的“Build 3-6.exe”命令,建立3-6.exe可执行文件。步骤4:在工具栏单击“Execute Program” (执行程序) 按钮,执行3-6.exe程序。步骤5:单击Ctrl + Alt + Del键,进入“Windows任务管理器”,在“应用程序”选项卡中右键单击“3-6”任务,在快捷菜单中选择“转到进程”命令。在“Windows任务管理器”的“进程”选项卡中,与

11、“3-6”任务对应的进程映像名称是 (为什么?) :答:对应的进程映像名称是VCSPAWN.exe,这是因为Windows 7 的兼容性问题,非得用VCSPAWN.EXE来启动PE格式的文件。_右键单击该进程名,在快捷菜单中选择“设置优先级”命令,可以调整该进程的优先级,如设置为“高”后重新运行3-6.exe程序,屏幕显示有变化吗?为什么?答:只有进程的ID号变了,其他没有变化,因为程序的输出语句是以下语句:std : cout Process ID: dwIdThis, requires OS: wMajorReqwMinorReqstd : endl ;std : cout Running

12、 on OS: osvix.dwMajorVersion.osvix.dwMinorVersionstd : endl;std:cout Task Manager should now indicate this process is high priority.std : endl;即输出进程的ID号、进程和报告所需的版本、版本信息和报告,出了进程的ID号会变化外,无论怎么设置优先级,输出都不会发生变化。因为是随机获取进程,所以进程的ID号几乎每次运行都会发生变化。另外,如果是windows2000系统,程序也利用SetPriorityClass()函数将该进程的优先级设为了High。设置优

13、先级为高后程序运行如下:描述运行结果:答:程序运行结果的截图如下所示:运行结果显示,该进程的ID号为3148,该进程和报告所需的OS版本是10,运行的操作系统版本是6.1。该进程被设置成了高优先级。_五、回答问题:1)分析清单3-6中的程序,简述该程序是如何获得当前的PID和所需的进程版本信息?答:利用GetCurrentProcessId()API函数来获得当前的PID,与GetCurrentProcess() 相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。通过GetProcessVersion()函数获得这一进程和报告所需的版本信息。2)在本程序中用到了哪些主要Wind

14、ows API函数?答:GetCurrentProcessId()API函数、GetProcessVersion()API函数、GetVersionEx()函数、GetCurrentProcess()函数、SetPriorityClass()函数六、实验总结通过该实验学习了获得运行进程和操作系统的版本信息,怎么改变进程优先级等,遇到了一些小的问题,都通过自己上网查资料或者询问周围同学解决了,但对于此程序仍存在以下疑问:该程序为什么没有让输出进程的优先级?这样通过在任务管理器中更改进程优先级后输出结果会有变化。除了前面输出的进程ID号,程序输出所需OS版本和运行的OS版本都不会变化(不变化电脑的情况下),还有最后输出的明明是一条语句,不会变化,再怎么改变进程优先级,程序输出都会是Task Manager should now indicate this process is high priority.,不明白问题为什么那样问?一、实验题目:实验1.3:终止程序二、实验目的:1) 通过观察终止进程的程序设计和调试操作

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

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

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