Distributed System Genap 2011/2012 Number three Komunikasi Antar Proses Interprocess Communication (IPC) Dahlia Widhyaestoeti, S.Kom dahlia.widhyaestoeti@gmail.com dahlia74march.wordpress.com
Komunikasi Antar Proses Interprocess Communication (IPC) Menyediakan mekanisme yang memungkinkan proses-proses berkomunikasi dan mensinkronisasi aksi-aksinya Message System komunikasi tanpa memerlukan penggunaan shared variabel milik proses user
Operasi-operasi IPC Operasi-operasi yang disediakan Send(message) Receive(message) Message dapat berukuran tetap atau variabel Ukuran tetap; implementasi fisik lebih simple, tapi lebih sulit bagi user dalam pemrograman Ukuran variabel; pemrograman lebih mudah tapi implementasi fisik lebih sulit
Communication Link Bila P dan Q hendak berkomunikasi mereka perlu menetapkan suatu communication link di antara mereka lalu melakukan tukar-menukar message melalui send/receive IPC dalam implementasinya memerlukan communication link Secara fisik, contohnya shared memory, hardware bus Secara logic, contohnya logical properties
Implementation Questions How are links established? Can a link be associated with more than two processes? How many links can there be between every pair of communicating processes? What is the capacity of a link? Is the size of a message that the link can accommodate fixed or variable? Is a link unidirectional or bi-directional?
Implementasi Menjawab pertanyaan-pertanyaan : Cara penetapan link Bisa berasosiasi dengan > 2 proses Jumlah link yang ditetapkan antara 2 proses Kapasitas link Ukuran message : tetap atau variabel Arah link : satu arah (unidirectional) atau dua arah (bi-directional) Satu arah : proses hanya send (atau receive) dan hanya satu yang receive
Metodologi Direct vs. Indirect Communication Symmetric vs. Asymmetric Communication Automatic vs. Explicit Buffering Send by Copy vs. Send by Reference Fixed Sized vs. Variabel Sized Message
Direct Communication Proses-proses harus menyebutkan pasangannya secara eksplisit send(q, message) Q adalah receiver receive(p, message) P adalah sender P Q
Sifat-sifat Communication Link Direct Comm. Link ditetapkan secara otomatis Link diasosiasikan dengan pasangan proses yang sedang berkomunikasi tsb Antara sepasang proses hanya bisa ada 1 link Link bisa satu arah tapi biasanya dua arah
Kekurangan Direct Comm. Modularitas terbatas Pengubahan nama proses perlu pengubahan di seluruh call Perlu pemeriksaan jika terdapat nama yang sama
Indirect Communication Message-message dikirim dan diterima melalui suatu mailbox (juga disebut port) Masing-masing mailbox memiliki id yang unik Proses-proses hanya dapat berkomunikasi jika mereka menshare mailbox P A Q send(a, message) Kirim message ke dalam mailbox A receive(a, message) Terima message dari dalam mailbox A
Sifat-sifat Communication Link Indirect Comm. Link ditetapkan saat dua proses menshare suatu mailbox Link dapat diasosiasikan dengan sejumlah proses Setiap pasang proses bisa men-share beberapa link Link bisa satu arah atau dua arah
Operasi-operasi Indirect Comm. Proses memulai komunikasi dengan mencreate mailbox Komunikasi berlangsung dengan pemanggilan perintah send & receive message melalui mailbox tersebut Saat proses hendak exit maka proses men-destroy mailbox
Masalah pada Mailbox Sharing Mailbox sharing P 1, P 2, and P 3 share mailbox A. P 1, sends; P 2 dan P 3 receive. Siapa yang mendapatkan message? Solusi Batasi link diasosiasikan hanya untuk max 2 proses Hanya mengijinkan satu proses setiap saat yang meng-eksekusi operasi receive Sistem memilih siapa receiver-nya Sender menyebutkan siapa receivernya P 1 A P 2 P 3
Sinkronisasi Message passing dapat dibedakan menjadi : blocking non-blocking Blocking adalah synchronous Non-blocking adalah asynchronous Primitif send and receive dapat blocking or non-blocking.
Buffering untuk Link 3 kemungkinan cara implementasi Zero capacity tidak ada buffer Sender harus menunggu sampai muncul receiver dan sebaliknya (sinkronisasi - rendezvous) Bounded capacity bisa berisi max n message Sender harus menunggu jika penuh Unbounded capacity tak terbatas Sender tidak pernah menunggu
Komunikasi Client-Server Sockets Remote Procedure Calls Remote Method Invocation (Java)
Socket Socket didefinisikan sebagai suatu endpoint for communication. Sebuah programming interface ke OS yang memungkinkan proses untuk saling berkomunikasi ke proses lainya Eksekusi TCP/UDP berlangsung di level kernel, socket bertindak sebagai jembatan ke user space. Merupakan gabungan IP address dan port Socket 161.25.19.8:1625 menunjukkan bahwa port 1625 pada host 161.25.19.8 Komunikasi terdiri dari pasangan socket.
Komunikasi antar Socket Contoh standard port : TELNET menggunakan port 23 FTP menggunakan port 21 HTTP server menggunakan port 80
Ilustrasi Socket
Komunikasi Socket
Detail Komunikasi Socket
Remote Procedure Calls (RPC) (1) Remote Procedure Call (RPC) membuat abstraksi pemanggilan prosedur antara proses dalam sistem jaringan (network) Stubs client-side proxy untuk procedure aktual pada server Client-side stub mengalokasikan server dan mengirimkan marshalls parameter Server-side stub menerima message, membuka parameter marshall, dan menjalankan procedure pada server
Mekanisme RPC
Remote Procedure Calls (RPC) (2) Dalam sistem single-processor : message send = pemanggilan fungsi reply = function return sender mengaktifkan receiver dengan message sebagai argument, dan sender wait untuk mendapatkan reply dari function return Skema RPC ini dilakukan juga pada proses-proses yang running di komputer berlainan
Mekanisme IPC Sebelum mekanisme IPC digunakan, data harus di-packaging ke dalam format transimisi. Langkah ini dinamakan marshalling Proxy bertanggung jawab untuk marshalling data, kemudian mengirimkan data dan meminta instans dari komponen (remote) Stub menerima request, unmarshall data, dan memanggil method yang diminta. Kemudian proses mengembalikan nilai yang diinginkan Contoh : COM (Component Object Model) - Microsoft, CORBA (Common Object Request Broker Architecture - OMG)
Contoh RPC
Kelebihan RPC Relatif mudah digunakan : Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dpt berkonsentrasi pd software logic, tidak perlu memikirkan low level details seperti socket, marshalling & unmarshalling. Relatively portable : S/W developed using RPC is easier to be ported compared to sockets. Robust : Sejak th 1980-an RPC telah banyak digunakan dalam pengembangan mission-critical application yg memerlukan scalability, fault tolerance, & reliability.
Kekurangan RPC Tidak fleksibel terhadap perubahan : Static relationship between client & server at run-time. Berdasarkan prosedural /structured programming yang sudah ketinggalan jaman dibandingkan OOP.
Number three Komunikasi Antar Proses Interprocess Communication (IPC) Sumber Ida Nurhaida, ST., MT. DISTRIBUTED SYSTEMS Second Edition, Andrew S.Tanenbaum, Maarten Van Steen