Los programas entran en conflicto cuando ambos intentan usar el mismo recurso. Cuando varios programas intentan operar en un recurso al mismo tiempo, existe el riesgo de problemas de concurrencia . Los problemas de concurrencia ocurren cuando un proceso realiza un cambio en el recurso, y el otro programa (que estaba en el medio de su propia modificación del recurso) no lo sabe y, por lo tanto, no puede adaptarse.
Aquí hay algunos ejemplos de problemas de concurrencia de libros de texto.
Problema de último en ganar
Imagine que está utilizando un directorio FTP para compartir un documento donde usted y un colega están colaborando en un documento. Usted descarga el documento, lo edita y lo publica nuevamente, al igual que su colega.
- Descarga el documento e inicia un conjunto de cambios que demora 1 hora.
- Su colega descarga el documento al mismo tiempo que lo hizo, pero solo demora media hora en completar y volver a cargar sus cambios.
Resultado: cuando carga su documento, sobrescribe sus cambios y se pierden.
Datos obsoletos
En el mismo escenario, su colega realiza algunos cambios que necesita, sin decírselo. su copia del archivo no tiene los cambios,
Resultado: usted mismo escribe los mismos cambios en palabras ligeramente diferentes o, lo que es peor, envía un correo electrónico desagradable sobre cómo falta.
Esto parece un escenario simple, pero en casos avanzados como bases de datos de acceso múltiple si selecciona registros en el mismo milisegundo que alguien los está actualizando, puede experimentar problemas graves.
Mala computación
Una pareja casada tiene una cuenta bancaria compartida y tarjetas de cajero automático. Tienen 1000 USD en su cuenta. En su vida diaria, están en lados opuestos de la ciudad, y ambos acceden al cajero automático en el mismo instante. Ambos retiran 1000USD. Los cajeros automáticos saben que el saldo es 1000, por lo que permiten el retiro y luego escriben en la base de datos central que el nuevo saldo es 0.
Resultado: el banco ahora está fuera de 1000USD, y ni siquiera lo sabe.
En todos estos ejemplos, había varias partes que realizaban acciones en un recurso compartido al mismo tiempo o aproximadamente al mismo tiempo. De ahí los términos "concurrencia" o "Sincronicidad".
Soluciones
Hay algunas maneras de lidiar con este tipo de problemas. Una es usar un software que arbitre entre las múltiples partes que acceden al recurso. Estos programas de arbitraje tienen dos opciones, según el alcance y la previsibilidad de las operaciones:
- Fusiona las operaciones de forma inteligente
- Bloquee / bloquee una de las dos operaciones hasta que se complete la primera notada.
También es posible bloquear / bloquear, siempre que ambos programas estén diseñados para verificar un indicador compartido que indique el estado del recurso. Esto generalmente requiere un desarrollo personalizado.
Tu respuesta
En su caso específico, los recursos son los archivos en su disco. La Sincronicidad proviene de eventos como el archivo de Lectura / Escritura, que activan escaneos en acceso en ambos programas AV.
Windows actúa como árbitro para resolver problemas de concurrencia del sistema de archivos al bloquear los archivos cuando los programas los abren para operaciones específicas.
Esto significa que ambos programas están compitiendo para acceder al archivo, y quien llegue allí primero obtiene el bloqueo. En un nivel bajo, esto da como resultado una sacudida del disco a medida que ambos programas comienzan sus propias actividades de E / S, lo que obliga al hardware a realizar ambas tareas por separado, pero intercalando las instrucciones de E / S, lo que hace que ambos sean mucho menos eficientes y, al final, solo uno de ellos ganarán. el otro girará y esperará para poder establecer su propia cerradura.