zoukankan      html  css  js  c++  java
  • Process SynchronizationExample 1

    问题描述

    把学生和监考老师都看作进程,学生有N人,教师1人。考场门口每次只能进出一个人,进考场原则是先来先进。当N个学生都进入考场后,教师才能发卷子。学生交卷后可以离开考场,教师要等收上来全部卷子并封装卷子后才能离开考场。问:

    • 需要设置几个进程?
    • 用PV操作解决上述问题的同步互斥关系。

    分析

    考场门口每次只能进出一个人

    考场门口是共享资源。

    当N个学生都进入考场后,教师才能发卷子
    教师要等收上来全部卷子并封装卷子后才能离开考场

    这是两个同步行为。

    信号量设置:

    door = 1    //能否进出门口
    mutex1 = 1
    mutex2 = 1   //互斥信号量
    sr = 0   //学生是否到齐
    eb = 0    //考试开始
    eo = 0     //考试结束
    
    int num_stu = 0;
    int num_paper = 0;
    

    解答

    /*学生进程*/
    void student()
    {
        P(door);
        进门;
        V(door);
        P(mutex1);  //增加学生人数
        num_stu++;
        if(num_stu == N)
        V(sr);
        V(mutex1);
        P(eb);  //等教师宣布开始考试
        考试;
        交卷;
        P(mutex2);   //增加试卷份数
        num_paper++;
        if(num_paper == N)
        V(eo);
        V(mutex2);
        P(door);
        出门;
        V(door);
    }
    
    /*教师进程*/
    void teacher()
    {
        P(door);
        进门;
        V(door);
        P(sr);  //最后一个学生唤醒老师
        for(i = 1;i <= N;i++)
        发卷子;
        V(eb);     //开始考试
        P(eo);   //等待考试结束
        封装;
        P(door);
        出门;
        V(door);
    }
    
  • 相关阅读:
    SAP 用户权限解剖
    效率极低人群的七大习惯你占了几项? 迎客
    数据库到底用不用外键 迎客
    办公室生存——与人相处的30个原则 迎客
    虚拟机 VirtualBox 迎客
    fancybox 迎客
    遥志代理服务器软件CCProxy 迎客
    JRE和JDK的区别 迎客
    小众软件 迎客
    网络推广方法汇集 迎客
  • 原文地址:https://www.cnblogs.com/EIMadrigal/p/9248213.html
Copyright © 2011-2022 走看看