- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系的统实验
西安财经学院信息学院
《操作系统》 实验报告
实验名称 进程描述、创建与撤消 实验室 实验楼422
实验日期 2017-5-3
一.实验目的
1. 通过对编程,进一步熟悉操作系统的基本概念,较好地理解的结构。
2. 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解进程生存过程。
3. 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
二.实验环境
需要准备一台运行 操作系统的计算机,且该计算机中需安装Visual C++ 6.0专业版或企业版。
三.背景知识
1. 编程初步
可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。不同类型应用程序间的惟一重要区别是其启动方法。
是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。当系统运行时,的服务通常要向系统用户提供所需功能。
服务应用程序类型需要ServiceMail() 函数,由服务控制管理器 (SCM) 加以调用。SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。其本身负责使应用程序的行为像一个服务。通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。
当令C++ 编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。装载器指令告诉系统从哪里装载机器代码。另一个装载器指令告诉系统从哪里开始执行进程的主线程。在进行某些设置后,进入开发者提供的main() 、ServiceMain() 或WinMain() 函数的低级入口点。机器代码中包括有控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。
Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库 (DLL) 代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
进程的“生命”
Windows所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C++ 运行库来说,这一调用发生在应用程序的main() 函数返回之后。
2.1 创建进程
CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。表 3.4详细地列出了每个参数的类型和名称。
表2.1 CreateProcess() 函数的参数
参数名称
使用目的
LPCTSTR lpApplivationName
全部或部分地指明包括可执行代码的EXE文件的文件名
LPCTSTR lpCommandLine
向可执行文件发送的参数
LPSECURIITY_ATTRIBUTES lpProcessAttributes
返回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承
LPSECURIITY_ATTRIBUTES lpThreadAttributes
返回进程的主线程的句柄的安全属性
BOOL bInheritHandle
一种标志,告诉系统允许新进程继承创建者进程的句柄
DWORD dwCreationFlage
特殊的创建标志 (如CREATE_SUSPENDED) 的位标记
LPVOID lpEnvironment
向新进程发送的一套环境变量;如为null值则发送调用者环境
LPCTSTR lpCurrentDirectory
新进程的启动目录
STARTUPINFO lpStartupInfo
STARTUPINFO结构,包括新进程的输入和输出配置的详情
LPPROCESS_INFORMATION lpProcessInformation
调用的结果块;发送新应用程序的进程和主线程的句柄和ID
可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;lpCommandLine参数允许调用者向新应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。
然后是标志参数,用以在
文档评论(0)