资源简介
理发店问题:假设理发店的理发室中有3个理发椅子和3个理发师,有一个可容纳4个顾客坐等理发的沙发。此外还有一间等候室,可容纳13位顾客等候进入理发室。顾客如果发现理发店中顾客已满(超过20人),就不进入理发店。 在理发店内,理发师一旦有空就为坐在沙发上等待时间最长的顾客理发,同时空出的沙发让在等候室中等待时间最长的的顾客就坐。顾客理完发后,可向任何一位理发师付款。但理发店只有一本现金登记册,在任一时刻只能记录一个顾客的付款。理发师在没有顾客的时候就坐在理发椅子上睡眠。理发师的时间就用在理发、收款、睡眠上。 请利用linux系统提供的IPC进程通信机制实验并实现理发店问题的一个解法。
代码片段和文件信息
#include“ipc.h“
int main(int argcchar *argv[]){
int i;
int rate;
Msg_buf msg_arg;
if(argv[1]!=NULL)rate=atoi(argv[1]);
else rate=3;
buff_key=101;
buff_num=CHAIR;
shm_flg=IPC_CREAT|0644;
buff_ptr=(int*)set_shm(buff_keybuff_numshm_flg);
waiting_key=102;
waiting_num=1;
waiting_ptr=(int*)set_shm(waiting_keywaiting_numshm_flg);
// 注册消息队列
quest_flg=IPC_CREAT|0644;
quest_key=201;
quest_id=set_msq(quest_keyquest_flg);
respond_flg=IPC_CREAT|0644;
respond_key=202;
respond_id=set_msq(respond_keyrespond_flg);
quit_flg=IPC_CREAT|0644;
quit_key=250;
quit_id=set_msq(quit_keyquit_flg);
//注册信号量
w_key=301;
a_key=302;
p_key=303;
sem_flg=IPC_CREAT|0644;
sem_val=1;
w_mtx=set_sem(w_keysem_valsem_flg);
a_mtx=set
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1943 2009-04-25 10:56 ex5\baber.c~
文件 16328 2009-04-25 16:47 ex5\barber
文件 2361 2009-04-25 16:38 ex5\barber.c
文件 2361 2009-04-25 16:38 ex5\barber.c~
文件 7344 2009-04-25 16:47 ex5\barber.o
文件 17499 2009-04-25 16:47 ex5\controler
文件 3757 2009-04-25 16:46 ex5\controler.c
文件 3757 2009-04-25 16:46 ex5\controler.c~
文件 8748 2009-04-25 16:47 ex5\controler.o
文件 16350 2009-04-25 16:47 ex5\customer
文件 1873 2009-04-25 16:38 ex5\customer.c
文件 1873 2009-04-25 16:38 ex5\customer.c~
文件 7252 2009-04-25 16:47 ex5\customer.o
文件 2728 2009-04-18 22:04 ex5\ipc.c
文件 1 2009-04-25 07:29 ex5\ipc.c~
文件 1433 2009-04-25 15:24 ex5\ipc.h
文件 1433 2009-04-25 15:24 ex5\ipc.h~
文件 10168 2009-04-25 16:47 ex5\ipc.o
文件 509 2009-04-25 11:09 ex5\Makefile
文件 509 2009-04-25 11:09 ex5\Makefile~
目录 0 2010-05-08 12:14 ex5
----------- --------- ---------- ----- ----
108227 21
- 上一篇:多功能病房呼叫系统
- 下一篇:操作系统 实验七、内存页面置换算法实验
评论
共有 条评论