Anda di halaman 1dari 36

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

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

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