セマフォの構造
整数sと待ちプロセスのリストを保持
P(Passeren)命令
if(s==0){ 自プロセスを待ちリストに入れる } else s = s-1;
V(Verhoog)命令
if(待ちリストあり) 待ちプロセスのひとつを実行可能にする else s = s+1
P, Vはアトミック処理
バイナリセマフォ / 計数セマフォ