1 题目描述
面包师有很多面包和蛋糕,由N个销售人员销售。每个顾客进店后先取一个号,并且等着叫号。当一个销售人员空闲下来,就叫下一个号。试用信号量的P、V操作设计该问题的同步算法,给出所用共享变量(如果需要)和信号量及其初始值,并说明各自的含义。
2 条件分析
题目需要满足的要求
1 顾客之前取号要互斥,保证每一个顾客取到的号码不一样,引入mutex_sale
2 销售员叫号之间也要互斥 引入mutex_customer
3 销售员在卖面包之前,要保证1有顾客,2叫到号
4 顾客在买面包之前,要保证1 有店员 2 叫到号
3 伪代码实现
1.customer_ticket=0 //取号数
2.sale_ticket=0 //叫号数
3.mutex_sale=1;//销售员之间叫号要互斥
4.mutex_customer=1;//顾客之间叫号要互斥
5.sale_number=N;//店员人数
6.customer_number=0//顾客人数
7.int
8.void Sale(void){
9. while(1){
10. P(customer_number) //等待顾客到来
11. P(mutex_sale);//销售员申请叫号
12. sale_ticket++;
13. V(mutex_sale);//销售员释放叫号
14. sell_bread(); //卖面包
15. V(sale_number);//释放店员占用
16. }
17.
18.}
19.void Customers(void){
20. while(1){
21. P(mutex_customer) //申请取号
22. customer_ticket++;
23. V(mutex_customer) //释放取号
24. V(customer_number)
25. P(sale_number);//请求店员服务
26. buy_bread();
27. }
28.
29.}
系列文章如下
学习过程中一定要有系统观念(知识框架,每一章开头都会有一个思维导图),知道目前自己在学习的是哪一板块的内容,和前面有什么样的联系
操作系统的很多知识点前后都是联系非常紧密的,去一点一点理解而不是死记硬背会学习的非常愉快的!!!
操作系统相关文章
概述,初步了解操作系统功能及其一些概念
操作系统(一)| 概述 作业 批处理 OS运行环境要求 基本特征-CSDN博客
进程管理部分,重头戏
操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥-CSDN博客
操作系统(三)| 进程管理上 进程状态 同步 互斥-CSDN博客
操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁-CSDN博客
内存管理部分
操作系统(四)| 内存管理 实存储器管理 虚拟存储器管理 分页 分段式管理-CSDN博客
文件系统管理部分
操作系统(五)| 文件系统上 结构 存取方式 文件目录 检索-CSDN博客
操作系统(六)| 文件系统下 文件使用 共享 保护-CSDN博客
设备管理部分
操作系统(七)| 设备管理-- 端口 驱动程序 基本I/O控制 磁盘I/O-CSDN博客