若一只盘子一次只能放一个水果, A 只往盘中放苹果, B 只往盘中放梨子, C 只从盘中取苹果, D 只从盘中取梨子。试用信号量 P 、 V 操作,填写下面算法描述中的空格。 semaphore SAB= ( 1 ) ; //A 、 B 的资源信号量,同时又是它们的互斥信号量 semaphore SC=0; //C 的资源信号量 ( 用于与 A 同步 ) semaphore SD=0; //D 的资源信号量 ( 用于与 B 同步 ) begin parbegin process A: // 进程 A 的算法描述 { while(true) { 取一个苹果; ( 2 ) ; // 测试盘子是否为空 将一苹果放入盘中; signal(SC) // 通知 C 盘中已有苹果 ( 可能唤醒 C) } } process C: { while(true) { ( 3 ) ; // 测试盘子是否有苹果 从盘中取出苹果 ; signal(SAB); // 通知 A( 或 B) 盘子一空 ( 可能唤醒 A 或 B) 消费该苹果 ; } } process B: // 进程 B 的算法描述 { while(true) { 取一个梨子; wait(SAB); // 测试盘子是否为空 将一梨子放入盘中; ( 4 ) ; // 通知 D 盘中已有梨子 ( 可能唤醒 D) } } process D: { while(true) { (5); // 测试盘子是否有梨子 从盘中取出梨子 ; signal(SAB); // 通知 A( 或 B) 盘子一空 ( 可能唤醒 A 或 B) 消费该梨子 ; } } parend end