问题描述

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

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

分析

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

考场门口是共享资源。

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

这是两个同步行为。

信号量设置

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

解答

 /*学生进程*/
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 = ;i <= N;i++)
发卷子;
V(eb); //开始考试
P(eo); //等待考试结束
封装;
P(door);
出门;
V(door);
}

Process Synchronization-Example 1的更多相关文章

  1. Efficient ticket lock synchronization implementation using early wakeup in the presence of oversubscription

    A turn-oriented thread and/or process synchronization facility obtains a ticket value from a monoton ...

  2. Synchronization (computer science)

    过程同步.数据同步. In computer science, synchronization refers to one of two distinct but related concepts: ...

  3. some notions about os

    1. Multiprogramming system provide an environment in which the various resources (like CPU,memory,an ...

  4. java 虚拟机与并发处理几个问题简要(二)

    六.两个重要的概念性问题: 1.同步:要保持数据的一致性,就需要一种保证并发进程正确执行顺序的机制.这种机制就是 进程同步(Process Synchronization). 竞争资源的多个进程按着特 ...

  5. OS面试题(转载)

    转载自:http://placement.freshersworld.com/power-preparation/technical-interview-preparation/os-intervie ...

  6. 分布式计算 要不要把写日志独立成一个Server Remote Procedure Call Protocol

    w https://en.wikipedia.org/wiki/Remote_procedure_call In distributed computing a remote procedure ca ...

  7. verilog FAQ(zz)

    1. What is the race condition in verilog? Ans :The situation when two expressions are allowed to exe ...

  8. Spring单例Bean和线程安全

    Spring的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spring框 ...

  9. Microsoft Sync Framework下的快速开发同步程序

    Microsoft Sync Frameworks简称MSF,是一个综合的同步平台,MSF支持应用程序,服务,设备的在线以及离线同步.MSF主要有以下几个部件组成:     * Sync Servic ...

  10. Summary: Process & Tread

    refer to http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/ A process ...

随机推荐

  1. spring的jdbc具名参数

    在jdbc的模板中使用具名参数: 1.就需要在之前的jdbc的例子中进行修改:需要在xml文件中重新配置一个bean.这是固定的格式.如下 对于使用具名参数而言.配置NamedParameterJdb ...

  2. flask-模板使用

    flask-模板使用 模板方法: 模板中的url_for跟后台视图的url_for使用起来基本是一样的,也可以传递参数 使用方式 {{ url_for('func') }} 过滤器: 过滤器是通过管道 ...

  3. Java中String转int型的方法以及错误处理

    应要求,本周制作了一个判断一个年份是否是闰年的程序.逻辑很简单,这里就不贴代码了.可是,在这次程序编写中发现了一个问题. 在输入年份时,如果输入1)字母2)空3)超过Int上限时,就会抛excepti ...

  4. 8.1 api概述及使用

    api文件:JDK_API_1.6.CHM 1:打开帮助文档2:点击显示,找到索引,看到输入框3:你要学习什么内容,你就在框框里面输入什么内容 举例:Random4:看包 java.lang包下的类在 ...

  5. .NET Core 3 WPF MVVM框架 Prism系列之导航系统

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism基于区域Region的导航系统 在讲解Prism导航系统之前,我们先来看看一个例子,我在之前的demo项目创建一个登录界面: 我们看 ...

  6. shell-function 删除目录和文件

    function sDelDirFile() { if [ "$#" -eq 1 ];then if [ -e "$1" ];then rm "$1& ...

  7. Hibernate框架 jar包介绍

    一直使用my eclipse集成的Hibernate来学习.最近在写hibernate的日记,写到搭建hibernate框架的时候才发现自己对hibernate的内容还是不了解,决定自己手动搭建一下. ...

  8. JMF 下载安装与测试 测试成功

    本来就是想在自己写的java里面加入实习的摄像头监控,然后个各种百度了一下,就用JMF来弄了,不过这个东西貌似比较旧,网上的资料虽然说有,但是也不是太多,并且遇到的一下问题也不能解决,总之经过了一天的 ...

  9. 【Java】 Variable 变量

    什么是Variable变量? - 变量是内存中的一个存储区域 - 这个存储区域内的数据允许在同一类型范围内不断变化 - 是程序最基本的存储单元,包含三个要素[变量类型][变量名][存储的值] 为什么需 ...

  10. 使用python pip安装工具组件包:出现 requests File “<stdin>",line 1 pip install xxx ^ SyntaxError:invalid syntax

    最近想要试试python ,软件安装完成了,但是,import 组件包时,出了问题,一直不得解:安装pycharm 工具感觉麻烦,不想安装那些,只想单纯使用python . 问题复现: 1.Windo ...