Програми конфліктують, коли вони обидва намагаються використовувати один і той же ресурс. Коли кілька програм намагаються працювати на ресурсі одночасно, існує ризик виникнення проблем з одночасністю . Проблеми з кон'юнктурою виникають, коли один процес здійснює зміну на ресурсі, а інша програма (яка в середині була власною модифікацією ресурсу) про це не знає, і, таким чином, не може їх вмістити.
Ось декілька прикладів проблем одночасності тексту підручників.
Проблема останнього перемоги
Уявіть, що ви використовуєте каталог FTP для обміну документом, де ви та колега співпрацюєте над документом. ви завантажуєте документ, редагуєте його і знову опублікуєте, як це робить ваш колега.
- Ви завантажуєте документ і починаєте набір змін, який займає 1 годину.
- Ваш колега завантажує документ у той самий час, що ви робили, але на повне та повторне завантаження змін потрібно лише півгодини.
Результат: при завантаженні документа ви перезаписуєте їх зміни, і вони втрачаються.
Старі дані
За тим же сценарієм ваш колега вносить деякі зміни, які вам потрібні, не розповідаючи вам. Ваша копія файлу не має змін,
Результат: Ви самі пишете ті самі зміни трохи іншими словами, або, що ще гірше, викиньте неприємний електронний лист про те, як його немає.
Це здається простим сценарієм, але в запущених випадках, таких як бази даних з багатодоступним доступом, якщо ви вибираєте записи в одній мілісекунді, хтось їх оновлює, ви можете відчути серйозні проблеми.
Погане обчислення
Подружня пара має спільний банківський рахунок та картки банкоматів. У них на рахунку 1000USD. У своєму повсякденному житті вони перебувають на протилежних сторонах міста, і обидва отримують доступ до банкомата в ту ж мить. Вони обидва знімають 1000 дол. США. Банкомати знають, що залишок становить 1000, тому вони дозволяють зняти, а потім записують у центральну базу даних, що новий баланс дорівнює 0.
Результат: банк нарахував 1000 доларів, і навіть не знає цього.
У всіх цих прикладах було кілька партій, які виконували дії на спільному ресурсі приблизно або в один і той же час. Звідси терміни "паралельність" або "синхронність".
Рішення
Існує кілька способів вирішити такі проблеми. Перша полягає у використанні програмного забезпечення, яке проводить арбітраж між кількома сторонами, що мають доступ до ресурсу. Ці програми арбітра мають два варіанти, залежно від обсягу та передбачуваності операцій:
- Об’єднайте операції розумно
- Блокуйте / заблокуйте одну з двох операцій, поки перша, яка помічена, не буде завершена.
Можна також заблокувати / заблокувати, за умови, що обидві програми призначені для перевірки загального прапора із зазначенням стану ресурсу. це, як правило, вимагає спеціальної розробки.
Ваша відповідь
У вашому конкретному випадку ресурсами є файли на вашому диску. Синхронність походить від таких подій, як файл Read / Write, який запускає сканування під час доступу в обох AV-програмах.
Windows виступає арбітром для вирішення проблем одночасності файлової системи, блокуючи файли, коли програми відкривають їх для конкретних операцій.
Це означає, що обидві програми гоняться до доступу до файлу, і той, хто потрапить туди першим, отримує замок. На низькому рівні це призводить до обриву диска, оскільки обидві програми розпочинають власну діяльність вводу-виводу, змушуючи апаратне забезпечення виконання обох завдань окремо, в той же час переплітаючи інструкції вводу-виводу, роблячи обидві значно менш ефективними, і врешті-решт, лише одну з них виграє. інший крутиться і чекатиме змогу встановити власний замок.