Programlar, aynı kaynağı kullanmaya çalıştıklarında çakışıyor. Birden fazla program aynı anda bir kaynak üzerinde çalışmaya çalıştığında, Eşzamanlılık Sorunları riski vardır . Eşzamanlılık sorunları, bir işlem kaynakta bir değişiklik yaptığında gerçekleşir ve diğer program (ortada kaynakta kendi modifikasyonu olan) programdan habersizdir ve bu nedenle barındıramaz.
Ders kitaplarının eşzamanlılık sorunlarına birkaç örnek.
Kazanılan Son Sorun
Siz ve meslektaşınızın bir belge üzerinde birlikte çalıştığı bir belgeyi paylaşmak için bir FTP dizini kullandığınızı hayal edin. dokümanı indirir, düzenler ve tekrar yazarsınız.
- Belgeyi indirip, 1 saat süren bir değişiklik kümesini başlatırsınız.
- Meslektaşınız belgeyi aynı anda indirir, ancak değişikliklerini tamamlamak ve yeniden doldurmak için yalnızca yarım saat sürer.
Sonuç: belgenizi yüklediğinizde değişikliklerinin üzerine yazarsınız ve bunlar kaybolur.
Eski Veri
Aynı senaryoda, iş arkadaşınız size söylemeden gerek duyduğunuz bazı değişiklikleri yapar. Dosyanın kopyasında değişiklik yok,
Sonuç: Aynı değişiklikleri biraz farklı kelimelerle kendiniz yazıyorsunuz veya daha da kötüsü, ne kadar eksik olduğu konusunda kötü bir e-postayı ateşliyorsunuz.
Bu basit bir senaryo gibi gözükmektedir, ancak aynı milisaniyede kayıtları seçtiyseniz, çoklu erişim veritabanları gibi gelişmiş durumlarda, birileri onları güncelliyorsa, ciddi sorunlar yaşayabilirsiniz.
Kötü hesaplama
Evli bir çiftin ortak bir banka hesabı ve ATM kartı vardır. Hesaplarında 1000USD var. Günlük yaşamlarında kentin karşı taraflarındalar ve her ikisi de ATM'ye aynı anda erişiyorlar. İkisi de 1000USD'den çekildi. ATM'lerin her ikisi de bakiyenin 1000 olduğunu biliyor, bu nedenle çekilmeye izin veriyor ve ardından merkezi veritabanına yeni bakiyenin 0 olduğunu yazıyor.
Sonuç: banka şu an 1000USD dışındadır ve henüz bilmemektedir.
Tüm bu örneklerde, paylaşılan bir kaynakta ya da aynı anda aynı işlemleri yapan birçok taraf vardı. Dolayısıyla "eşzamanlılık" veya "Eşzamanlılık" terimleri.
Çözümler
Bu tür meselelerle uğraşmanın birkaç yolu vardır. Bunlardan biri, kaynağa erişen çok sayıda taraf arasında hakemlik yapan yazılım kullanmaktır. Bu hakem programları, işlemlerin kapsamına ve öngörülebilirliğine bağlı olarak iki seçeneğe sahiptir:
- İşlemleri akıllıca birleştirme
- Belirlenen ilk işlem tamamlanana kadar iki işlemden birini engelleyin / kilitleyin.
Her iki programın, kaynağın durumunu belirten paylaşılan bir bayrağı kontrol etmek üzere tasarlanmış olması koşuluyla, bloklamak / kilitlemek de mümkündür. bu genellikle özel gelişim gerektirir.
senin cevabın
Özel bir durumda, kaynaklar diskinizdeki dosyalardır. Senkronizasyon, her iki AV programında da erişimde taramaları tetikleyen Okuma / Yazma dosyası gibi olaylardan gelir.
Windows , programlar belirli işlemler için açtığında dosyaları kilitleyerek dosya sistemi eşzamanlılık sorunlarını çözmek için bir hakem görevi görür .
Bu, her iki programın da dosyaya erişmek için yarışmakta olduğu ve oraya kim ulaşırsa kilitleneceği anlamına gelir. Düşük seviyede, her iki program da kendi I / O faaliyetlerine başladığından, donanımın her iki görevi ayrı ayrı yapmaya zorladığı, ancak IO talimatlarını birleştirdiği, hem çok daha az verimli hem de en sonunda sadece bir tanesini zorlayan bazı disklerin çökmesine neden olur. bunlardan kazanacak. Diğeri dönecek ve kendi kilitlerini oluşturabilmek için bekleyecekler.