某产品使用A、B、C三种零件组装而成,三种零件分别由三个相应的零件车间生产。零件组装则由装配车间完成,装配车间有三个分别存放三种零件的货架S1,S2,S3,分别可存放最多m个A零件,n个B零件,k个C零件,每件产品分别使用A,B,C三种零件各一个装配而成,请采用信号量和PV操作描述两件生产装配的同步算法。
1) 定义数据结构
定义共享数据变量(临界资源)及私有变量
int S1[m];//零件A的存储空间
int S2[n];//零件B的存储空
int s3k];//零件C的存储空间
int inS1=0,outS1=0;//零件A的投放和存取指针
int inS2=0,outS2=0;//零件B的投放和存取指针
int inS3=0,outS3=0;//零件C的投放和存取指针
2) 定义进程
零件装配进程
取出一个零件A
取出一个零件B
取出一个零件C
装配成一个产品
3) 进程操作伪代码实现
#define m 10
#define n 20
#define k 30
int S1[m];//零件A的存储空间
int S2[n];//零件B的存储空间
int S3[k];//零件C的存储空间
int inA=0,inB=0,inC=0;/零件投放指针
int outA=0,outB=0,outC=0;//零件取出指针
semaphore Rs1=m;//零件A货架空位可用量
semaphore Rs2=n;//零件B货架空位可用量