在Windows操作系统中,进程是系统资源分配的基本单位。实验报告提到的"实验二"主要涉及Windows 2000/xp环境下对进程的控制,包括创建进程和管理进程的优先级。以下是关于这些知识点的详细解释:
1. **创建进程**:
- Windows操作系统中的每个进程都是通过调用`CreateProcess()` API函数开始的,而结束进程通常会调用`TerminateProcess()`或`ExitProcess()`。在创建进程中,`CreateProcess()`函数是一个关键的系统调用,用于启动新的执行体(如.exe文件)并创建一个与之相关的进程。
- 在实验中,创建进程的步骤包括编译源代码,并设置`CreateProcess()`函数的参数。例如,`lpApplicationName`用于指定要执行的程序名,`lpCommandLine`包含命令行参数,`lpProcessAttributes`和`lpThreadAttributes`用于定义进程和线程的安全属性,`bInheritHandles`决定子进程是否继承父进程的句柄,`dwCreationFlags`用于设定进程创建时的标志,如`CREATE_NEW_CONSOLE`表示新进程拥有独立的控制台,其他参数如`lpEnvironment`、`lpCurrentDirectory`、`lpStartupInfo`和`lpProcessInformation`则分别用于环境变量、当前目录、启动信息和进程信息的配置。
- 实验中设置的`dwCreationFlags`为`CREATE_NEW_CONSOLE`,这意味着新进程将在任务栏上显示一个新的活动标记,具有独立的控制台。
2. **运行进程**:
- 进程创建成功后,可以通过各种方式执行,比如在Visual C++环境中编译后的可执行文件,或者在Windows 2000/xp的命令提示符下运行。
- 在实验的第二部分,`GetVersionEx()` API函数被用来获取当前操作系统的版本信息,这通常用于确保程序的兼容性和功能正确性。在Windows XP中,版本号为5.1,而`OSVERSIONINFOEX`结构包含了这些详细信息。
3. **进程管理**:
- `SetPriorityClass()` API函数允许改变进程的优先级。在实验中,通过提升进程优先级至“高”,可以使其在CPU资源分配中获得更高的优先级,从而影响其执行速度。但需要注意,这并不意味着程序的输出会有改变,除非资源竞争确实影响了程序的执行流程。
- 在Windows任务管理器中,可以通过查看"进程"选项卡来观察和管理进程,包括查看进程的PID(进程标识符),调整优先级等。在实验中,进程`2-2`对应的进程映像是`VCSPAWN.EXE`,这表明该进程是由Visual C++编译器生成的。
4. **其他进程管理操作**:
- 除了优先级,还可以通过任务管理器改变进程的内存限制、挂起或恢复进程、查看进程的资源使用情况(如CPU、内存、磁盘和网络),以及结束进程等。这些功能对于系统管理员和开发者来说非常有用,可以用来诊断和优化系统性能,或解决资源冲突问题。
总结,这个实验报告详细介绍了Windows操作系统中创建和管理进程的基本操作,包括使用`CreateProcess()`创建新进程,通过`GetVersionEx()`获取系统信息,以及如何使用任务管理器调整进程的优先级。这些都是理解和调试Windows程序时必不可少的技能。