O que é bloqueio consultivo em arquivos que os sistemas Unix normalmente utilizam?

6

Eu li que o sistema similar ao Unix geralmente usa o bloqueio consultivo para o bloqueio de arquivos IO versus o bloqueio obrigatório usado pelos sistemas operacionais da Microsoft. Se eu entendi corretamente no bloqueio de arquivo de bloqueio obrigatório é imposta pelo próprio sistema operacional. Mas eu não tenho a intuição de bloqueio consultivo. Tomemos o exemplo de dois processos, digamos "A" e "B" que estão trabalhando no arquivo "foo". Vamos dizer "A" escreve para "foo" e "B" lê de "foo". Como o bloqueio consultivo funcionaria nesse cenário? Se o sistema de arquivos / SO não estiver impondo um bloqueio para "foo", então como manter a consistência para leituras e gravações?

    
por Geek 30.07.2014 / 12:00

1 resposta

5

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).

    
por 30.07.2014 / 12:11