Программы конфликтуют, когда обе они пытаются использовать один и тот же ресурс. Когда несколько ресурсов пытаются одновременно работать с ресурсом, возникает риск проблем с параллелизмом . Проблемы с параллелизмом возникают, когда один процесс выполняет изменение ресурса, а другая программа (которая была в середине своей собственной модификации ресурса) не знает об этом и, следовательно, не может выполнить это.
Вот несколько примеров проблем параллелизма в учебниках.
Проблема последних побед
Представьте, что вы используете каталог FTP, чтобы поделиться документом, когда вы и коллега работаете над документом. Вы загружаете документ, редактируете его и снова публикуете, как это делает ваш коллега.
- Вы загружаете документ и запускаете набор изменений, который занимает 1 час.
- Ваш коллега загружает документ в то же время, что и вы, но занимает всего полчаса, чтобы завершить и повторно загрузить свои изменения.
Результат: когда вы загружаете документ, вы перезаписываете его изменения, и они теряются.
Устаревшие данные
В том же сценарии ваш коллега вносит необходимые изменения, не сообщая вам. ваша копия файла не имеет изменений,
Результат: вы сами пишете одни и те же изменения в несколько разных словах, или, что еще хуже, отправляете неприятное электронное письмо о том, что его не хватает.
Это выглядит как простой сценарий, но в сложных случаях, таких как базы данных с множественным доступом, если вы выбираете записи в ту же миллисекунду, когда кто-то их обновляет, вы можете столкнуться с серьезными проблемами.
Плохие вычисления
Супружеская пара имеет общий банковский счет и банкоматные карты. У них есть 1000USD на их счету. В своей повседневной жизни они находятся по разные стороны города, и оба получают доступ к банкомату в одно и то же время. Они оба снимают 1000USD. Оба банкомата знают, что баланс равен 1000, поэтому они разрешают снятие средств, а затем записывают обратно в центральную базу данных, что новый баланс равен 0.
Результат: банк вышел из 1000 долларов США, и даже не знает об этом.
Во всех этих примерах было несколько сторон, которые выполняли действия с общим ресурсом в одно и то же время. Отсюда и термины «параллелизм» или «синхронность».
Решения
Есть несколько способов решения таких проблем. Одним из них является использование программного обеспечения, которое осуществляет арбитраж между несколькими сторонами, обращающимися к ресурсу. Эти арбитражные программы имеют два варианта, в зависимости от объема и предсказуемости операций:
- Интеллектуальное объединение операций
- Заблокируйте / заблокируйте одну из двух операций, пока не будет завершена первая обнаруженная операция.
Также возможно заблокировать / заблокировать, при условии, что обе программы предназначены для проверки общего флага, указывающего состояние ресурса. это обычно требует индивидуальной разработки.
Твой ответ
В вашем конкретном случае, ресурсы - это файлы на вашем диске. Синхронность происходит от таких событий, как чтение / запись файла, которые запускают сканирование при доступе в обеих AV-программах.
Windows выступает в качестве арбитра для решения проблем параллелизма файловой системы, блокируя файлы, когда программы открывают их для определенных операций.
Это означает, что обе программы стремятся получить доступ к файлу, и тот, кто попадет туда первым, получит блокировку. На низком уровне это приводит к некоторому перебоям диска, когда обе программы начинают свои собственные операции ввода-вывода, вынуждая аппаратное обеспечение выполнять обе задачи по отдельности, но чередуя инструкции ввода-вывода, делая и намного менее эффективными, и, в конце концов, только одну из них победит. другой будет вращаться и ждать, чтобы иметь возможность установить свой собственный замок.