
操作系统实验进程管理
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
第二部分 实验二:进程管理每一个由Windows创建的进程均通过调用CreateProcess() API函数来进行初始化。该API的核心参数包括运行时文件名及其命令行参数。表2-1详细列出了所有可能的输入参数类型和名称,这些信息对于正确执行相关操作至关重要。在处理每个进程时,系统会首先调用CreateProcess()来创建新的进程实例,并随后通过ExitProcess()或TerminateProcess()函数将其终止。通常情况下,应用程序的主要执行框架会使用ExitProcess()函数来终止进程。特别地,在C++运行库中,该操作通常会在应用程序主函数main()执行完毕后进行。
表2-1 CreateProcess()函数的参数
参数名称 | 使用目的
LPCTSTR lpApplivationName | 明确指定包括可执行代码的EXE文件的文件名(可能完整或部分)
LPCTSTR lpCommandLine | 传递给可执行文件的参数
LPSECURIITY_ATTRIBUTES lpProcessAttributes | 主要是指明该进程句柄是否应由其他子进程继承其权限
LPSECURIETY_ATTRIBUTES lpThreadAttributes | 返回主线程的安全属性,说明其权限设置
BOOL bInheritHandle | 标志位,指示系统是否允许新进程继承创建者进程的句柄权限
DWORD dwCreationFlag | 特殊标志(如CREATE_SUSPENDED)的位组合
LPVOID lpEnvironment | 发送给新进程的一组环境变量(若为null则发送调用者的环境信息)
LPCTSTR lpCurrentDirectory | 新进程中启动时的工作目录
STARTUPINFO lpStartupInfo | 包含新进程启动配置详细信息的结构体
LPPROCESS_INFORMATION lpProcessInformation | 结果块,返回新应用程序运行的相关句柄和ID等信息
应用程序名称可以通过两种方式指定:一种是相对于当前进程目录的全路径;另一种是利用搜索功能找到路径。lpCommandLine参数允许调用者向新程序发送数据。与进程及其主线程相关的三个参数涉及安全属性和句柄返回。
标志参数通过dwCreationFlags设置系统对新进程的行为,常用的 flags 包括 CREATE_SUSPNDED(暂停主线程)和 CREATE_NEW_CONSOLE(创建独立控制台)。使用 ResumeThread() 启动进程时需注意准备状态。允许设置进程优先级以分配 CPU 时间。
CreateProcess()函数的三个默认值参数用于指定运行环境、当前目录以及启动信息。lpEnvironment 为新进程提供环境变量, lpCurrentDirectory 指定特殊目录,STARTUPINFO 结构体定义主窗口外观。
返回句柄及线程 ID 的缓冲区由最后一个参数提供。调用 CloseHandle() 函数至关重要,以释放所有未连接资源。如果主线程已结束,则需调用 ExitProcess() 通知系统终止相关进程。
正在运行的进程可通过其 PID 查看标识信息,使用 GetCurrentProcessId() 函数获取。其他函数如 GetStartupInfo() 和 GetProcessShutdownParameters() 提供详细存活信息。新进程启动前需设置运行环境和命令行参数,通过 GetModuleFileName() 和 GetCommandLine() 实现。
在 Windows 环境中,进程管理是操作系统的核心概念。CreateProcess() 函数创建新进程并定义其属性。参数包括应用程序名称、命令行参数、安全属性等,其中 lpApplicationName 设置可执行文件路径,lpCommandLine 传递启动参数。通过 dwCreationFlags 设置特殊行为模式。
安全属性由 lpProcessAttributes 和 lpThreadAttributes 指定句柄继承性。返回的句柄和线程 ID 需妥善管理以避免资源泄漏。
当一个新进程被创建时,其主线程一般会立即启动。当主线程完成时,将使用ExitProcess()或TerminateProcess()来终止整个进程。当主线程结束时,会导致进程中的所有子线程被终止。在进程运行期间,可调用这些API函数(如GetStartupInfo()和GetProcessShutdownParameters())来获取并修改关于当前进程的详细信息。此外,将返回启动该进程时所使用的模块名称及其原始命令行参数。
在进行进程生命周期管理时,也涉及对其资源进行有效管理和监控。其中一项操作是使用CloseHandle()函数来关闭由CreateProcess()返回的句柄,以确保资源得到合理和有效的释放。此外,在控制进程时,对其优先级的设定同样是一个重要环节。通过dwCreationFlags这一位掩码来精确配置新进程在CPU时间分配方面的具体策略。
在实际操作中,进程管理除了创建与终止外,在实际操作中进行的进程管理还涵盖了线程管理、同步机制、数据通信过程以及异常处理等多个方面。通过参与操作系统实验活动,掌握其中涉及的概念和技巧对全面理解其运行机制具有关键作用。建议实验者实践创建、跟踪与操控不同进程的方式,以此来深化对其系统核心功能的理解。
全部评论 (0)


