【计算机操作系统】进程互斥PV操作之上机实验例题(含解析)


问题

某高校计算机学院开设网络课并安排上机实验,假设机房共有2m台机器,有2n名学生选该课,规定:
1、每两个学生组成一组,各占一台机器,协同完成上机实验;
2、只有一组两个学生到齐,并且此时机房有空闲机器时,该组学生才能进入机房;
3、上机实验由一名教师检查,检查完毕,一组学生同时离开机房。 试用P、V操作模拟上机实验过程。


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题分析

        在这个问题中,学生,教师,门卫是并行操作,所以,可以设置一个学生进程,一个教师进程,一个门卫进程用来检查一组两个学生是否到齐。
        然后需要确定信号量和其初始值,Student是必然需要的,表示是否有学生;
        computer表示当前可用的计算机的数量;enter是机房的准入通道;Finish表示是否有学生完成了学习;
        test是老师是否检查完一组学生。 初始情况下,除了computer设为2m,其余都应该是0。

二、解决代码

1.semaphore stduent = 0;
2.semaphore computer = 2m;
3.semaphore enter = 0;
4.semaphore finish = 0;
5.semaphore test = 0;
6.
7.//学生进程
8.Student() { 
9.    while(1) {
10.        V(student);  //有学生到达
11.        P(enter);    //申请进入
12.        do(); //实习
13.        V(finish);   //完成实验
14.        P(test);     //申请检查
15.        V(computer); //释放计算机
16.    } //while
17.} //Student()
18.
19.//老师进程
20.Teacher() {
21.    while(1) {
22.        P(finsh);    //等待学生实验结束
23.        P(finsh);    //等待另一个学生实验结束
24.        test(); //检查
25.        V(test);     //允许学生离开
26.        V(test);     //允许另一个学生离开
27.    } //while
28.} //Teacher()
29.
30.//门卫进程
31.Guard() {
32.    while(1) {
33.        P(student);   //等待一名学生
34.        P(student);   //等待另一名学生
35.        P(computer);  //申请一台计算机
36.        P(computer);  //申请另一台计算机
37.        V(enter);     //允许学生进入
38.        V(enter);     //允许另一名学生进入
39.    } //while
40.} //Guard()
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢热型网友.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值