Os programas entram em conflito quando os dois tentam usar o mesmo recurso. Quando vários programas tentam operar em um recurso ao mesmo tempo, há um risco de problemas de simultaneidade . Problemas de simultaneidade ocorrem quando um processo executa uma alteração no recurso, e o outro programa (que estava no meio com sua própria modificação no recurso) não o conhece e, portanto, não pode acomodá-lo.
Aqui estão alguns exemplos de problemas de simultaneidade de livros didáticos.
Problema dos últimos a ganhar
Imagine que você está usando um diretório FTP para compartilhar um documento em que você e um colega estão colaborando em um documento. você baixa o documento, edita e publica novamente, assim como seu colega.
- Você baixa o documento e inicia um conjunto de alterações que leva 1 hora.
- Seu colega faz o download do documento ao mesmo tempo que você fez, mas leva apenas meia hora para concluir e reenviar as alterações.
Resultado: ao fazer upload do documento, você substitui as alterações e elas são perdidas.
Dados obsoletos
No mesmo cenário, seu colega faz algumas alterações que você precisa, sem avisar. sua cópia do arquivo não possui as alterações,
Resultado: você mesmo escreve as mesmas alterações em palavras ligeiramente diferentes, ou pior, lança um e-mail desagradável sobre como está faltando.
Parece um cenário simples, mas em casos avançados, como bancos de dados de acesso múltiplo, se você selecionar registros no mesmo milissegundo que alguém os estiver atualizando, poderá enfrentar sérios problemas.
Cálculo ruim
Um casal tem uma conta bancária compartilhada e cartões ATM. Eles têm 1000 USD na conta. No dia a dia, eles estão em lados opostos da cidade e ambos acessam o caixa eletrônico no mesmo instante. Ambos retiram 1000 USD. Os caixas eletrônicos sabem que o saldo é 1000, portanto, permitem a retirada e depois escrevem de volta ao banco de dados central que o novo saldo é 0.
Resultado: o banco está esgotado em 1000 USD, e nem sabe disso.
Em todos esses exemplos, havia várias partes que estavam executando ações em um recurso compartilhado aproximadamente ou ao mesmo tempo. Daí os termos "simultaneidade" ou "Sincronicidade".
Soluções
Existem algumas maneiras de lidar com esses tipos de problemas. Uma é usar software que arbitra entre as várias partes que acessam o recurso. Esses programas de árbitro têm duas opções, dependendo do escopo e previsibilidade das operações:
- Mesclar as operações de forma inteligente
- Bloqueie / bloqueie uma das duas operações até que a primeira notada seja concluída.
Também é possível bloquear / bloquear, desde que os dois programas sejam projetados para verificar um sinalizador compartilhado indicando o estado do recurso. isso geralmente requer desenvolvimento personalizado.
sua resposta
No seu caso específico, os recursos são os arquivos no seu disco. O Synchronicity vem de eventos como o arquivo Read / Write, que acionam verificações ao acessar nos dois programas AV.
O Windows atua como um árbitro para resolver problemas de simultaneidade do sistema de arquivos, bloqueando arquivos quando os programas os abrem para operações específicas.
Isso significa que os dois programas estão correndo para acessar o arquivo e quem chegar lá primeiro recebe o bloqueio. Em um nível baixo, isso resulta em uma troca de disco, pois os dois programas iniciam suas próprias atividades de E / S, forçando o hardware a executar as duas tarefas separadamente, intercalando as instruções de E / S, tornando as duas muito menos eficientes e, no final, apenas uma. deles vão ganhar. o outro girará e esperará para poder estabelecer seu próprio bloqueio.