某工厂有一个仓库可以存放甲、零部件,甲零件可以存放 m 件,乙零件可以存放 n 件,车间 A 专门生产甲零件,每次 1 件,每生产 1 件存放进仓库 1 件;车间 B 专门生产零件乙,每次 1 件,每生产 1 件存放进仓库 1 件。总装车间每次从仓库取出 2 零件、 1 件乙零件组装成成品,车间 A 、 B 和总装车间必须互斥进入仓库。当仓库内甲、乙零件分别达到 m 、 n 件时,车间 A 、 B 分别停止生产。而仓库内任何一种零件为 0 时,总装车间停产。根据上述规则,请利用信号量机制,设计一个可以让车间 A 、 B 和总装车间协调运转的程序,并说明各个信号量的意义,用类 C 语言写出整个过程。