Distributed System
Genap 2011/2012
Number three
Komunikasi Antar Proses
Interprocess Communication (IPC) Dahlia Widhyaestoeti, S.Kom
[email protected] 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 – send(A, message) • Kirim message ke dalam mailbox A
– receive(A, message) • Terima message dari dalam mailbox A
P
A
Q
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 – P1, P2, and P3 share mailbox A. – P1, sends; P2 dan P3 receive. P1 – 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
P2 A P3
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