Jumat, 15 Maret 2019

4.3 Komunikasi Antar Proses (Task)

Munculnya konsep sistem operasi multitasking memungkinkan sejumlah proses aktif bersamaan pada suatu sistem operasi. Proses-proses ini pada hakekatnya saling memengaruhi karena menggunakan prosesor dan memori yang sama. Konsep proses yang memiliki ruang alamat logika yang independent dan terisolasi dari proses lain, merupakan salah satu cara agar perebutan terhadap sumber daya tersebut tidak perlu ditangani langsung oleh pemrogram aplikasi, tapi ditangani oleh sistem operasi dan dibantu dukungan perangkat keras seperti MMU (Memory Management Unit). Sekalipun demikian, ada kalanya proses-proses yang berjalan tersebut saling bekerja sama sehingga sistem operasi harus menyediakan fasilitas komunikasi antar proses (IPC, Inter Process Communication).


Ada 2 macam model komunikasi antar proses yang saling bekerja sama,


yaitu:


1. Model bertukar pesan (message passing)


2. Model berbagai pakai memori (shared memory).

Gambar 4.6 menunjukkan perbedaan kedua model tersebut di atas.




Gambar 4.6 Model komunikasi antar proses


Mekanisme message passing (a) melibatkan intervensi sistem operasi secara langsung. Misalnya proses A hendak menyampaikan suatu pesan M ke proses B maka proses A akan mengirimkan pesannya ke kernel sistem operasi (1), yang kemudian diteruskan ke proses B (2). Perlu dicatat, pesan M harus mengandung informasi alamat tujuan dari pesan tersebut. Hal ini sama halnya jika kita ingin mengirim kartu pos ke orang lain. Pada kartu pos dicantumkan pesan dan alamat tujuannya. Kemudian kita menyampaikan kartu pos tersebut ke kantor pos, dan kemudian pihak kantor pos menyampaikan pesan tersebut ke pihak penerima.


Mekanisme IPC kedua adalah berbagi pakai memori seperti pada Gambar 4.6(b). Mekanisme ini melibatkan sistem operasi pada saat mengalokasi- kan memori ke proses-proses yang akan saling berkomunikasi lewat fasilitas ini. Caranya adalah bagian tertentu dari ruang alamat dua proses tersebut dipetakan ke suatu lokasi memori fisik yang sama sehingga proses-proses tersebut dapat menulis maupun membaca dari lokasi memori ini. Proses A mengirimkan pesan dengan cara menulis pesannya di ruang memori bersama ini. Proses B menerima pesan tersebut dengan membacanya dari ruang memori tersebut. Perhatikan, dari perspektif masing-masing proses, mereka menulis atau membaca ruang alamat mereka sendiri. Pengaksesan ke memori bersama ini umumnya mem- butuhkan sinkronisasi agar tidak terjadi perebutan akses bersamaan yang dapat menyebabkan ketidakkonsistenan data yang diakses.


4.3.1 KOMUNIKASI LANGSUNG VS KOMUNIKASI TIDAK LANGSUNG


Model komunikasi message-passing sendiri dapat dikelompokkan dalam dua bentuk, yaitu:


1. Komunikasi langsung dan


2. Komunikasi tidak langsung.


Pada komunikasi langsung seperti pada Gambar 4.7(a), alamat identitas atau alamat penerima dinyatakan secara eksplisit dalam sintak pengiriman pesan, yaitu:


Send (pesan, proses tujuan)


Sedangkan pada komunikasi tidak langsung seperti pada Gambar 4.7(b). pengiriman dan penerimaan pesan dilakukan mengunakan suatu per- antara yang disebut dengan mailbox ataupun port. Jadi pengirim akan menyampaikan pesan ke mailbox dengan sintak:


Send (pesan, alamat mailbox)


Pada hakekatnya pengirim tidak menentukan secara rinci proses mana yang menjadi tujuan pesan. Setiap proses yang dapat membaca dari mailbox yang digunakan, otomatis dapat menjadi pihak penerima pesan. Penerima mengambil pesan dari mailbox dengan sintak:


Receive (pesan, alamat mailbox)



Gambar 4.7. Komunikasi langsung (a) dan komunikasi tidak langsung (b)


Ciri-ciri dari komunikasi langsung antara lain:


1. Terdapat sambungan yang dapat bekerja secara otomatis antara proses proses yang ingin berkomunikasi


2. Tiap sambungan menghubungkan tepat dua proses, antar setiap pasangan proses terdapat tepat satu jalur sambungan


3. Sambungan dapat bersifat satu arah (unidirectional), namun biasanya


bersifat dua arah (bidirectional).


Adapun ciri-ciri komunikasi tidak langsung antara lain:


1. Komunikasi antar dua proses dapat terjadi jika dua-duanya memiliki akses ke suatu mailbox yang sama.


2. Tiap mailbox dapat menghubungkan lebih dari dua proses, dan dimungkinkan terdapat lebih dari satu sambungan untuk setiap pasangan proses yang hendak berkomunikasi.setiap sambungan akan menggunakan suatu mailbox seperti yang diperlihatkan pada Gambar 4.8


3. Sambungan dapat bersifat satu arah, tetapi umumnya bersifat dua arah.


Gambar 4.8 menunjukkan komunikasi tak langsung antara proses-proses dengan menggunakan lebih dari satu mailbox. Dari gambar terlihat ada tiga sambungan (link) komunikasi tak langsung yang mungkin dilakukan.

Pertama adalah antara P1 dan P3 lewat M2 dan komunikasinya bersifat bidirectional. Kedua, antara P1 dan P3 lewat M1 dan komunikasinya bersifat unidirectional, yaitu dari P1 ke P3 saja dan tidak sebaliknya. Ketiga, antara P1 dan P2 lewat M1 dan komunikasinya bersifat unidirectional yaitu dari P1 ke P2 saja. Perhatikan, sekalipun P2 dan P3 punya akses ke M1, namun keduanya tidak dapat menyelenggarakan komunikasi. Ini dikarenakan keduanya hanya memiliki akses baca dari M1.


Syarat agar dua proses dapat berkomunikasi lewat suatu mailbox adalah salah satu proses (proses penerima), memiliki hak baca ke mailbox. sedangkan proses lainnya (proses pengirim), memiliki hak tulis ke mailbox tersebut.




Gambar 4.8 Komunikasi tak langsung lewat sejumlah mailbox


Isu lain komunikasi tak langsung adalah kepemilikan mailbox, atau pihak yang berhak membaca dari mailbox. Kepemilikan mailbox dapat bersifat pribadi (private) ataupun umum (public).


Jika kepemilikan mailbox bersifat pribadi, maka hanya pemilik tunggal mailbox tersebut yang berhak membaca pesan yang masuk ke mailbox tersebut. Analoginya adalah kotak surat pribadi pada setiap rumah, di mana kotak surat tersebut adalah milik rumah tersebut. Pihak-pihak lain dapat mengirimkan surat ke kotak surat tersebut, tetapi hanya pemilik rumah yang berhak membaca surat dari kotak surat tersebut.

Kepemilikan mailbox juga dapat bersifat umum ataupun digunakan bersama oleh sekelompok pengguna atau proses. Dalam skenario ini, semua proses dapat mengirimkan pesan ke mailbox tersebut, dan terdapat sejumlah proses lainnya yang dapat membaca dari mailbox tersebut. Analoginya adalah fasilitas mailing-list pada email sehingga siapa saja dapat mengirim pesan ke mailing-list, dan terdapat sejumlah pengguna, yaitu anggota mailing-list yang dapat membaca pesan-pesan yang masuk ke mailbox mailing list tersebut.


4.3.2 IMPLEMENTASI MESSAGE BUFFER PADA MESSAGE PASSING


Komunikasi message passing sering membutuhkan penggunaan message buffer. Mengapa hal ini dibutuhkan? Message buffer diperlukan terutama karena umumnya kapasitas atau bandwidth sambungan (link) komunikasi terbatas. Sebagai contoh, link komunikasi hanya mampu mengirimkan satu pesan setiap saat, padahal pesan yang harus dikirimkan adalah dua atau tiga setiap saat. Untuk lebih konkretnya, lihat contoh pada Gambar 4.9. Misalnya proses A secara berturut-turut mengirimkan pesan Mab ke proses B dan pesan Mac ke proses C lewat link yang sama. Agar kedua pengiriman pesan tersebut dapat dilakukan secara asinkron maka butuh diimplementasikan message buffer pada sisi proses A sebagai proses pengirim. Jadi pesan Mac dan Mab akan di-buffer terlebih dahulu dan dijadwal untuk dikirimkan lewat link komunikasi jika dimungkinkan, yaitu pada saat tidak digunakan oleh proses lain. Keuntungan lain dari memakai message buffer adalah jika terjadi kesalahan dalam transmisi data lewat sambungan (link) komunikasi maka pesan dapat dikirim ulang.


Message buffer dapat pula diimplementasikan pada titik singgah (node) sepanjang link komunikasi. Hal ini diperlukan jika sebagian link komuni- kasi digunakan bersama oleh proses lainnya. Misalnya proses D yang pada saat bersamaan hendak mengirim pesan Mah ke proses B. Link komunikasi proses D ke B bertabrakan dengan link komunikasi proses A ke B sepanjang node X ke proses B. Agar kedua pengiriman tersebut dapat diakomodasi maka pada node X, butuh diimplementasikan message buffer

yang akan menampung sementara pesan Mah dan Madh, dan menjadwalkan pengiriman pesan tersebut ke B.


Message buffer dapat juga diimplementasi pada sisi penerima, proses B. Ini diperlukan jika pesan dapat masuk dari link-link yang berbeda secara bersamaan, misalnya ada link juga dari proses E, ataupun karena kecepatan proses B mengolah pesan lebih lambat dibanding kecepatan masuknya pesan-pesan baru.


Gambar 4.9 Penggunaan Message Buffer pada komunikasi message passing


Message buffer dapat diimplementasikan dalam bentuk-bentuk antrian berikut:


1. Antrian kapasitas nol (Zero Capacity Queue)
Antrian dengan kapasitas nol atau dengan kata lain tidak meng- gunakan buffer message. Pengirim harus menunggu sampai pesan sampai ke penerima baru kemudian dapat mengirimkan pesan selan- jutnya. Dengan kata lain komunikasi pengiriman pesan berlangsung secara sinkron. Selain itu jika link komunikasi sedang digunakan untuk pengiriman pesan oleh proses lain maka link tersebut tidak dapat memproses permintaan baru untuk pengiriman pesan.


2. Antrian kapasitas terbatas (Bounded Capacity Queue)
Antrian memiliki batas kapasitas pesan yang dapat ditampung, misalnya sebesar n pesan. Jika antrian sudah penuh maka pengiriman pesan berikutnya harus ditunda lebih dahulu.


3. Antrian kapasitas tidak terbatas (Unbounded Capacity Queue)
Antrian memiliki kapasitas penampungan yang tak terbatas. Pengirim pesan tidak perlu menunggu. Pengiriman pesan dapat berjalan asin- kron sepanjang waktu.

Tidak ada komentar:

Posting Komentar