Eşzamanlı Programlar – Bilgisayar Bilimleri Ödevleri – Bilgisayar Bilimleri Ödev Hazırlatma – Bilgisayar Bilimleri Alanında Tez Yazdırma – Bilgisayar Bilimleri Ödev Yaptırma Fiyatları
Eşzamanlı Programlar
Bilgisayarlarımızın yapıldığı devrede aynı anda birden fazla şey olabilir. Birçok sinyal bir bileşenden diğerine seyahat edebilir ve birçok bileşen aynı anda çıktılarını hesaplayabilir. Bilgisayarlarımızın çalıştığı ortam, birçok olayın aynı anda gerçekleştiği bir ortamdır.
Örneğin, dünyanın her yerindeki seyahat acenteleri, uçak bileti satmak için tek bir bilgisayar sistemi kullanıyor ve aynı bileti farklı yolculara satmaktan kaçınmaya çalışıyor (değişen başarı dereceleriyle).
Arabanızı kontrol eden bilgisayarda, gaz kelebeğini kapatabilecek, devrilme çubuğunu yükseltebilecek ve frenler üzerindeki basıncı yeniden dağıtabilecek bazı işlemcilere okumalarını ileten bir avuç sensör vardır. Bu bileşenlerin tümü daha sonra aynı anda reaksiyona girer.
Şimdiye kadar tartıştığımız programlar herhangi bir eşzamanlılık biçimi göstermiyor. Bu bölümde, eşzamanlı programlara bir göz atacağız. Bunu yapmak için en az üç nedenimiz var. Birincisi, yukarıda gözlemlendiği gibi, eşzamanlılık problem ortamının bir parçası olabilir ve dolayısıyla çözümün kaçınılmaz bir parçası olabilir.
İkincisi, giderek daha fazla sayıda bilgisayar aynı anda çalışan ve ayrı ayrı programlanması gereken bileşenlerden yapılıyor. Fiziksel argümanlar, bu tür çoklu bilgisayarların, aynı fiyata aynı anda bir program yürüten sıralı bilgisayarlara göre birçok sorunda daha yüksek performans sağlama potansiyeline sahip olduğunu göstermektedir. (Bu argümanları daha sonraki bir bölümde tartışacağız.)
Üçüncüsü, eşzamanlı programların inşa edilmesi sıralı olanlardan daha zordur. Sorunların ve bazı çözüm yöntemlerinin farkında olduğumuzda bu zorlu göreve daha iyi hazırlanırız. (Ve en önemlisi, çok eğlenceli.)
Karşılıklı Dışlama
Basit bir programla başlayalım. x := 1 ve y := 2’nin eşzamanlı yürütülmesinden oluşur ve yazarız. Dikey çubuklarla birbirine bağlanan ifadelere süreçler denir.
Bir işlem x := 1 ve diğeri y := 2’dir. Bazen özensiz davranırız ve bir işlemden bir ifadenin yürütülmesi olarak söz ederiz. İki işlemi paralel yürütmenin sonucu nedir? İki işlem bağımsız olarak yürütülebilir. Biri x == 1’e, diğeri y = 2’ye götürür ve her ikisi de tamamlandığında elimizde x = 1 1\ y = 2 olur. Süreçler arasında bir bağımlılık olduğunda sorunlar ortaya çıkar.
Bu eş zamanlı programın tamamlanmasının ardından x değişkeninin değeri nedir? Şey, hemen hemen her şey olabilir. Programı çalıştıran bilgisayar sistemi hakkında daha fazla varsayımda bulunmazsak, sonucun ne olduğunu söyleyemeyiz.
Aslında, sonucun ne olmasını istediğimizi tanımlayarak ve ardından bunun makul derecede verimli bir uygulamasının var olup olmadığını görerek oyunumuzu tam tersi şekilde oynuyoruz.
Programın makul bir sonucu nedir? Makul bir sonucun x = 1 veya x = 2 olduğunu öneriyorum. Vakaların yüzde 50’sinde x = 1 veren bir uygulama gerektireceğinden, her iki sonucun da eşit derecede olası olduğunu belirtmenin makul olduğunu düşünmüyorum. ve programın çok sayıda çalışması için diğer yüzde 50’de x = 2. Bu, programın herhangi bir bireysel çalışmasında size biraz yardımcı olmaz. Bu nedenle, tüm ihtiyacımız olan, sonucun x =1 V x =2’yi sağlamasıdır.
Artık süreçler arasında paylaşılan değişkenler biçiminde müdahaleye sahip olduğumuza göre, anlambilimi artık Hoare üçlüleri cinsinden tanımlayamayız. Müdahale olmadan, gibi bir kural beklenebilir.
Ancak girişim varlığında, SO ve S1’in yürütülmesi sırasında ulaşılan ara durumlar rol oynar ve Hoare üçlüleri yeterli değildir. Aşağıda buna daha yakından bakıyoruz.
Programımızın sonucunun x = 1 V x = 2 olduğu varsayımı ne tür uygulamaları dışlar? Bir değişkenin değerinin, bir kapasitörde hapsolmuş belirli bir miktar yük ile temsil edildiğini hayal edin.
Makinenin bir parçası kapasitör voltajını 1 volta ayarlamaya çalışırsa ve diğer parça aynı anda 2 volta ayarlamaya çalışırsa, sonuç kısa devre olabilir veya net voltaj seviyesi kabaca 1,5 volt olabilir. hiçbiri gerekli etkiyi sağlamaz. Makinenin iki parçasının aynı anda aynı kondansatörde çalışmamasını garanti eden bir mekanizma kurulmalıdır.
Senkron ve asenkron eğitim Nedir
Senkron ve asenkron Nedir
Senkron ve Asenkron örnekleri
Senkron öğrenme Nedir
Senkron ne demek
Asenkron ders ne demek
Senkron olmak ne demek
Asenkron Eğitim
Buna karşılıklı dışlama denir ve sözde hakem tarafından gerçekleştirilebilir. Hakem yapmanın sorunlarına değinmiştik. Yarı kararlı durum nedeniyle, sınırlı bir süre içinde seçim yapan bir hakem oluşturmak imkansızdır.
Burada, bu sorunun bileşenler düzeyinde tatmin edici bir şekilde çözüldüğünü ve daha sonra depolama konumlarına birbirini dışlayan erişimi sağlamak için kullanılabileceğini varsayıyoruz. (Bileşenlerin eşzamanlı olarak çalışmasını veya sistemin olası uzun tahkim sürelerine karşı dayanıklı olmasını gerektirir.)
Net etki, eylemlerin sırayla gerçekleştirilmesidir, ancak dizinin ne olduğunu bilmiyoruz; bir uygulamadan diğerine değişebilir. Bir yürütmede, x önce 1’e sonra 2’ye ayarlanabilir; başka bir infazda, tam tersi olabilir.
Daha sonra, x değişkenimizin iki bit ile temsil edildiğini ve karşılıklı dışlama mekanizmasının tek tek bitler seviyesinde çalıştığını varsayalım. x := 1 ifadesi x1 := 0 tarafından uygulanabilir; :zu := 1, oysa := 2 x1 := 1 tarafından uygulanabilir; Xo := 0.
Bizden beri x ifadesi, karşılıklı dışlama mekanizması hakkında daha fazla varsayımda bulunmadıysa, x1’e her iki atama aynı anda denenmiş olabilir ve ilk önce x1 := 0 ve ikinci olarak x1 := 1 ile sonuçlanacaktır; :zu’ya atamalar ters sırada olabilir, yani önce :zu := 0 ve :zu := 1 saniyedir.
Sonuç olarak, eşzamanlı programımızın sonucu olarak x1 ve :zuarebothsetto1andwe x=3 olur; benzer şekilde x = 0 sonuçlanabilirdi. Bu, sonucun x = 1 V x = 2 olması şartımıza uymaz ve dolayısıyla kabul edilebilir bir uygulama değildir.
Yukarıda gözlemlenen olgu, çok sık karşılaştığımız bir olgudur: Karşılıklı dışlama temel bir düzeyde sağlanır ve biraz daha geniş bir ölçekte gereklidir. Çoğu makinede değişkenlere bit ardına değerleri atanmadığı için örnek biraz yapmacık görünebilir.
Bununla birlikte, bildiğim tüm makinelerde değerleri bayt bayt veya kelime kelime atanır, bu nedenle aynı sorun biraz daha büyük bir ölçekte ortaya çıkar. Makinenizin belgelerinde, örneğin zamanlayıcı değerinin iki kelimede saklandığını okur okumaz, dikkatli olmalısınız!
Zamanlayıcı, zamanı h = 2 /1’den güncellerse. m = 59 ila h = 3 /1. m = 0 ve başka bir işlem zamanı aynı anda okursa, 2:00, 2:59, 3:00 veya 3:59 okumalarıyla sonuçlanabilirsiniz. Muhtemelen hem ilk hem de son okuma kabul edilemezken, diğer iki okuma kabul edilebilir.
Şu andan itibaren, bireysel skaler değişkenlere birbirini dışlayan erişimin sağlandığını varsayıyoruz. Daha büyük veri yapıları için (yalnızca bireysel öğeleri için) böyle bir garanti verilmez ve x := x + 1 gibi bir ifadenin, x’e iki erişimi içerdiği anlaşılır: biri okuma, diğeri yazma içindir.