33
C. Mutex
Mutex (mutual
exclusion)
adalah
suatu
jenis
semaphore
yang
digunakan untuk menjamin hanya
ada satu proses yang berjalan untuk
mengakses
buffer pada
suatu
waktu.
Sehingga
thread
thread lain yang
mencoba
mengakusisi
mutex
akan
memblock. Pemblokiran didapatkan
dengan melakukan spinning atau sleeping. Mutex biasanya diberi
inisialisasi
dengan angka 1.
Solaris memiliki dua tipe dasar mutex, yaitu adaptive dan spin.
Tipe default mutex adalah adaptive.
Tipe
mutex
ditentukan
ketika
diinisialisasikan
oleh
mutex_init(9f).
Sebagian
besar
mutex
di
sistem adalah
adaptive,
dan
kode
pengunci
dioptimalisasikan
untuk
mutex
adaptive
tanpa
perlu diperdebatkan. Dengan kata lain, mengakusisi mutex adaptive yang
tidak ada pemilikinya
merupakan kasus
yang paling
umum dan path kodenya
paling cepat.
a. Mutex adaptive bekerja sebagai berikut :
Thread peminta mencoba mendapatkan pengunci. Jika pengunci
tidak ada pemiliknya, thread peminta mengakusisi pengunci dan
melanjutkan pemorosesannya. Jika pengunci telah ada pemiliknya, dan
pemilik
pengunci
sekarang
sedang berjalan
di
prosesor
(tentunya
ini
mempengaruhi mesin berprosesor gdana), thread peminta men-spin untuk
mencoba mengakusisi pengunci. Jika pemilik pengunci mem-blok (men-
switch keluar membiarkan thread lain berjalan), thread peminta tidur (
berhenti
men-spin
dan
men-switch
keluar).
Jika
pemilik
pengunci
|