Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013



Benzer belgeler
Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

Dağıtık Sistemler CS5001

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BİL132 Bilgisayar Programlama II

JAVA ile DAĞITIK PROGRAMLAMA

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

YZM 2116 Veri Yapıları

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Veri Yapıları ve Algoritmalar dönem

İÇİNDEKİLER VII İÇİNDEKİLER

Yazılım Kodlama ve İ simlendirme Standartları v1.0

BMH-303 Nesneye Yönelik Programlama

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

BİL-141 Bilgisayar Programlama I (Java)

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Progress Barlı, FTP Dosya Upload Appleti

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Final Sınavı Örnek Soruları Bahar 2018

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

Ağ Sunucusu Programlaması. Bora Güngören Portakal Teknoloji

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

KUYRUKLAR. Doç. Dr. Aybars UĞUR

Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalım.

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

İŞ PARÇACIKLARI (THREADS)

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

BİL-141 Bilgisayar Programlama I (Java)

Dağıtık Sistemler CS5001

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Veri Yapıları ve Algoritmalar dönem

CENG/BILM 341 FINAL REVIEW. Dr. Esma Yıldırım

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Sunum İçeriği. Programlamaya Giriş

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

D İ Z İ L E R A R R A Y S

MOBİL UYGULAMA GELİŞTİRME

MOBİL UYGULAMA GELİŞTİRME

YMT219 VERİ YAPILARI ÖDEV-1

MOBIL UYGULAMA GELIŞTIRME

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Dizi ( Array ) ve Dizgi ( String )

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

CSSigner, Cybersoft firması tarafından geliştirilmiş açık kaynak kodlu e-imza yazılım kütüphanesidir.

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUARI. Soket Programlama

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Soket, bir sunucu programı ve bir veya birden çok istemci programı arasında çift yönlü iletişim kuran bir yazılım uç noktasıdır.

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

Test Güdümlü Yazılımın Tasarım Üzerindeki Etkileri KurumsalJava.com

Erişim konusunda iki taraf vardır:

1 - Button Kontrolu Nasıl Yapılır?

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

«BM364» Veritabanı Uygulamaları

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Kılgıladığı arayüzler: Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Görsel Programlama 1

İş Parçacıkları Thread(s)

3.Hafta. . Kontrol Deyimleri/İfadeler

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Java String İşlemleri

Arasınav Örnek Soruları Bahar 2018

C#.NET ile PROGRAMLAMAYA GİRİŞ

Java Dersi. Altuğ Bilgin Altıntaş

// hataları işaret eden referans

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

Programlama Dillerinde Kullanılan Veri Tipleri

Proxy (Vekil) Tasarım Şablonu KurumsalJava.com

Business Delegate Tasarım Şablonu KurumsalJava.com

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Burak Kıymaz JAVA FX

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Transkript:

1 Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013 Alıştırmalar 2 - Dağıtık Sistemler Alıştırma 1 1. Neden dağıtık algoritmalar ardışık algoritmaların aksine her zaman literatürde bir melin açıkça tanımı olarak tanımlanırlar? 2. Javada soket-gerçekleştirim melinin aşağıdaki özelliklerini tanımlayınız. Aktif birimler nelerdir? İletişim senkronmudur yoksa asenkron mu? İletişim kanalları nelerdir? FIFO özelliğini varmıdır? Kapasiteleri nedir? Kanallarda hangi hata davranışları bulunmaktadır? İşlemlerde hangi hata davranışları bulunmaktadır? İşlemler(Activities) bir programlama dilinde(örn: Java) olaya-dayalı mı yoksa kontrole-dayalı olarak mı tanımlanırlar? Deterministik olmayan yapılar varmıdır? 3. Asenkron iletişim kanallarına sahip dağıtık bir sistem semafor gibi davranmaktadır. Açıklayınız! 4. Aşağıda verilen özelliklere sahip programlar dağıtık programlarmıdır: Bir makine üzerinde başlatılan ve soketler üzerinden iletişim kuran birden fazla java programı. Bir makine üzerinde başlatılan ve RMI üzerinden iletişim kuran birden fazla java programı. Bir makine üzerinde birden çok JVM tarafından çalıştırılan ve soketler üzerinden iletişim kuran programlar. Bir makine üzerinde birden çok JVM tarafından çalıştırılan ve diğerleriyle RMI üzerinden iletişim kuran aynı java programı. Bir makine üzerinde bir JVM tarafından birbirleriyle sadece soketler üzerinden iletişim kuran birden fazla Thread ile başlatılan bir program. Bir makine üzerinde bir JVM tarafından birbirleriyle sadece Queue lar üzerinden iletişim kuran birden fazla Thread ile başlatılan program. Alıştırma 2 Kontrole-dayalı gösterimde tanımlanmış: MAXLINE = 5 channel input(char), output(char[0..maxline]); process CharToLine: char[] line; int i=0; true : receive input( line[i] ) -> { line[i]!= CR && i < MAXLINE -> { i++; receive input( line[i] );

2 send output(line); i = 0; process Source: int i = 0 char[] c = "a\n bcd\n efgh\n ijklmn\n opqrstu\n vw\n 123456789\n0" true : send input(c[(i++) % c.size]) process Sink: line = receive output println(line) 1. Bu gösterim dağıtık sistem, dağıtık uygulama, dağıtık program,dağıtık algoritma,... tanımlarından hangisidir? 2. Psece ile verilen tanımlamayı kolay bir yoldan java da gerçekleştiriniz. Gerçekleştiriminizi test ediniz. 3. Gerçekleştirimin ğruluğu ve yeterliliğini tartışınız: Tanımlandığı gibi mi çalışıyor? Dil özelliklerinin gerçekleştirimini ve programın, özelliklerini laylı olarak kabul ettiği JRE nin tutarlılığını düşününüz. İpucu Bir prucer: package aufgabe_2; public class Source implements Runnable { Channel<Character> channel; protected Source(Channel<Character> channel) { this.channel = channel; @Override public void run() { int i = 0; char[] c = { a, \n,, b, c, d, \n,, e, f, g, h, \n,, i, j, k, l, m, n, \n,, o, p, q, r, s, t, u, \n,, v, w, \n,, 1, 2, 3, 4, 5, 6, 7, 8, 9, \n, 0 ; while (true) { channel.send(c[(i++) % c.length]); Thread.sleep(100); catch (InterruptedException e) { // ignore Daha basit bir kanal aşağıda gösterildiği gibi gerçekleştirilebilir: package aufgabe_2; import java.util.concurrent.linkedblockingdeque;

3 public class Channel<T> { private LinkedBlockingDeque<T> mailbox = new LinkedBlockingDeque<>(); public void send(t v) { mailbox.put(v); catch (InterruptedException e) { e.printstacktrace(); public T receive() { return mailbox.take(); catch (InterruptedException e) { e.printstacktrace(); return null; Alıştırma 3 Aşağıda pseuce olarak verilen süreç tanımı hakkında düşününüz: channel in1(int), in2(int), out(int) process Merge: int v1, int v2 receive in1(v1) receive in2(v2) v1!= EOF && v2!= EOF -> { if v1 <= v2 -> { send out(v1) receive in1(v1) v2 <= v1 -> { send out(v2) receive in2(v2) fi v1!= EOF && v2 == EOF -> { send out(v1) receive in1(v1) v1 == EOF && v2!= EOF -> { send out(v2) receive in2(v2) send out(eof) 1. Gösterim olaya-dayalı ya da kontrole-dayalı bir gösterim midir?

4 2. Süreç ilişkileri nasıl tanımlanmıştır,kullanılmıştır: İletişim partnerlerinin ğrudan yönlendirildikleri port / kanal vb. unsurlar varmıdır?... 3. Bu süreç tanımı bir dağıtık sistemin tanımlanmasında nasıl kullanılabilir? 4. Buna benzer bir sistemi kolay yoldan java da gerçekleştiriniz. İpucu Burada değerlerin iki sonlu dizileri karıştırılmalıdır. Bunun için bir sıranın sonunda iletişim mümkün olmalıdır. Bu işlem tipik olarak, kanal kapatılarak ve veriyi taşıyarak yapılır. Kapatılabilen kanalların gerçekleştirimi, kapatılamayan kanallara göre daha karmaşıktır. Verilen k kapatılabilen bir kanal olarak kullanılabilir: package aufgabe_3; import java.util.nosuchelementexception; import java.util.concurrent.locks.condition; import java.util.concurrent.locks.lock; import java.util.concurrent.locks.reentrantlock; * Closable blocking Channel. * * @author TLE * * @param <T> Type of elements. public class Channel<T> { // max capacity of a channel private static final int queuesize = 10; // global lock: lock for all channels private static final Lock globallock = new ReentrantLock(); // condition: await that a message is available on any channel private static final Condition globalnotempty = globallock.newcondition(); // condition: channel not full private final Condition notfull = globallock.newcondition(); // condition: channel not empty private final Condition notempty = globallock.newcondition(); @SuppressWarnings("unchecked") private final T[] items = (T[]) new Object[queueSize];// channel queue private int putptr; // channel management: where to put private int takeptr; // where to take private int count; // number of messages stored private boolean closed;// channel is closed * Send message to channel. * Blocking operation. Waits for storage if channel is full. * Writing to a closed channel is forbidden. * @param x the message * @throws InterruptedException * IllegalStateException if the channel is closed public void send(t x) throws InterruptedException { globallock.lock(); if (closed) { throw new IllegalStateException("put on closed channel");

5 while (count == items.length) { notfull.await(); // wait for not full if (closed) { throw new IllegalStateException("put on closed channel"); items[putptr] = x; if (++putptr == items.length) putptr = 0; ++count; notempty.signal(); globalnotempty.signalall(); finally { globallock.unlock(); * Get message from channel. * Blocking operations. Waits for message if none is available. * @return a message from channel * @throws InterruptedException * NoSuchElementException if the channel has no elements and is closed public T receive() throws InterruptedException { globallock.lock(); while (count == 0) { if (closed) { throw new NoSuchElementException("take on closed channel"); notempty.await(); T x = items[takeptr]; if (++takeptr == items.length) takeptr = 0; --count; notfull.signal(); return x; finally { globallock.unlock(); * Close the channel. * Channels should be closed by the prucer. * All receivers blocked on the channel will be informed. * Closed channels may not be reopened. public void close() { globallock.lock(); closed = true; notfull.signalall(); notempty.signalall(); globalnotempty.signalall(); finally { globallock.unlock(); public boolean eof() { return closed;

6 Alıştırma 4 Aşağıda verilen Dijkstra nın pseuce gösterimlerini açıklayınız ve java da ğru gerçekleştirimlerini yapınız. 1. guarded if if guard1 -> Aktion1 guard2 -> Aktion2... fi 2. guarded guard1 -> Aktion1 guard2 -> Aktion2... 3. guarded communication guard1 : Comm1 -> Aktion1 guard2 : Comm2 -> Aktion2... Alıştırma 5 1. Deterministik olmayan algoritmadan ne anlıyorsunuz? 2. Non-deterministlik, deterministik olmayan otomatalarda hangi amaca hizmet eder? 3. Deterministik olmayan bir otomatayı deterministik olmayan bir algoritmayla gerçekeştirmek gerekli, kullanışlı yoksa anlamsızmıdır? 4. Bir deterministik olmayan (mesaj) alma işlemini deterministik olmayan bir algoritmayla gerçekleştirmek gerekli, kullanışlı yoksa anlamsızmıdır? 5. asenkron meldeki bir kontrole-dayalı süreç tanımında neden deterministik olmayan receive işlemi varken deterministik olmayan broadcasting işlemi yoktur? 6. Senkron melde kontrole-dayalı süreç tanımı için kullanılan gösterimde neden deterministik olmayan receive işlemleri bulunmalıdır?