本次操作系统实验的主要内容是创建进程,实现父进程创建一个有名事件,在子进程发送事件信号后,父进程获取事件信号并进行相应的处理。本次实验的实验环境是VC,实验时间跨越了2016年10月13日至2016年12月17日。
实验的原理是利用父进程创建子进程的方式,实现多个进程的并发执行,从而提高计算机的运行效率。通过创建有名事件,父进程和子进程之间可以实现同步通信,协调各自的操作。
在本次实验中,通过编写相应的程序代码来实现父进程和子进程的创建和事件信号的传递。父进程部分的代码如下:
```cpp
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, TEXT("MyEvent"));
if (hEvent == NULL)
{
cout << "CreateEvent failed with error: %d" << GetLastError() << endl;
return 1;
}
//Create child process
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(NULL, TEXT("child.exe"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
cout << "CreateProcess failed with error: " << GetLastError() << endl;
return 1;
}
WaitForSingleObject(hEvent, INFINITE);
cout << "Parent process received event signal" << endl;
CloseHandle(hEvent);
return 0;
}
```
通过以上代码,父进程成功创建了一个有名事件,并创建了子进程进行事件信号的发送。父进程在等待获取事件信号后输出相应的提示信息,表示事件信号接收成功。
总的来说,本次实验是通过操作系统中的进程管理操作,实现了父进程和子进程之间的同步通信,达到了预期的实验目的。通过这次实验,我进一步加深了对操作系统原理的理解,提高了自己的编程能力。感谢方敏老师在实验过程中的指导和支持。