Mengenal Inter Process Communication (IPC)

Post image

Process merupakan entity yang issolated dan tidak dapat melakukan pertukaran informasi maupun data. Cara untuk berkomunikasi antar-process bisa menggunakan pendekatan Inter-Process Communitaion (IPC).

Apa itu IPC?

Sederhananya IPC adalah mekanisme yang digunakan untuk bertukar data antara thread satu ke thread lain baik dalam process atau program yang sama, maupun process atau program yang berbeda.

Setiap protokol IPC memiliki kelebihan dan kekurangannya masing-masing, sehingga suatu program bisa saja menggunakan beberapa metode IPC.


Metode dalam IPC

IPC

Beberapa cara dapat kita gunakan untuk mengimplementasikan IPC

Shared Memory

Beberapa proses dapat berkomunikasi menggunakan memori bersama, dimana suatu process dapat membuat perubahan pada satu waktu dan kemudian process lain dapat melihat perubahan tersebut. Jenis memori ini perlu dilindungai satu sama lain dengan menyingkronkan akses ke semua process.

Shared Memory

Karena banyak process dapat membaca dan menulis variabel dan data bersama, sangat penting menjaga konsistensi data. Jika tidak kita akan mendapatkan hasil data yang rawan kesalahan.

Untuk mencegah hal ini terjadi, beberapa cara umum dapat digunakan:

  1. Semaphore: variabel yang mengelola akses beberapa process ke shared resource.
  2. Mutual Exclusion (mutex): adalah istilah sebuah situasi dimana hanya satu process atau thread yang dapat memasuki bagian terpenting untuk menghindari race condition.

Message Passing

Message passing adalah proses untuk berkomunikasi dan singkronisasi menggunakan penyampaian pesan. Berbeda dengan shared memory, message passing menggunakan mekanisme IPC berupa:

  1. Send (message) untuk mengirim message dengan size yang fixed
  2. Received (message) untuk menerima message

Metode ini dapat digunakan pada environment yang terdistribusi dalam sebuah network.

Message passing memiliki kombinasi desain yang berbeda, penerapannya disesuaikan dengan case yang dihadapi.

Direct vs Indirect

Salah satu pilihan yang harus diambil adalah apakah pengiriman pesan bersifat langsung (direct) atau tidak langsung (indirect). Pada metode direct, identitas penerima diketahui dan pesan dikirim langsung ke process penerima. Contohnya apabila terdapat dua process yang saling bertukar data.

Sedangkan indirect, pesan dikirimkan ke dalam mailbox (atau port), yang terikat ke process penerima. Beberapa process dapat terkait dalam satu mailbox. Process pengirim tidak tahu dan tidak peduli process mana yang akan menerima pesannya.

Blocking vs Non-Blocking

Pemilihan blocking dan non-blocking bergantung pada operasinya. Fungsi send akan menjadi blocking apabila sender menunggu hingga message diterima oleh receiver, dan receiver menjadi blocking apabila receiver menunggu hingga message diterima (received).

Buffering

Keputusan lain yang harus diambil adalah ukuran antrian penerima. Terdapat tiga pilihan:

  1. Zero size queue: pengirim harus menunggu hingga penerima siap menerima pesan
  2. Bounded queue: pengirim dapat mengirimkan ke queue selama queue tidak penuh. Apabila penuh maka pengirim harus menunggu hingga salah satu queue kosong.
  3. Unbounded queue: Pengirim tidak pernah menunggu, pemilihan ini harus hati-hati karena resource yang terbatas. Penjalankan banyak item di queue memiliki konsekuensi yang besar.

Penerapan Message Passing

Message passing banyak diimplementasikan dalam berbagai desain. Antara lain message queue, pipes dan fifo.

Message Queue

Message queue menyimpan pesan berupa linked list ke dalam kernel di OS. Setiap message dapat diidentifikasi menggunakan pengidentifikasi message queue.

Metode ini menggunakan mekanisme full-duplex.

Message Queue

Pipes

Pipe merupakan metode komunikasi satu arah (half-duplex), biasanya digunakan pada dua process yang saling berkaitan. Untuk mencapai full-duplex diperlukan pipa lain.

Analoginya seperti kita mengisi air dari keran ke dalam sebuah ember. Proses pengisian ini adalah menulis ke dalam pipa dan ember membaca dari pipa.

Pipes

Fifo

Fifo merupakan komunikasi antara dua process yang tidak berhubungan menggunakan metode full-duplex, yang berarti process pertama dapat berkomunikasi dengan process kedua maupun sebaliknya.

Shared Memory vs Message Passing

Dari beberapa penjelasan di atas, terdapat beberapa kelebihan dan kekurangan antara dua metode tersebut.

  1. Shared memory lebih cepat secara waktu eksekusi dibandingkan message passing
  2. Shared memory tidak menggunakan kernel untuk melakukan komunikasi, sedangkan message passing menggunakan kernel
  3. Shared memory membuat beberapa process melakukan share resource yang dibutuhkan, sedangkan message passing melakukan copy data
  4. Shared memory dapat diimplementasikan dalam satu environment yang sama, sedangkan message passing dapat diimplementasikan pada environment terdistribusi.
comments powered by Disqus

You May Also Like