O bloqueio consultivo é para processos que cooperam "pacificamente". O kernel controla os bloqueios, mas não os aplica - cabe aos aplicativos obedecê-los. Desta forma, o kernel não precisa lidar com situações como dead-locks.
O bloqueio obrigatório foi introduzido no System V Unix, mas o design não foi o mais brilhante. (Isto é, há maneiras de contornar isso.) Se você precisar de algo como verdadeiro bloqueio obrigatório em sistemas unixy, siga um padrão de design cliente-servidor em que o servidor é a autoridade no (s) recurso (s) compartilhado (s).