Transcript
Page 1: Dağıtık Sistemler / Programlama

Bilgisayar Mühendisliği Şahabettin AKCA 132132178

TBIL-106

Bilgisayar Programlama II Ödev Dağıtık Programlama

Ahmet Yesevi Üniversitesi - TURTEP

TBIL-106 ÖDEV #1

Page 2: Dağıtık Sistemler / Programlama

İçindekiler 1. Giriş………………………………………………….…….………3 2. Dağıtık Sistem Tanımı……………………………….…….………4 3. Dağıtık Mimari Yapı Gereksinimleri……………….……….……..5 4. Dağıtık Sistemler Avantaj ve Dezavantajları……….……….……..5 5. Dağıtık Sistem Örnekleri……………………..…….……….……..6 6. Dağıtık Sistem Güvenliği……………………..…….……….……..7 7. Dağıtık Sistemlerin Kullanım Amaçları…………….………….8-10 8. Internet ve Intranet………………………………………………11 9. Dağıtık Sistem Ürün Ortamı Sorun ve Çözümleri ..…………12-13 10.Dağıtık Sistem Bileşenleri…………………………………….14-15 11.Sistem Şeffaflığı ………………………………………………….16 12.Sistem Verimliliği ve Ölçeklenebilirlik ………………….……17-18 13.Uzak Sunucu Çağırma Yöntemi……………………………..19-20 14.MPI (Mesaj Geçiş Arayüzü)……………….……………………..21 15.MPI Komutlarının Kısa Tanımları………………………………22 16.MPI Örnek Program …………….………………………..…23-24 17.MPI Derleme ve Çalıştırma.……………………………………..24 18.Kaynakça ..………………………………………………………25

TBIL-106 ÖDEV #2

Page 3: Dağıtık Sistemler / Programlama

Giriş

Mühendislik uygulamalarında daha yüksek performanslı bilgisayarlara ihtiyaç her geçen gün daha da artmaktadır. Yüksek performanslı bilgisayarların yetenekleri ile üretime giden tasarım sürecinde bazı evreler ortadan kalkmış olup (örneğin prototip gerçekleme ve testler), bu işlemler artık benzetim yoluyla yapılmaktadır. Böylece, geliştirme sürecinde zaman ve paradan tasarruf edilmekte, yeni ürünlerin piyasaya çıkma periyodu kısalmaktadır. Yüksek performanslı sistemler işlemci saat frekansının arttırılması veya donanımın paralel kullanılmasıyla elde edilebilir. İşlemci saat frekansının arttırılması bir noktadan sonra ya ekonomik nedenlerle veya fiziksel sınırlar nedeniyle mümkün olmamaktadır. Bu nedenle daha fazla donanımın paralel olarak kullanılmasıyla performans arttırılması en çok tercih edilen yoldur. Bu yaklaşım kendini önce işlemci içinde paralellik ile gösterdi. Üretim hattı (pipeline) mimarisinde işlemci içine ilave edilen donanım ile aynı anda birden fazla komut icra edilebilir hale getirildi. Böylece komut seviyesinde paralellik yoluyla performans artırılmış oldu. Artık günümüz genel amaçlı bilgisayarlarında kullanılan işlemcilerinin hepsinde pipeline yapı kullanılmaktadır. Bu sistemlerde paralellik komut ölçeğinde olduğundan, kullanıcı açısından bir sorun veya değişiklik oluşmaz. Paralellik için gerekli düzenlemeler derleyici veya donanım içindeki alt birimler tarafından gerçeklenir.

TBIL-106 ÖDEV #3

Page 4: Dağıtık Sistemler / Programlama

Dağıtık Sistem Nedir ?

Ağ üzerindeki bilgisayarlarda bulunan donanım veya yazılım bileşenlerinin yalnız mesaj göndererek haberleştikleri sistem. [Coulouris]

Dağıtık sistem, farklı bilgisayarlardaki donanım ve yazılım bileşenleri arasında haberleşme ve koordinasyonunun sadece mesajlaşma yoluyla sağlanabildiği ağ olarak tanımlanır.

Dağıtık sistemi diğer bilgisayar ağlarından farklı kılan özelliğin, ağın varlığı ve işlevinin kullanıcıya görünmemesi olduğu söylenebilir. Örneğin kullanıcı bir program çalıştırdığında, en iyi işlemciyi seçmek, giriş dosyalarını bu işlemciye aktarmak ve dönen sonuçları uygun yere koymak işlemcinin yürüttüğü işlerdir. Çok işlemcili bir dağıtık sistemde çalışmakta olmasına rağmen, kullanıcıya görünen ise tek bir sanal işlemcidir. Diğer ağlarda, kullanıcının kendisi bir makineye bağlanır, iş isteğinde bulunur, dosya gönderir vs. Diğer bir deyişle, ağ yönetim işlemleri kullanıcı tarafından yürütülür.

Dağıtık sistem, bir ağ üzerine kuruludur. Yazılımla, ağdaki bileşenler arası işlevsel uyumluluk ve kullanıcı açısından saydamlık sağlanır. Dolayısıyla, dağıtık sistemin diğer ağlardan farkı donanım değil, yazılım katmanından –özellikle işletim sisteminden- kaynaklanmaktadır.

Dağıtık sistemlerin var oluş amacı, kaynakları paylaşmaya duyulan gerekliliktir. Bu kaynaklar donanımsal bileşenler (disk, yazıcı) olabileceği gibi, dosyalar, veri tabanı, nesneler gibi yazılım varlıkları da olabilir.

Bu büyük ağ da bulunan donanımlar kullanıcıya tek bir bilgisayar gibi davranır ve en iyi performansı sağlamayı amaçlar. 1. İzole değildir. 2. Cloud un temelini oluşturur 3. Senkron ve replike’dir 4. Yedekli çalışır

TBIL-106 ÖDEV #4

Page 5: Dağıtık Sistemler / Programlama

Dağıtık Mimari Yapı Gereksinimleri Dağıtık mimarinin yapılandırılması çalışabilmesi için çeşitli bileşenlerin birbiriyle uyumlu ve senkron şekilde çalışılabilmesi gerekmemektedir.

1. İşletim sistemleri 2. Donanım mimarileri 3. İletişim mimarileri 4. Programlama dilleri 5. Yazılım ara yüzleri 6. Güvenlik ölçüleri 7. Bilgi gösterimleri

Dağıtık sistem Avantajları Dezavantajları

 Maliyet Merkezi yapı zorunluğu Erişim kolaylığı – hız performans Güvenlik Hesaplama ve depo alanı Her dilde yazım desteği yok Ölçeklenebilir İletişim Güvenilir(Reliable) Dağıtım kolaylığı (Web) GüvenlikŞeffaflık: Kaynaklar ve işlemlerin ağ üzerinde dağıtık olduğu açık değildir Açıklık: Servislerin sentaks ve semantikleri ile ilgili standart kurallar Ölçeklenebilirlik: Daha fazla kullanıcı/kaynak, coğrafya, yönetim

TBIL-106 ÖDEV #5

Page 6: Dağıtık Sistemler / Programlama

Dağıtık Sistem Örnekleri

Internet

Internet, geniş bir dağıtık sistemdir. Internet kullanıcıları WWW, e-posta, dosya transferi servislerinden yararlanırlar. İç Ağlar (Intranet)

$ Şekil 1. İç Ağ

Şekil 1’de, birkaç yerel ağdan oluşan bir iç ağ görülmektedir. İç ağlarda kaynak paylaşımı sağlayan ve sıklıkla kullanılmakta olan sunucular, şekilde gösterilmiştir. (Her yerel ağ, tüm bu sunucuları içermeyebilir.)

TBIL-106 ÖDEV #6

Page 7: Dağıtık Sistemler / Programlama

Dağıtık Sistem Güvenliği Bir dağıtık sistemin güvenliği, süreçleri ve aralarındaki etkileşim için kullanılan kanalları güvenli hale getirmek ve süreçlerin kapçıkladığı nesneleri izinsiz erişime karşı korumakla sağlanır.

Servisin Reddi (Denial of Service) Ddos atak olarak bilinen bu atak günümüzde bir çok bilişim sisteminin, büyük kapasiteli devlet ve banka ağlarının kilitlenmesine kadar gidebilmektedir. Sunuculara sürekli istek göndermek suretiyle sunucunun hizmet kapasitesinin doldurulup kilitlenmesidir. Ağa çok fazla mesaj gönderilerek fiziksel kaynakların (bant genişliği gibi) tüketilmesi, istemcilerin hizmet almasının engellenmesi veya yavaşlatılması da bu tip bir saldırıdır. İyi huylu kullanıcı ile kötü huylu ayırt edilemezse, sistemin çökmesi ile sonuçlanır. Çok büyük bant genişliği ve firewall maliyetlerini yanında getirmektedir.

Gezici Kod (Mbile Code) En yaygın gezici kod örneği, applet’lerdir. Bir tarayıcı çalıştırmış olan kullanıcı, kodu web sunucusunda tutulan bir appletin linkini seçerse, kod kullanıcının makinesine indirilerek çalıştırılır; bu makinedeki kaynaklara erişir. Gezici kod, sunucuların yükünü azaltmak açısından avantajlıdır. Ancak kullanıcının kaynaklarına zarar verecek şekilde kötüye kullanılabileceğinden, bir güvenlik tehdididir.

TBIL-106 ÖDEV #7

Page 8: Dağıtık Sistemler / Programlama

Dağıtık Sistemlerin Kullanım Amaçları

Kullanıcıya yönelik (neden dağıtık sistem?) Kullanıcı ve kaynakların kolayca bağlanması Şeffaflığın sağlanması Teknik hedefler (nasıl başarılır?) Açık olarak Ölçeklenebilir olarak Bu hedeflere bakmak şu soruyu cevaplamaya yardımcı olur: “dağıtık bir sistem kurmak, uğraşmaya değer mi?”

Dağıtık Sistemlerin Gerekliliği İşlevsel ayrım:

Kapasite ve amaç bakımından farklı bilgisayarların varlığı: İstemciler ve Sunucular Veri toplama ve veri işleme

Doğal dağıtıklık: Bilgi:

Farklı bilgiler farklı kişiler tarafından oluşturulup kontrol edilir (Web sayfaları gibi)

İnsan: Bilgisayar destekli işbirliği (sanal ekipler, mühendislik, sanal ameliyat)

Süpermarket zincirleri için perakende ve stok sistemleri Güç dengesizliği ve yük çeşitliliği:

İşlem yükünün farklı bilgisayarlar arasında dağıtılması. Güvenilirlik:

Farklı yerlerde uzun süreli koruma ve veri yedekleme (çoğaltma). Ekonomi:

Birçok kullanıcı arasında yazıcı paylaşımı ile sahip olma masrafının azaltılması. Bir bilgisayar ağından süper-bilgisayar elde etme.

TBIL-106 ÖDEV #8

Page 9: Dağıtık Sistemler / Programlama

Dağıtık sistemlerdeki bilgisayarlar ayrı kıtalar üzerinde, aynı bina veya aynı oda içerisinde bulunabilir. DS’in getirdikleri:

Birlikte ve birbirinden bağımsız çalışan sistemler İşlerini birbirinden bağımsız yaparlar Aynı zamanda program çalıştırır, bütün bir işleme kaynağı gibi görünür, birlikte çalışırlar İşlemler mesaj alışverişiyle anlaşırlar.

Heterojen (çeşitlilik, farklılık): networks, hw, os, PLan Ortak saat yok: Bilgisayarlar saatlerini kısıtlı derecede senkronize edebilir Bağımsız bozulma: biri bozulsa da diğerleri çalışmaya devam eder.

Paralel işlemler Birlikte çalışan bağımsız bileşenler Mesaj gönderme ile iletişim Ortak bellek yok (No shared memory) Kaynak paylaşımı Yazıcı, veri tabanı, diğer servisler Genel sistem durumu belirli değil (No global state) Hiçbir işlem, sistemin genel durumuna dair bir bilgi edinemez Ortak saat yok İşlemler için sadece kısıtlı derecede saat eşitleme mümkün olabilir.

1. Kullanıcılarla kaynakları birleştirmek: Erişim servisleri uygulama çalıştırır Belirli kaynaklar:

Yazıcılar, bilgisayarlar, işleme gücü, veri Neden paylaşım?

Ekonomi İşbirliği, Bilgi değiş-tokuşu (grup çalışması)

Paylaşım problemleri Güvenlik İstenmeyen işbirlikleri

2. Şeffaflık: Kaynaklar ve işlemlerin ağ üzerinde dağıtık olduğu açık değildir 3. Açıklık: Servislerin sentaks ve semantikleri ile ilgili standart kurallar 4. Ölçeklenebilirlik: Daha fazla kullanıcı/kaynak, coğrafya, yönetim 5. Uzun süre bozulmadan çalışma Model Yönü İletişim İletişim nasıl sağlanır – senkron iletişim Mesaj gönderme ve alma ̈Eş zamanlı ̈

TBIL-106 ÖDEV #9

Page 10: Dağıtık Sistemler / Programlama

– asenkron iletişim Gönderme ve alma bağlı değil (Buffer, Kanallar, vb.) Mesajlar sınırlı bir zamanla iletilirler ya da maksimum bir zaman yoktur.

Mesajlar mutlaka bir zamanda iletilirler ya da kayıp vardır. – FIFO ya da not FIFO Bir kanaldan önce gönderilen mesajın önce alınıp alınamayacağının kararı – Noktadan-noktaya veya Yayın(Broadcast) Bir mesaj bir anda sadece bir sürece veya daha fazlasına iletilebilir. – Ne gönderilebilir Sadece değerler, referanslar ve aktif elemanlar(Süreçler) gönderilebilir. Multiprocessor (çok işlemcili) sistemler: DS değil

Shared memory (ortak bellek) Bus-based interconnection network (kablolu bağlantı) Örnek: İki veya daha fazla CPU’lu SMP’ler (symmetric multiprocessor)

Çoklu bilgisayar sistemleri: DS değil No shared memory (ortak bellek yok) Homojen donanım ve yazılım Massively Parallel Processors (MPP)

Tightly coupled high-speed network PC/Workstation clusters

High-speed networks/switches based connection.

TBIL-106 ÖDEV #10

Page 11: Dağıtık Sistemler / Programlama

Internet: birbirine bağlı çeşitli bilgisayar ağları. Uygulamalar iletişimi mesajlarla sağlar Dağıtık sistem kullanıcıları www, email, dosya gönderme gibi servislerden faydalanır

Intranet: bir organizasyon tarafından yönetilen alt ağ. Yerel güvenlik politikasıyla sınırlıdır.

Uydu bağlantısı, fiber-optik kablolar gibi hızlı iletim kapasitesi olan ağ altyapısı ile bağlıdırlar

Kablosuz ağlar Genel internet uygulamaları ve servisleri: Müzik, radyo, TV kanalları, video konferans erişimi için multimedia servisleri, ve çoklu kullanıcı desteği. Internet, çeşitli servisler barındıran birçok farklı bilgisayar türlerinden oluşan büyük bir ağ topluluğudur. Genel bir intranet; Internetin bir alt parçası olup, ayrıca yönetilir ve kaynakların ağ içerisinde paylaşımını destekler (dosya/depolama sistemleri ve yazıcılar)

TBIL-106 ÖDEV #11

Page 12: Dağıtık Sistemler / Programlama

Dağıtık Sistem Ürün Ortamı Sorun ve ÇözümleriOnline kitapçı (World Wide Web üzerinde)

Müşteriler kendi bilgisayarlarıyla sizin bilgisayarınıza (web sunucunuza) bağlanabilir:

Stokunuza bakabilir Sipariş verebilir …

Ya . . . ? Müşteriniz çok farklı bir donanım sistemi kullanıyorsa? (PC, MAC,…) … farklı bir işletim sistemi? (Windows, Unix,…) … farklı bir veri gösterim biçimi? (ASCII, EBCDIC,…) Çeşitlilik (networks, h/w, os, prog lan, impl)

Veya . . . ? İşinizi ve bilgisayarlarınızı Güney’e taşımak isterseniz (hava şartlarından dolayı)? Müşterileriniz Güney’e taşınırsa (daha muhtemel)? Konum / Taşınma / Dağılım şeffaflığı

Ya . . . ? İki müşteri aynı ürünü aynı anda sipariş verirse? Concurrency (Aynı anda kullanım)

Veya . . . ? Stok bilginizi tutan veri tabanı çökerse? Sipariş esnasında müşterinizin bilgisayarı çökerse? Fault tolerance (Hata payı)

Ya . . . ? Birileri veri çalmak için sisteminize girmeye çalışırsa? … bilgi çekerse? … müşteriniz sipariş verir de, sonradan vermedim diyerek ürün teslimini reddederse?

TBIL-106 ÖDEV #12

Page 13: Dağıtık Sistemler / Programlama

Security (Güvenlik) Veya . . . ?

Öyle başarılı olursunuz da, milyonlarca insan aynı anda online mağazanızı aynı anda ziyaret ederse? Scalability (Ölçeklenebilirlik)

Sistem kurulurken … Bütün yazılımı tek başınıza mı yazmak istersiniz (network, database,…)? Güncellemeler, yeni teknoloji takibi? Reuse (tekrar kullanılabilirlik) ve Openness (açıklık) (Standartlar)

Heterogeneity (Çeşitlilik) Çeşitli bileşenler birbiriyle uyumlu şekilde çalışabilmeli

Distribution transparency (Dağınıklık şeffaflığı) Dağınıklığın varlığı mümkün oldukça kullanıcıdan saklanmalı

Fault tolerance (Hata payı) Bir bileşenin bozulması (kısmi bozukluk) tüm sistemin bozulmasına sebep olmamalı

Scalability (Ölçeklenebilirlik) Sistem, artan kullanıcı sayısına rağmen verimli çalışmaya devam edebilmeli Sisteme yeni kaynaklar eklenerek performans artış ı sağlanabilmeli.

TBIL-106 ÖDEV #13

Page 14: Dağıtık Sistemler / Programlama

Dağıtık sistemler çeşitli bileşenler birbiriyle uyumlu şekilde çalışabilmeli

İşletim sistemleri Donanım mimarileri İletişim mimarileri Programlama dilleri Yazılım arayüzleri Güvenlik ölçüleri Bilgi gösterimleri

Şeffaf DS: Kullanıcılara, tek bir bilgisayar sistemi gibi görünür, bağımsız bilgisayarlar topluluğu olarak değil. Şeffaflık çeşitleri

Erişim: Veri gösterimindeki farklar, ve kaynaklara nasıl erişildiği gizlenir. Yerel ve uzak kaynaklara erişim aynı işlemlerle sağlanır. Örn., Network File Systems (Ağ Dosya Sistemleri) Konum: Bir kaynağın bulunduğu yer gizlenir. Kaynaklara, fiziksel konumları bilinmeden erişilir. Alan adının (domain name) makine adresinden ayrımı gibi. Migration (Taşınma): Kaynağın yer değiştirme durumu gizlenir Relocation (Yeniden konumlandırma): Kaynağın, kullanım esnasında, yer değiştirme durumu gizlenir Migration / relocation şeffaflığı, bir sistemdeki kullanıcıların veya uygulamaların işlemlerini etkilemeden taşınabilmelerine olanak sağlar.

Çalışma esnasında (runtime) bir isim sunucusundan (name server) bir başkasına geçiş yapma Bir vekil veya işlemin (agent/process) bir düğümden (node) diğerine taşınması gibi

Şeffaflık Her zaman istenmez: Farklı kıtalarda bulunan kullanıcılar (context-aware), time-zone (zaman-dilimi), hız Her zaman mümkün olmaz: Hataların gizlenmesi (bir bilgisayar yavaş mı, bozuk mu)

Yüksek şeffaflık ile performans arasındaki denge Replication (Kopyalama): Bir kaynağın birden fazla yerde yedeğinin (kopyasının) tutulduğu gizlenir. Kopyalanmış kaynaklara, sadece bir kopya varmış gibi erişilir. Güvenilirlik ve performans kopyalarla artırılır, ama kullanıcıların veya uygulama geliştiricilerinin kopyalardan haberi olmaz.

TBIL-106 ÖDEV #14

Page 15: Dağıtık Sistemler / Programlama

Concurrency (Birlikte çalışma): Bir kaynağın birden fazla kullanıcı tarafından paylaşıldığı gizlenir. Bir işlem, diğer bazı işlemlerin de aynı kaynaklara erişmekte olduğunun farkında olmamalıdır Failure (Bozulma): Bir kaynağın bozulma veya düzelme durumu gizlenir. Bozulmalar olsa da, görevler tamamlanabilir. Mesaj iletim tekrarı, bir ağ sunucusu düğümünün bozukluğu, web sitesini çökertmemeli. Persistence (Süreklilik): Bir yazılım kaynağının bellekte veya disk üzerinde olma durumu gizlenir.

Performans: Yük değişimine göre performansı artırmak için sistemin tekrar yapılandırılması sağlanır. Örn., bileşenlerin dinamik olarak eklenip kaldırılması. Kullanıcı sayısı artınca, doğrusal yapılardan basamaklı (hierarchical) yapılara geçilmesi. Scaling (Ölçekleme): Sistemin ve uygulamaların, sistem yapısında veya uygulama algoritmalarında değişikliğe gerek olmadan genişletilmesine olanak sağlar.

TBIL-106 ÖDEV #15

Page 16: Dağıtık Sistemler / Programlama

Ağ şeffaflığı: erişim + konum şeffaflıkları Hata algılama

Checksums (sağlama), heartbeat (kalp atışı), …

Hata maskeleme Bozuk mesajların tekrar gönderimi, fazlalık, …

Hataya müsamaha Exception handling (istisna işleme), timeouts (zaman aşımları),…

Hatadan kurtulma Rollback (geri sarma) mekanizmaları,…

TBIL-106 ÖDEV #16

Page 17: Dağıtık Sistemler / Programlama

Sistem Verimliliği ve ÖlçeklenebilirlikSistem, küçük bir Intranet’ten Internet’e kadar uzanan birçok farklı ölçekte verimli olarak çalışabilmeli.

Kaynak ve kullanıcı sayısında belirgin bir artış olsa da etkili olarak çalışmaya devam edebilmeli.

Zamanla her şey çoğalır, kullanıcılar artar, bilgisayar sayısı büyür, veri miktarı fazlalaşır, ...

Sistemler nasıl ölçeklenebilir olur? Sadece donanım eklemekle mümkün değil. Bir makinenin 20 kullanıcıya hizmet vermesi, iki makinenin 40 kullanıcıya hizmet vereceği anlamına gelmez. Resource (Kaynak):

Yalnız bir kullanıcı kısıtlı verim Çoklu istemci talepleri: birlikte erişim

Paylaşılan kaynaklara çoklu erişimin desteklenip yönetilmesi:

Birlikte çalışılan ortamdaki bir nesnenin güvende olması için işlemleri, verileri tutarlı kalacak şekilde, senkronize olmalı (eşitlenmeli) (örn. Banka hesabı). Bu, dağıtık olmayan sistemlerde semafor kullanımından daha zordur.

Availability (Ulaşılabilirlik) Kaynak erişim yollarındaki çakışmalara karşı koruma. Örn. Servis saldırılarının reddi

Reddedilememe Bir bilginin gönderilme / alınma delili Örn. Dijital imza

Encryption (Şifreleme) Örn. Blowfish, RSA

Authentication (Doğrulama) Örn. password (şifre), açık anahtarla yetkilendirme

TBIL-106 ÖDEV #17

Page 18: Dağıtık Sistemler / Programlama

Authorization (Yetkilendirme) Örn. erişim kontrol listeleri

Dağıtık sistemler her yerde bulunur. Internet, dünyanın her bir yanındaki kullanıcıların, her bir yandaki servislere erişimlerini sağlar. Kaynak paylaşımı dağıtık sistem kurmaya teşvik eden etmenlerin başta gelenidir. DS kurulumu birçok zorluğu beraberinde getirir:

Çeşitlilik, Açıklık, Güvenlik, Ölçeklenebilirlik, Hata denetimi, Birlikte çalışma, Şeffaflık.

Dağıtık sistemler küreselleşmeyi sağlar: Topluluk (Sanal takımlar, kuruluşlar, sosyal ağlar) Science (e-Science) (Bilim) Business (e-Bussiness) (İş)

TBIL-106 ÖDEV #18

Page 19: Dağıtık Sistemler / Programlama

Uzak Sunucu Yöntemini Çağırmak İçin Gerekli Adımlar Uzak programlama ile sunucu katmanındaki bileşene ait bir yöntemi veya kısaca uzak sunucu yöntemini çağırmak için aşağıdaki adımlar izlenir: 1. Keşif (discovery): Sunucunun ağdaki adresinin belirlenmesi işlemidir. 2. Müzakere (negotiation): İstemci ile sunucunun, bir sözleşme (conract) üzerinden, nasıl iletişim yapacağı konusunda anlaşmaya varmasıdır. 3. Uzak işlevin çağrılması (invocation): Sunucu işlevlerinin uzaktan çağrılıp, çalıştırılması işlemidir. Bu işlem çağırma (calling) olarak da adlandırılır. Bu adımlar izlenirken karşılaşılan güçlükler aşağıda sıralanmıştır; 1. Sunucudaki nesnenin referansını elde etme, 2. Nesne yaratma (instantiation) ve ömür (lifetime) yönetimi, 3. Ağ üzerinde veriler bit bit veya bayt bayt aktarılır. Bu nedenle nesneye dayalı yöntemlerin bayt akışı (byte stream) kullanarak çağırılmasının yaratacağı problemler, 4. Çok kullanıcılı yazılımlarda güvenlik, 5. Güvenilmez ağ bağlantılarına (unreliable network connections) karşı önlemler, 6. Zaman uyumsuz (asynchronous) işlemler.

$ Yukarıda bahsedilen 3. madde üzerinde durmak gerekir. Sunucu bileşenleri nesne olarak tasarlandıklarından, nesneye dayalı yöntemleri (method) çağırmak için internet üzerinde bilgi iletişimi teknolojisi olarak bayt akışı (byte stream) kullanılır. Bunu bir web servisinden yararlanacak A ve B gibi iki uygulama ile açıklayalım; 1. A uygulamasının web servisinden yaptığı istekleri B uygulaması açığa çıkarabilir. 2. A uygulamasının isteklerinin biriktiği protokol yığını (protocol stack) parçalara bölünerek düşük düzey veri paketleri olarak, byte akışı üzerinden, servise gönderilir. Bu durumda B uygulaması sözkonusu paketleri tersine kullarak çağrılan işlevi açığa çıkarabilir. Uzak programlama yapılırken bu problemleri bertaraf edecek önlemler alınmalıdır.

TBIL-106 ÖDEV #19

Page 20: Dağıtık Sistemler / Programlama

Günümüzde yazılım geliştirilen tüm platformlar TCP (Transmission Control Protocol) protokolünü desteklemektedir. Bu nedenle yazılımcılar genellikle bu protokolü kullanarak uzak programlama yaparlar. Dağıtık programlamayı sağlayan bütün teknolojilerin temelinde Frank Buschmann tarafından 1996 yılında geliştirilen Simsar (broker pattern) adlı çözüm örüntüsü yatar. Bu nedenle uzak programlama yapacak programcıların bu örüntüyü mutlaka bilmesi gerekir.

TBIL-106 ÖDEV #20

Page 21: Dağıtık Sistemler / Programlama

MPI (Message Passing Interface) Mesaj Geçiş Arayüzü Bir grup akademisyen ve çeşitli şirketlerden katılımcılar tarafından Yaygın kullanım ve Taşınabilirlik amaçlanarak oluşturulan bir kütüphane standardıdır. Sadece rutinleri belirler, implementasyonla alakası yoktur. Oldukça fazla bedava ve de özgür implementasyonu mevcut Sürüm 1'de sadece statik süreç oluşturma vardı Sürüm 2'de dinamik olarak da kullanılabilmektedir.

MPI - Örnek int main (int argc, char *argv[]) { MPI_Init(&argc, &argv); . . MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank == 0) master(); else slave(); . . MPI_Finalize(); }

TBIL-106 ÖDEV #21

Page 22: Dağıtık Sistemler / Programlama

MPI KOMUTLARININ KISA TANIMLARI

MPI – Diğer Rutinler MPI_Send(buf, count, datatype, dest, tag, comm) Bloke eden gönder rutini MPI_Recv(buf, count, datatype, src, tag, comm, status) Bloke eden alma rutini MPI_Isend (...) / MPI_Irecv(...) - bloke etmeyen gönder/al MPI_Wait() ve MPI_Test() ile denetlenebilirler MPI_Bcast() / MPI_Gather() / MPI_Scatter() MPI_Reduce() - MPI_Gather gibi ama bir işlem yaparak alır MPI_Barrier() - Grup senkronizasyonu * MPI_SendRecv() - İkili senkronizasyon

TBIL-106 ÖDEV #22

Page 23: Dağıtık Sistemler / Programlama

MPI – Örnek program #include “mpi.h” #include <stdio.h> #include <math.h> #define MAXSIZE 1000 void main(int argc, char **argv) { int myid, numprocs; int data[MAXSIZE], i, x, low, high, myresult, result; char fn[255]; char *fp; M P I _ I n i t ( & a r g c , & a r g v ) ; M P I _ C o m m _ s i z e ( M P I _ C O M M _ W O R L D , & n u m p r o c s ) ; MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { /* Open input file and initialize data */ strcpy(fn,getenv(“HOME”)); strcat(fn,”/MPI/rand_data.txt”); if ((fp = fopen(fn,”r”)) == NULL) { printf(“Can’t open the input file: %s\n\n”, fn); exit(1); } for(i = 0; i < MAXSIZE; i++) fscanf(fp,”%d”, &data[i]); MPI_Bcast(data, MAXSIZE, MPI_INT, 0, MPI_COMM_WORLD); /* broadcast data */ x = MAXSIZE/numprocs; /* Add my portion Of data */ low = myid * x; high = low + x; myresult = 0; for(i = low; i < high; i++) myresult += data[i]; printf(“I got %d from %d\n”, myresult, myid); /* Compute global sum */ MPI_Reduce(&myresult, &result, 1, MPI_INT, MPI_SUM, 0,

TBIL-106 ÖDEV #23

Page 24: Dağıtık Sistemler / Programlama

MPI_COMM_WORLD); if (myid == 0) printf(“The sum is %d.\n”, result); MPI_Finalize(); }

MPI – Derleme & Çalıştırma A. ssh / rsh hazırlanır B. Hesaplamada kullanılacak bilgisayarların listesi (hostfile) hazırlanır C. mpicc ile programlar derlenir D. mpirun ile çalıştırılır

TBIL-106 ÖDEV #24

Page 25: Dağıtık Sistemler / Programlama

3 Kaynaklar [1] Distributed Systems Concepts and Design, Coulouris, Dollimore, Kindberg [2] Computer Networks, Tanenbaum [3] Authentication in Distributed Systems:Theory and Practice, Lampson, Abadi, Burrows, Wobber, Digital Equipment Corporation [4] The Protection of Information in Computer Systems, Saltzer and Schroder, IEEE Invited Paper [5] Geist A, Beguelin A, Dongarra J, Jiang W, Manchek R, Sunderam V. PVM 3 User’s Guide and Reference Manual. Oak Ridge National Labs. September 1994.. [6] Özmen A. A Minimal Overhead Instrumentation System. Proceedings of the Fifteenth International Symposium on Computer and Information Sciences (ISCIS XV). 2000;102–110. [7]MPI: Complete Reference http://www.csd.uoc.gr/~hy555/mpi/mpi_complete_reference.pdf

TBIL-106 ÖDEV #25


Top Related