操作系统课设-Windows 进程管理

一 实验题目
实验一 Windows 进程管理
二、实验目的
(1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。
(2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。
三、实验内容
通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。
四、实验结果与分析
1-1 结果截图如下:
打印“Hello, Win32 Consol Application”
在这里插入图片描述

1-2创建子进程
1-2-0

在这里插入图片描述

进程管理界面
在这里插入图片描述

1-2-1(修改)运行结果还是创建了5个子进程
在这里插入图片描述

1-2-2(修改)
按照注释中的修改位置2改动,运行结果就会持续不断的创建进程,没有停止的趋势,无数多个子进程,所有的ID都是0。

有不断的新进程弹出窗口
分析:
第二次修改后,每次调用StartClone(++nClone);前nClone都为0,所以每次调用完毕后nClone等于1,程序不会运行到最后,也不会结束,只能通过强制终止。
1-3父子进程的简单通信及终止进程的示例程序

1-3-1:步骤3在父进程中输入字符,关闭的只是下一个,别的关闭不了
第一次修改后,创建进程的第二个参数不是child了,因此子进程进入的是parent函数,所以程序在不断的创建子进程,没有停止的趋势。
在这里插入图片描述

1-3-2:步骤4:子进程闪退
在这里插入图片描述

从main()函数开始,首先判断argc的值(argc初始值默认为1),决定进行父进程还是子进程,因为argc不满足大于1,所以调用parent()函数,在执行parent()函数过程中调用StartClone() ;然后通过sprintf(szCmdLine, “”%s"child" , szFilename)将argv[1]赋值child,后面满足条件后调用child()函数;由于设置了互斥信号,则只允许一个进程进行,所以只有当父进程释放互斥信号hMutexSuicide时,子进程检测获得才结束进程。
五、小结与心得体会
当一个进程结束时,产生一个终止状态字,然后系统和新发一个SIGCHILD信号通知父进程。因为子进程结束是异步与父进程的,故父进程结束之前,要同步等待子进程终止。这是系统通过调用wait或waitpid来实现的。
当父进程通过调用wait或waitpid同步等待子进程结束时,可能有以下几种情况:
①如果子进程还未结束,父进程阻塞等待
②如果子进程已经结束,其终止状态字SIGCHILD放在指定位置等待父进程 提取,这时,父进程可立即得到终止状态字并返回
③如果没有子进程,父进程立即错误返回。

猜你喜欢

转载自blog.csdn.net/weixin_45783317/article/details/118802664