1 Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 7. Juli 2013 Alıştırmalar 10 - Dağıtık Sistemler Alıştırma 1 1. Gerçek saatler aynı zamanda mantıksal saatlermidir, (her zaman, belirli (hangi) kurallar altında ) mantıksal saatin gereksinimlerini karşılarlar mı? Bilgisayar–saatlerini (Computer Clocks) inceleyiniz.. 2. İki olayın/eventin“eşzamanlı” olması ne anlama gelmektedir: • Gerçek saatli bir sistemde • Lamport–Saatine sahip bir sistemde • Vektör–Saatine sahip bir sistemde 3. Bir Lamport–saatinde bir eventin zaman damgası n değerine sahiptir. Bu değer keyfi bir değermidir, yoksa bir açıklaması varmıdır? Mantıksal saatin “tiki” ile “gerçek” herhangi birşey ölçülür mü ya da sayılır mı? 4. “Eşzamanlılık” / (concurrent) özelliği a) gerçek zaman und b) happend–before–ilişkisi) koşullarında geçişli, simetrik, antisimetrikmidir? 5. Bir saat (mantıksal veya değil) eventleri bir zaman değerine ya da bir zaman damgasına atar. Bu aynı zamanda bir örnekmidir? • Lamports Saati, • Matterns Vektör Saati, • ideal bir “gerçek saat” izomorf örneklermidir? 6. Lamport mantıksal saatinde eventler zaman damgalarını lineer düzenlenmiş bir kümeden alırlar. Bu bir (dez)avantaj mıdır? 7. Bir vektör saatinde olaylar düzenlenmiş bir kümeden zaman damgası alırlar. Bu küme lineer olarakta düzenlimidir? 8. Lamport ve / ya da Vektör saati nedensel düzen ile tutarlı ve / veya katı / sıkı tutarlımıdır? Alıştırma 2 F. Mattern’in makalesinden On the Relativistic Structure of Logical Time in Distributed Systems1 1. kısımdan 4. kısıma kadar okuyunuz. 1. ilişkisi hangi anlama gelmektedir ? Derste buna benzer veya aynı bir ilişki tanımlanmışmıdır? Eğer evetse farklar neler – eğer varsa? 2. Metinde matematiksel yapı kullanılmıştır “lattice” , bu yapının Türkçe karşılığı nedir? 3. Teorem 4.11 ne ifade etmektedir? Hangi (pratik) anlamı taşımaktadır? Alıştırma 3 Programın etkinliğinin bozulmasını sağlayan programın çalıştırılmasıyla ilgili çok fazla bilgiye gerek kalmadan, “bilgisayar” ve programcıların programın semantiği ile ilgili aynı şeyi anlayabilmeleri için, Java–Community (ve takip eden diğerleri) “Bellek Modelini” tanımladılar. Java gerçekleştirimleri buna uyar ve programcılar programlarının bahsedilen modele uygun olarak çalıştırıldığından emin olabilirler. Javanın Bellek Modeli (Java Memory Model, JMM)2 bir programın bütün işlemleri üzerine bir happened–before–ilişkisi 1 siehe: http://www.vs.inf.ethz.ch/publ/papers/relativistic time.pdf 2 http://jcp.org/en/jsr/detail?id=133) 2 (kurz →Java ) tanımlar. Eğer işlemler a ve b a →Java b ilişkisi içindeyse, b’nin a’da nedenleri bulunan bütün etkileri göreceği garanti edilir. Eğer iki işlem bu ilişkiye sahip değilse, compiler, JVM ve CPU a ve b’nin çalıştırımını (execution) herhangi bir sıralamaya koyabilir ve bu eventlerin etkileşimlerini cache içinde koordine edebilirler. Saf bir →Java yorumlamasını(interpretation) açıklayınız ve neden threadler CPU ve multiprocessor sistemler arasında daha az saflıkta olan bir anlayış oluştururlar. JMM hakkında bilgi toplayınız(örn. Wikipedia üzerinden). →Java bir yarı düzenmidir yoksa tam bir düzen mi? JMM’nin →Java Lamport’un → ilişkisiyle ne kadar eşleşmektedir?