问题描述
把学生和监考老师都看作进程,学生有N人,教师1人。考场门口每次只能进出一个人,进考场原则是先来先进。当N个学生都进入考场后,教师才能发卷子。学生交卷后可以离开考场,教师要等收上来全部卷子并封装卷子后才能离开考场。问:
- 需要设置几个进程?
- 用PV操作解决上述问题的同步互斥关系。
分析
考场门口每次只能进出一个人
考场门口是共享资源。
当N个学生都进入考场后,教师才能发卷子
教师要等收上来全部卷子并封装卷子后才能离开考场
这是两个同步行为。
信号量设置: 1
2
3
4
5
6
7
8
9door = 1 //能否进出门口
mutex1 = 1
mutex2 = 1 //互斥信号量
sr = 0 //学生是否到齐
eb = 0 //考试开始
eo = 0 //考试结束
int num_stu = 0;
int num_paper = 0;
解答
1 | /*学生进程*/ |