资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划windows进程的创建与销毁实验报告操作系统教程实验指导书实验一WINDOWS进程初识1、实验目的学会使用VC编写基本的Win32ConsolApplication掌握WINDOWSAPI的使用方法。编写测试程序,理解用户态运行和核心态运行。2、实验内容和步骤编写基本的Win32ConsolApplication步骤1:登录进入Windows,启动VC+。步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32ConsolApplication”,然后在“Projectname”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C+SourceFile”,然后在“File”处输入C/C+源程序的文件名。步骤4:将清单1-1所示的程序清单复制到新创建的C/C+源程序中。编译成可执行文件。步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:课程os课os实验程序os11debug运行结果(如果运行不成功,则可能的原因是什么?):答:运行成功,结果:计算进程在核心态运行和用户态运行的时间步骤1:按照中的步骤创建一个新的“Win32ConsolApplication”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。步骤2:在创建一个新的“Win32ConsolApplication”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。E:课程os课os实验程序os12debugtime步骤4:运行结果(如果运行不成功,则可能的原因是什么?)因为此程序是个死循环,所以运行时间为无穷大。_步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。屏蔽i循环:_屏蔽j循环:_调整循环变量i的循环次数:_调整循环变量j的循环次数:_3、实验结论通过实验可以得知运行一个程序CPU的使用情况是不同的,同时与循环的次数无关,和当前计算的复杂情况有关。实验得出的数据可以可以说明这一点。实验二进程管理1、实验目的1)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows进程的“一生”。2)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。2、实验内容和步骤.创建进程本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程ID和它在进程列表中的位置。步骤1:创建一个“Win32ConsolApplication”工程,然后拷贝清单2-1中的程序,编译成可执行文件。步骤2:在“命令提示符”窗口运行步骤1中生成的可执行文件。运行结果:范例:E:课程os课os实验程序os11debugos21(假设编译生成的可执行文件是)_按下ctrl+alt+del,调用windows的任务管理器,记录进程相关的行为属性:PID:3676,句柄数:11内存使用:1080K页面错误:263页面缓存:15K步骤3:在“命令提示符”窗口加入参数重新运行生成的可执行文件。运行结果:范例:E:课程os课os实验程序os11debugos213(假设编译生成的可执行文件是)按下ctrl+alt+del,调用windows的任务管理器,记录进程相关的行为属性:PID:2821句柄数:7内存使用:832K页面错误:263页面缓存:15K步骤4:修改清单2-1中的程序,将nClone的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件。再按步骤2中的方式运行,看看结果会有什么不一样。运行结果:第一次修改:结果不变。第二次修改:是一个死循环,不断的弹出此窗口:从中你可以得出什么结论:nClone的作用:_控制程序的执行,当nClone大于等于5时可跳出程序。_变量的定义和初始化方法对程序的执行结果有影响吗?为什么?_有,nClone被修改后会对程序的结束控制产生影响_.父子进程的简单通信及终止进程步骤1:创建一个“Win32ConsolApplication”工程,然后拷贝清单2-2中的程序,编译成可执行文件。步骤2:在VC的工具栏单击“ExecuteProgram”(执行程序)按钮,或者按Ctrl+F5键,或者在“命令提示符”窗口运行步骤1中生成的可执行文件。运行结果:范例:E:课程os课os实验程序os11debugos22(假设编译生成的可执行文件是)步骤3:按源程序中注释中的提示,修改源程序2-2,编译执行。运行结果:不断的弹出:在程序中加入跟踪语句,或调试运行程序,同时参考MSDN中的帮助文件CreateProcess()的使用方法,理解父子进程如何传递参数。给出程序执行过程的大概描述:通过main(intargc,char*argv)传递参数,每次运行时先检测argc的值,若小于1,程序运行结束,否则继续往下执行。步骤4:填空CreateProcess()函数有_5_个核心参数?本实验程序中设置的各个参数的值是:操作系统实验报告哈尔滨工程大学计算机科学与技术学院一、实验概述1.实验名称进程的创建2.实验目的(1)练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。(2)调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。3.实验类型验证性实验4.实验内容二、实验环境EOS操作系统1三、实验过程1.设计思路和流程图2.算法实现3.需要解决的问题及解答(1)在源代码文件提供的源代码基础上进行修改,要求使用同时创建10个进程。提示:可以使用PROCESS_INFORMATION类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。答:后文中,有此题解决方案。(2)尝试根据之前对PsCreateProcess函数和PspCreateProcessEnvironment函数执行过程的跟踪调试,绘制一幅进程创建过程的流程图。2(3)在PsCreateProcess函数中调用了PspCreateProcessEnvironment函数后又先后调用了PspLoadProcessImage和PspCreateThread函数,学习这些函数的主要功能。能够交换这些函数被调用的顺序吗?思考其中的原因。答:PspCreateProcessEnvironment的主要功能是创建进程控制块并且为进程创建了地址空间和分配了句柄表。PspLoadProcessImage是将进程的可执行映像加载到了进程的地址空间中。PspCreateThread创建了进程的主线程。这三个函数被调用的顺序是不能够改变的就向上面描述的加载可执行映像之前必须3已经为进程创建了地址空间这样才能够确定可执行映像可以被加载到内存的什么位置在创建主线程之前必须已经加载了可执行映像这样主线程才能够知道自己要从哪里开始执行,执行哪些指令。因此不能交换他们的顺序。4.主要数据结构、实现代码及其说明主要使用PROCESS_INFORMATION类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。5.源程序并附上注释使用同时创建10个进程的原代码及注释如下:#include/
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号