Semaphore
·
Definisi
Merupakan pendekatan yang dikemukan oleh Dijkstra. Semaphore
adalah sebuah struktur data komputer yang digunakan untuk sinkronisasi proses.
Semaphore dinyatakan dalam suatu nilai integer.
·
Karakteristik
-
Semaphore
dapat diinialisasikan dengan nilai non negatif.
-
Terdapat
2 operasi dalam semaphore, yaitu Up
dan Down.
·
Kelebihan
1. Dapat digunakan untuk membentuk
mutex.
2. Merupakan tool yang serba guna.
·
Kekurangan
1. Tidak mudah membuat program dengan
mengimplementasikan semaphore.
2. Penanganan mutex dan sinkronisasi
merupakan tanggung jawab programmer.
Contoh-contoh semaphore
1.
Primitive semaphore
Keterangan
:
-
Prosedur
semWait(s) digunakan untuk menerima signal semaphore s.
-
Prosedur
semSignal(s) digunakan untuk mengirimkan signal semaphore s.
-
Inisialisasi
variable semaphore tidak boleh negatif.
2.
Semaphore biner
Keterangan
:
-
Prosedur
semWait(s) digunakan untuk menerima signal semaphore s.
-
Prosedur
semSignal(s) digunakan untuk mengirimkan signal semaphore s.
-
Inisialisasi
variable semaphore hanya bernilai 0 atau 1.
Implementasi mutual exclusion dengan semaphore
Berikut contoh implementasi mutex
menggunakan semaphore :
Monitor
·
Definisi
Adalah kumpulan prosedur, variable dan struktur data
di satu modul dan proses dapat memanggil prosedur-prosedur di monitor kapan
saja dibutuhkan. Monitor merupakan suatu konsep bahasa pemrograman yang
mempunyai fungsionalitas seperti semaphore dan lebih mudah dikontrol.
·
Karakteristik
-
Variable data lokal hanya dapat diakses oleh oleh
monitor.
-
Proses untuk memasuki monitor ialah dengan memanggil
salah satu prosedurnya.
-
Hanya ada satu proses yang berjalan dalam satu waktu
·
Kelebihan
1. Bisa
menangani sinkronisasi.
2. Jika
program monitor benar, maka akses terhadap critical
resource oleh semua proses akan benar.
3. Pengecekan
masalah yang berhubungan dengan mutex hanya terpusat pada modul monitor.
·
Kekurangan
1. Memerlukan
mekanisme penjadwalan proses yang handal.
2. Proses yang
mengeluarkan csignal harus segera keluar.
3. Bila signal
pada csignal hilang, maka proses yang berada dalam antrian akan terblok.
4. Jika proses
terblok diperlukan 2 tahapan switching tambahan.
Contoh Monitor
•
Contoh: Bounded-buffer
producer consumer
Contoh monitor dengan notify : (If diganti while)
Contoh Monitor Dengan Broadcast :
Seperti Pada saat Producer menaruh data ke buffer,
maka Producer tidak perlu tahu seberapa cepat konsumer dapat mengambil data
dari buffer ke Produser. Dan produser dapat
menaruh data dengan ukuran berbeda-beda
Message Passing
·
Definisi
Message
Passing adalah salah satu teknik dalam operating system untuk kebutuhan
komunikasi dan sinkronisasi antar proses-proses yang ada. Message passing ini
biasa digunakan pada sistem terdistribusi, shared-memory
pada prosesor baik uni maupun multiprocessor.
Message passing ini digunakan sebagai cara agar objek-objek yang membentuk
sebuah program dapat bekerja satu sama lain dan sebagai cara agar objek dan
sistem yang berjalan pada beberepa komputer untuk saling berinteraksi.
·
Operasi dasar yang digunakan :
1. Operasi send : untuk mengirim informasi dalam bentuk message ke proses
tujuan.
2. Operasi receive : untuk menerima informasi dalam bentuk message dari proses
sumber.
Message
yang dikirim bisa berisi sesuatu yang saling dipahami oleh proses proses yang
ada seperti data, remote procedure call,
executable code dan lain sebagainya .
Dan biasanya message mengandung filed standart yang berisi procedd ID tujuan, message length, tipe data dan lain
sebagainya.
·
Sinkronisasi
Bertujuan
agar komunikasi antar proses bias diatur dengan baik. Pada operasi send terdapat 2 kemungkinan kejadian
pada proses tersebut yaitu:
-
Blocking send : proses akan terblok sampai message
diterima,
-
Nonblocking send : proses masih tetap bisa
melanjutkan eksekusi yang lain.
Sedangkan pada operasi receive
suatu proses akan bisa mengalami 2 kejadian yang hampir sama seperti operasi send namun apabila message sudah dikirim
oleh proses lain maka proses akan menerima pesan dan melanjutkan ekseskusi.
Namun apabila pesan belum terkirim atau bahkan belum ada maka terjadi 2 hal
yang sama dengan apa yang terjadi ketika operasi send yaitu :
-
Blocking receive : proses terblok sampai pesan telah
ada,
-
Nonblocking receive : proses akan mengabaikan pesan dan
tetap melanjutkan eksekusi.
Tidak ada komentar:
Posting Komentar