Program bertentangan ketika keduanya berusaha menggunakan sumber daya yang sama. Ketika beberapa program mencoba untuk beroperasi pada sumber daya pada saat yang sama, ada risiko Masalah Konkurensi . Masalah concurrency terjadi ketika satu proses melakukan perubahan pada sumber daya, dan program lain (yang di tengah modifikasi sendiri ke sumber daya) tidak menyadarinya, dan dengan demikian tidak dapat mengakomodasi.
Berikut adalah beberapa contoh masalah konkurensi buku teks.
Masalah Terakhir Menang
Bayangkan Anda menggunakan direktori FTP untuk membagikan dokumen tempat Anda dan rekan kerja berkolaborasi dalam suatu dokumen. Anda mengunduh dokumen, mengeditnya, dan mempostingnya lagi, seperti halnya rekan Anda.
- Anda mengunduh dokumen, dan memulai serangkaian perubahan yang membutuhkan waktu 1 jam.
- Rekan Anda mengunduh dokumen pada saat yang sama dengan yang Anda lakukan, tetapi hanya membutuhkan waktu setengah jam untuk menyelesaikan dan memuat ulang perubahan mereka.
Hasil: saat Anda mengunggah dokumen, Anda menimpa perubahannya dan hilang.
Data Basi
Dalam skenario yang sama, kolega Anda membuat beberapa perubahan yang Anda butuhkan, tanpa memberi tahu Anda. salinan file Anda tidak memiliki perubahan,
Hasil: Anda sendiri yang menulis perubahan yang sama dengan kata-kata yang sedikit berbeda, atau lebih buruk, mematikan email yang buruk tentang bagaimana itu hilang.
Ini kelihatannya seperti skenario sederhana, tetapi dalam kasus-kasus lanjutan seperti database multi-akses jika Anda memilih catatan pada milidetik yang sama saat seseorang memperbaruinya, Anda dapat mengalami masalah serius.
Perhitungan buruk
Pasangan yang sudah menikah memiliki rekening bank bersama dan kartu ATM. Mereka memiliki 1000USD di akun mereka. Dalam kehidupan sehari-hari mereka, mereka berada di sisi yang berlawanan dari kota, dan keduanya mengakses ATM secara bersamaan. Mereka berdua menarik 1000USD. ATM sama-sama tahu bahwa saldo adalah 1000, sehingga mereka memungkinkan penarikan, dan kemudian menulis kembali ke database pusat bahwa saldo baru adalah 0.
Hasil: bank sekarang keluar 1000USD, dan bahkan tidak mengetahuinya.
Dalam semua contoh ini ada beberapa pihak yang melakukan tindakan pada sumber daya bersama pada atau pada waktu yang bersamaan. Karenanya istilah "konkurensi" atau "Sinkronisasi".
Solusi
Ada beberapa cara untuk menangani masalah seperti ini. Salah satunya adalah menggunakan perangkat lunak yang melakukan arbitrase antara banyak pihak yang mengakses sumber daya. Program arbiter ini memiliki dua opsi, tergantung pada ruang lingkup dan prediktabilitas operasi:
- Gabungkan operasi dengan cerdas
- Blokir / kunci salah satu dari dua operasi hingga yang diketahui selesai.
Juga dimungkinkan untuk memblokir / mengunci, asalkan kedua program dirancang untuk memeriksa bendera bersama yang menunjukkan keadaan sumber daya. ini biasanya membutuhkan pengembangan kustom.
Jawabanmu
Dalam kasus spesifik Anda, Sumber daya adalah file pada disk Anda. Sinkronisasi berasal dari acara seperti file Baca / Tulis, yang memicu pemindaian saat akses di kedua program AV.
Windows bertindak sebagai penengah untuk menyelesaikan masalah konkurensi sistem file dengan mengunci file ketika program membukanya untuk operasi tertentu.
Ini berarti bahwa kedua program berlomba untuk mengakses file, dan siapa pun yang sampai di sana terlebih dahulu mendapatkan kunci. Pada level yang rendah, ini menghasilkan beberapa penumpukan disk karena kedua program memulai aktivitas I / O mereka sendiri, memaksa perangkat keras untuk melakukan kedua tugas secara terpisah, namun menyisipkan instruksi IO, membuat keduanya jauh lebih efisien, dan pada akhirnya, hanya satu dari mereka akan menang. yang lain akan berputar dan menunggu untuk dapat membuat kunci sendiri.