实验七 父子进程通信 实验报告
数据科学与计算机学院 计算机科学与技术 2016 级
王凯祺 16337233
2018 年 4 月 26 日
1 实验目的
• 进一步完善进程模型,建立一组合作进程,并发运行,各自完成一定的工作。
• 理解并实现操作系统的 fork, wait, exit 机制。
2 实验要求
在实验六的原型基础上,进化我的原型操作系统,原型保留原有特征的基础上,设计满足下列
要求的新原型操作系统:
• 实现控制的基本原语 do_fork() 、do_wait() 、do_exit() 、blocked() 和 wakeup() 。
• 内核实现三系统调用 fork() 、wait() 、exit() ,并在 C 库中封装相关的系统调用。
• 编写一个 C 语言程序,实现多进程合作的应用程序。
3 实验步骤
3.1 设计思路
首先,我认为一个进程的状态只需要四种状态就可以表示:死亡(创建前和退出后均视为死亡)、
就绪、运行、阻塞,而不需要五种状态。
对于进程创建 fork() 、进程退出 exit() 和父子进程通信 wait() ,应用中断调用中断服务程序。
这三个中断服务程序应在内核实现,它们通过修改进程控制块,从而达到上述目的。
3.2 扩展进程控制块
由于将二进程模型升级为五进程模型,进程控制块的修改是必要的。我们应新增以下数据项:
• status 表示当前进程的状态(0 表示死亡,1 表示就绪,2 表示运行,3 表示阻塞)。
• father_pid 表示父进程的 pid 。
• son_cnt 表示有多少个直接的子进程。
1
评论0