操作系统|理发师-顾客问题

  • 课程设计题目

1、设计题目

设计任务

掌握信号量通信方式的一般方法,了解系统实现“阻塞”和“唤醒”功能的方法和技巧。同时掌握进程同步和互斥的概念及实现技术。

设计内容

(1)用语言编程实现P、V原语并用P、V原语描述如下理发师-顾客问题:

有一个理发师,一把理发椅和n把提供给等候理发的顾客座的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当第一个顾客到来时,必须唤醒该理发师进行理发;如果理发师正在理发时又有顾客到来,则如果有空椅子可坐,他就坐下来等待,如果没有空椅子,他就离开理发店。

为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件,试用P、V操作实现。

(2)实验要求及说明

① 定义信号量并将P、V操作定义为带参数

② 以输出字符串的形式表示理发师和顾客的行为。

③ 设计适当的数据结构和函数描述顾客等待队列和“唤醒”理发师理发过程,以及没有顾客时的“阻塞”理发师过程。

④ 编程时需考虑理发师和顾客对应的程序是并发操作的。

提示:可利用随机函数模拟并发操作。

⑤ 理发师和顾客两个进程各自调用一个函数模拟生产及消费的操作。

2、题目分析

(1)在理发师问题中,其属于生产者-消费者(有界缓冲区)模型的一类。在此模型里,理发师与顾客之间存在进程的同步问题。其中,理发师充当生产者,顾客则为消费者,而生产者的生产速度(即理发师的理发速度)和消费者的消费速度(即顾客到达理发店的时间)必然是不一样的。题目中存在一个有界缓冲区,也就是有N把可供顾客坐着等候理发师的椅子。倘若顾客来得过快,能够先坐在椅子上等待理发师,然而一旦椅子坐满,此时顾客就会直接离开,放弃理发。这里的N即有界缓冲区的规模,一旦缓冲区无法容纳更多消费者,消费者便不再进行消费。

(2)在生产者-消费者(有界缓冲区)模型里,还存在进程间的互斥现象。例如,若多个消费者同时访问缓冲区,必然会改变缓冲区的状态,而缓冲区属于临界资源,多个消费者不能同时去更改缓冲区的状态。在这个问题中,就如同执行顾客任务的进程,必须进行互斥操作,同理,理发师改变缓冲区状态的操作也需要互斥。在这个问题里,缓冲区的状态指的是剩余等待的顾客数量,每当来一位顾客,等待理发的顾客数目便会增加1,而每当理发师完成一次理发,等待理发的顾客数目就会减少1。

二、问题解决方案

1、问题分析

(1)本问题是一个典型的生产者-消费者(有界缓冲区)模型,理发师为生产者,生产理发服务;顾客为消费者,消费理发服务。

(2)存在进程同步问题,即顾客到来和理发师工作的时机需要协调。

(3)存在进程互斥问题,对等待顾客数量这一缓冲区状态的修改需要互斥。

2、解决方案

(1)使用信号量cust

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值