操作系统习题1-银行排队叫号问题

某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:

//首项应该定义信号量 P为wait  V为 signal 
semaphore mutex=1,seats=10,service =0;
//然后开始写进程

//顾客进程
void customers(){
    P(seats); //首先需要进行申请座位
    P(mutex); //顾客之间的取号进程是互斥的,用metex来实现
    取号;
    V(mutex);
    V(service);//等待叫号
    等待获取服务;
}

//`营业员进程
void assistant(){
    P(service); //提供服务
   叫号并且为客户提供服务;
    V(seats); //生产座位
}

void main(){
    cobegin
        customers();
        assistant();
    coend
}

你可能感兴趣的:(操作系统,操作系统)