Interprocess Communication
Sebuah proses dikatakan independent apabila tidak memengaruhi ataupun dipengaruhi oleh
pengeksekusian proses lain.
Sebuah proses dikatakan cooperating apabila proses tersebut memengaruhi ataupun
dipengaruhi oleh pengeksekusian proses lain.
Alasan untuk mengembangkan sebuah environment yang memperbolehkan adanya cooperation
proses, antara lain:
o Pembagian informasi: apabila beberapa user membutuhkan bagian informasi yang sama
maka harus disediakan environtment yang mengizinkan akses secara terus menerus
kepada informasi yang diperlukan.
o Kecepatan komputasi: Jika diperlukan sebagaian task utuk berjalan dengan cepat, maka
harus dibagi lagi ke dalam beberapa subtask.
o Modularity / Modularitas: Untuk membangun sistem dengan model modular, dengan
membagi sistem menjadi beberapa proses atau thread.
o Kenyamanan
Dalam praktiknya, Cooperating process membutuhkan mekanisme Interprocess Communication
(IPC), untuk bertukar data dan information.
Adapun model komunikasi yang umumnya digunakan antara lain:
o Message Passing
sangat berguna untuk bertukar data dalam jumlah kecil, karena tidak ada
masalah yang ditimbulkan
mudah diimplementasikan dalam distributed system
pengimplementasiannya menggunakan system call
mengkonsumsi waktu lebih banyak
lebih baik daripada shared memory pada praktiknya.
o Shared Memory
lebih cepat daripada message passing
system call hanya dibutuhkan untuk membuat wilayah shared-memory
ketika wilayah untuk shared-memory telah dibuat, semua akses yang ada
diperlakukan selayaknya rutin memori akses, tidak diperlukan bantuan kernel
terdapat masalah koherensi cache, karena data yang dibagikan berpindah dalam
beberapa cache.
Shared Memory
Sebagian memori yang akan digunakan oleh cooperating processes dibuat terlebih dahulu.
Proses dapat bertukar informasi di antara sesama cooperating process dengan membaca dan
menulis data pada memori tersebut.
Dalam shared-memory, perlu ditambahkan buffer. Adapun dua tipe buffer, antara lain:
o unbounded buffer
o bounded buffer
IPC Message Passing
Komunikasi dari model ini dilakukan dengan bertukar pesan antar cooperating processes
Menggunakan minimal dua operasi umum, yaitu:
o send (message)
o receive (message)
communication link harus ada di antara dua proses yang ingin berkomunikasi. Beberapa cara
mengimplementasikan link:
o Direct or indirect communication
o Synchronous or asynchronous communication
o Automatic or explicit communication
o Pengiriman berdasarkan salinan atau referensi
o Pesan berukuran pasti ataupun dalam bentuk variabel
Direct Communication
Tiap proses harus memberi nama secara jelas penerima atau pengirim dalam komunikasinya.
Bentuk symmetry addressing:
o send (P, message)
o receive (Q, message)
Link komunikasi dalam hal ini, dianggap sebagai berikut:
o Sebuah link secara otomatis dibuat di antara tiap pasang proses yang ingin
berkomunikasi
o Sebuah link dikaitkan antara tepat dua proses
o Di antara tiap pasang proses, terdapat tepat satu link.
Bentuk asymmetry addressing:
o send (P, message)
o receive (id, message) -menerima semua pesan dari semua proses. Variabel id diatur
sebagai nama dari proses yang mengirim
Indirect Communication
Pesan dikirimkan dan atau diterima dari sebuah mailbox, atau port. Sebuah proses dapat
berkomunikasi dengan proses lainnya lewat beberapa mailbox yang berbeda, namun dua proses
dapat berkomunikasi hanya jika mereka memiliki mailbox yang digunakan bersama.
Bentuk:
o send (A, message) -mengirim ke mailbox A
o receive (A, message) - menerima dari mailbox A
Link komunikasi dalam hal ini, dianggap sebagai berikut:
o Sebuah link dibuat antara sepasang proses hanya jika keduanya memiliki mailbox yang
digunakan bersama
o Sebuah link mungkin dikaitkan dengan lebih dari dua proses
o Di antara tiap pasang proses yang ingin berkomunikasi, mungkin terdapat beberapa link
yang berbeda, dengan tiap linknya terhubung dalam satu mailbox.
Sebuah mailbox dapat dimiliki oleh sebuah proses atau sistem operasi. Jika dimiliki oleh sebuah
proses, maka bisa dibedakan mana pemilik dan mana yang hanya memakainya.
Ketika sebuah proses pemilik mailbox diterminasi, maka mailbox juga akan menghilang.
Sedangkan mailbox yang dimiliki OS tidak bergantung pada apapun.
Sistem operasi harus memiliki mekanisme yang memperbolehkan proses untuk melakukan hal
berikut:
o membuat mailbox baru
o mengirim dan menerima pesan melalui mailbox
o menghapus mailbox
Sebuah proses yang membuat sebuah mailbox baru secara default akan menjadi pemiliknya.
Pesan yang ada dalam mailbox hanya bisa diterima oleh si pemiliknya.
Synchronization (Blocking or Nonblocking atau Synchronous and Asynchronous)
Adapun konsepnya ialah:
o Blocking send, proses pengiriman diblokir hingga pesan diterima oleh proses penerima
atau oleh mailbox
o Nonblocking send, proses pengiriman mengirim pesan dan melanjutkan operasi
o Blocking receive, pengirim memblokir hingga sebuah pesan tersedia
o Nonblocking receive, pengirim mengambil pesan apapun yang datang.
Buffering
Pada dasarnya, pengimplementasian temporary queue, dibagi menjadi 3 cara, antara lain:
o Zero Capacity, besar maksimal dari queue yaitu 0, link tersebut tidak bisa memiliki
message waiting. Pengirim harus memblok sampai penerima menerima pesan
o Bounded Capacity, jika antrean tidak penuh ketika pesan baru terkirim, pesan diletakkan
dalam queue, dan pengirim dapat melanjutkan pengeksekusian tanpa harus menunggu.
Jika antrean penuh, pengirim harus memblok sampai ruang dalam queue kosong.
o Unbounded Capacity, semua pesan dapat menunggu dalam queue, pengirim tidak
pernah diblok.