Komunikasi antar Proses

16
1 Komunikasi antar Proses

description

Komunikasi antar Proses. Pendahuluan. Sistem terdistribusi sangat bergantung pada pertukaran data dan sinkronisasi diantara proses otonom yang terdistribusi. Komunikasi antar proses tersebut dikenal dengan nama IPC ( Inter Proses Communication ) - PowerPoint PPT Presentation

Transcript of Komunikasi antar Proses

Page 1: Komunikasi antar Proses

1

Komunikasi antar Proses

Page 2: Komunikasi antar Proses

2

Pendahuluan Sistem terdistribusi sangat bergantung pada pertukaran data

dan sinkronisasi diantara proses otonom yang terdistribusi. Komunikasi antar proses tersebut dikenal dengan nama IPC

(Inter Proses Communication) IPC dapat dilakukan dengan menerapkan beberapa teknik

berikut : Semaphore, suatu struktur data yang di share beberapa

proses untuk operasi sinkronisasi pemakaian sesumber secara bersama-sama

Shared Memory, memungkinkan beberapa proses untuk membagi bersama virtual memory.

RPC (Remote Procedure Call), memungkinkan sebuah proses client memanggil suatu subrutin beserta parameternya berdasar interface yang disediakan oleh proses server

Message Passing, komunikasi antar proses di dasarkan pada pertukaran suatu format message dengan menggunakan suatu API tertentu.

Page 3: Komunikasi antar Proses

3

Karakteristik IPC Pertukaran pesan antar sepasang proses dapat didukung

dengan dua operasi komunikasi pesan : send dan receive. Sebuah proses mengirimkan sebuah pesan (sederetan

byte) ke tujuan dan proses lain pada tujuan menerima pesan

Pengiriman Pesan send expression_list to destination_designator

expression_list di evaluasi Menambahkan pesan baru ke destination_designator

receive variable_list from source_designator ● Menerima pesan ke variable_list ● Menghapus pesan yang diterima

Aktifitas IPC : komunikasi data dari proses pengirim ke proses penerima Sinkronisasi antar sepasang proses tersebut

Pada sisi penerima terdapat tumpukan antrian pesan

Page 4: Komunikasi antar Proses

4

Karakteristik IPC Sinkronisasi

Diperlukan karena adanya perbedaan kecepatan eksekusi proses pada dua komputer yang berbeda

Diperlukan oleh suatu proses mempengaruhi komputasi di proses lainnya

Komunikasi Synchronous, proses pengirim dan penerima melakukan sinkronisasi untuk tiap pesan yang dipertukarkan. Operasi send dan receive adalah operasi blocking.

Komunikasi Asynchronous, operasi send adalah operasi non-blocking, sedangkan operasi receive dapat blocking ataupun non-blocking.

Page 5: Komunikasi antar Proses

5

Karakteristik IPC Tujuan Pengiriman Pesan

Pada protokol internet, pesan dikirim ke (alamat internet, port).

Sebuah port dimiliki oleh 1 proses penerima, namun dapat memiliki beberapa proses pengirim.

Setiap proses yang mengetahui angka port, dapat mengirim pesan ke proses tersebut.

Jika proses client menggunakan alamat Internet tetap untuk menunjuk sebuah layanan, maka layanan yang diminta harus berada pada alamat tetap tersebut.

Agar tidak selalu tertuju pada satu alamat tetap saja, maka dapat digunakan pedekatan berikut untuk transparansi lokasi : Name service Location Independent Identifier

Page 6: Komunikasi antar Proses

6

Socket dan Port

Socket dikembangkan dari UNIX BSD, dan saat ini sudah ada pada seluruh UNIX (juga Linux), MS Windows, Mac

Socket Menyediakan endpoint untuk komunikasi antar proses Untuk proses penerima pesan, socket harus di kaitkan dengan

port lokal dan satu alamat Internet komputer client Pesan yang dikirimkan ke suatu alamat Internet dan port tertentu

hanya dapat diterima oleh proses yang socketnya dikaitkan dengan alamat Internet dan port tersebut

Proses mungkin menggunakan socket yang sama untuk pengiriman dan penerimaan

Setiap komputer dapat memiliki 216 port. Sebuah proses dapat membuat beberapa socket untuk menerima

pesan Port yang sama tidak dapat digunakan oleh dua proses yang

berbeda (kecuali IP multicasting)

Page 7: Komunikasi antar Proses

7

Socket dan Port

Nomor Port dibagi dalam 3 kelompok :● Well known port, antara 0 – 1023● Registered Port , antara 1024 – 49151● Dynamic/Private Port, antara 49152 - 65535

Page 8: Komunikasi antar Proses

8

API Java untuk Alamat Internet

Page 9: Komunikasi antar Proses

9

Komunikasi Datagram UDP Mengirim datagram ke penerima Tidak memerlukan ACK atau pengiriman ulang Menggunakan socket Server menyediakan sebuah port untuk pengiriman Menerima pesan dan id pengirim (ip, port) Permasalahan pada UDP :

Ukuran Pesan, proses penerimaan perlu menyediakan sejumlah elemen array untuk menerima sebuah pesan. Jika pesan terlalu besar akan dipotong sesuai ukuran array. Berdasar protokol IP, ukuran paket dapat sampai 64KB, namun biasanya max. 8 KB. Aplikasi yang membutuhkan pengiriman paket yang besar, harus melakukan pemotongan.

Blocking, Socket menyediakan non-blocking send dan blocking receive untuk komunikasi datagram.

Timeout, operasi block untuk receive sangat cocok untuk menunggu permintaan dari client. Namun sangat tidak baik jika terus dalam kondisi blocking pada saat menunggu balasan, maka perlu timeout.

Page 10: Komunikasi antar Proses

10

Komunikasi Datagram UDP Model Kegagalan

Omission Failure Pesan terkadang akan dibuang oleh karena buffer penuh atau ada

kesalahan checksum. Ordering Failure Pesan yang dikirim terkadang tidak sesuai dengan permintaan.

Aplikasi yang menggunakan UDP harus menyediakan sendiri suatu kualitas komunikasi yang diperlukan.

Kapan menggunakan UDP? Jika service dapat menerima kondisi omission failure. Contoh: DNS Untuk mengurangi beban terhadap jaminan bahwa pesan harus

terkirimkan dengan baik : Tidak perlu menyimpan informasi status Tidak perlu transmisi ulang Tidak ada latency pada pengirim (Latency : perlambatan antara waktu

awal transmisi pengirim dan waktu bit pertama diterima oleh penerima.)

Page 11: Komunikasi antar Proses

11

Java UDP

•Java menyediakan• DatagramPacket, untuk memformat informasi menjadi sebuah paket datagram : pesan (array), panjang pesan, alamat proses (IP, port)•DatagramSocket, untuk membentuk socket penghubung dengan proses lain. Beberapa method :

• send dan receive• setSoTimeout• connect

Page 12: Komunikasi antar Proses

12

Contoh UDP Clientimport java.net.*;import java.io.*;public class UDPClient{public static void main(String args[]){// args berisi isi pesan dan hostname tujuantry {

DatagramSocket aSocket = new DatagramSocket(); // buat socketbyte [] m = args[0].getBytes();InetAddress aHost = InetAddress.getByName(args[1]); // DNS lookupint serverPort = 6789;DatagramPacket request =

new DatagramPacket(m, args[0].length(), aHost, serverPort);aSocket.send(request); //kirim nessagebyte[] buffer = new byte[1000];DatagramPacket reply = new DatagramPacket(buffer, buffer.length);aSocket.receive(reply); //tunggu replySystem.out.println("Reply: " + new String(reply.getData()));aSocket.close();

}catch (SocketException e){System.out.println("Socket: " +e.getMessage());}catch (IOException e){System.out.println("IO : " + e.getMessage());}}}

Page 13: Komunikasi antar Proses

13

Contoh UDP Serverimport java.net.*;import java.io.*;public class UDPServer{public static void main(String args[]){

DatagramSocket aSocket = null;try{aSocket = new DatagramSocket(6789);byte[] buffer = new byte[1000];while(true){

DatagramPacket request =new DatagramPacket(buffer, buffer.length);aSocket.receive(request);DatagramPacket reply = new DatagramPacket(request.getData(),request.getLength(), request.getAddress(), request.getPort());aSocket.send(reply);

}}catch (SocketException e){System.out.println("Socket: " +e.getMessage()); }catch (IOException e) {System.out.println("IO: " +e.getMessage());}}finally {if(aSocket != null) aSocket.close();}

}}

Page 14: Komunikasi antar Proses

14

Komunikasi Datagram TCP

Byte stream Baca dan tulis ke stream Connection oriented Permasalahan pada UDP :

Pencocokan Data, dua proses yang berkomunikasi harus sepakat tentang format dan tipe data yang dipertukarkan.

Blocking, Socket menyediakan blocking send dan blocking receive untuk komunikasi stream.

Thread, ketika server menerima sebuah koneksi, biasanya dibuatkan sebuah thread untuk melayani koneksi tersebut, sehingga dapat melayani beberapa client, jika tidak ada thread, pada satu waktu hanya 1 koneksi client yang dapat terlayani

Page 15: Komunikasi antar Proses

15

Komunikasi Datagram TCP Model Kegagalan

Untuk menyediakan komunikasi yang handal, TCP menggunakan checksum untuk pendeteksian error dan sequence number untuk pendeteksian duplikasi data

Untuk menyediakan validitas, TCP menggunakan timeout dan retransmisi terhadap data yang hilang

Ketika hubungan terputus, proses yang menggunakan TCP akan diinformasikan hal tersebut, dengan kelemahan : Proses tidak dapat membedakan antara kegagalan pada jaringan dan

kegagalan proses pasangannya Proses komunikasi tidak dapat memberitahukan apakah pesan

terakhir diterima atau tidak Sehingga dengan TCP pun tidak menjamin kehandalan

pengiriman data Kapan menggunakan TCP?

Kebutuhan pengiriman paket data yang dinamis tanpa harus menyesuaikan dengan ukuran paket TCP

Jika memang dapat menerima operasi blocking

Page 16: Komunikasi antar Proses

16

Aplikasi Client Aplikasi Server

SocketServer Socket

New:

Accept0:

Socketreturn

Request :

Response:

JAVA TCP

Java menyediakan

•Server Socket, menyatakan suatu koneksi TCP yang berfungsi untuk listen yang siap menerima suatu permintaan dari proses lain

•Socket, membuat sebuah stream socket dan koneksi ke suatu nomor port pada sebuah komputer