Mutual exclusion adalah
jaminan hanya satu proses yang mengakses sumber daya pada satu interval waktu
tertentu. Sumber daya yang tidak dapat dipakai bersama pada saat bersamaan.
Sering terjadi pada
peralatan pencetakan (printer). Daemon printer adalah proses yang melakukan
penjadwalan dan pengendalian pencetakan berkas-berkas di printer. Ruang disk
ini disebut direktori spooler. Direktori spooler membagi disk menjadi sejumlah
slot. Slot-slot diisi berkas yang akan dicetak. Terdapat variabel in yang
menunjuk slot bebas pada ruang disk yang akan dipakai untuk menyimpan berkas
yang ingin dijadwalkan untuk dicetak. Bagian program yang sedang mengakses
memory atau sumber daya yang dipakai bersama disebut critical section. Jika
proses pada critical section memblokir proses-proses lain dalam antrian, maka
akan terjadi startvation dan deadlock.
Kesuksesan proses-proses
konkurensi memerlukan pendefinisian critical section dan memaksakan mutual
exclusion di antara proses-proses konkuren yang sedang berjalan. Pemaksaan
mutual exclusion merupakan landasan pemrosesan konkuren. Fasilitas atau
kemampuan menyediakan dukungan mutual exclusion harus memenuhi kriteria sbb:
·
Mutual exclusion harus dijamin,
bahwa tidak ada proses lain, kecuali dirinya sendiri. Di sini terjadi proses
tunggal.
·
Proses yang berada di noncritical
section, dilarang mem-blocked proses-proses lain yang ingin masuk critical
section. Hal ini bisa terjadi startvation.
·
Harus dijamin bahwa proses yang
ingin masuk critical section tidak menunggu selama waktu yang tak terhingga.
Ini bisa mengakibatkan masalah deadlock dan antrian proses bertambah panjang.
·
Ketika tidak ada proses pada
critical section, maka proses yang ingin masuk critical section harus ijinkan
masuk tanpa waktu tunda.
·
Tidak ada asumsi mengenai
kecepatan relatif proses atau jumlah yang ada.
·
Proses hanya tinggal pada critical
section selama satu waktu yang berhingga
Ilustrasi aplikasi tabungan
Seluruh sistem yang melibatkan banyak proses mengakses satu sumber daya
bersama selalu menimbulkan persoalan mutual-exclusion.
Contohnya adalah sebagai berikut.
· Pada aplikasi tabungan, misalnya rekening A berisi Rp 1.000.000,-
yang terdaftar di kantor cabang bandung.
· Kemudian pada suatu saat program aplikasi kantor cabang di Jakarta
melayani penyetoran Rp 3.000.000,- ke rekening A. lalu program aplikasi
membaca saldo akhir rekening A
Persoalan di atas dapat tidak terjamin mutual-exclusion jika:
1. Program aplikasi bandung menulis ke rekening A secara cepat sehingga
di hasilkan saldo Rp 6.000.000. Setelah itu, program aplikasi kantor
cabang Jakarta menimpa hasil itu dengan saldo Rp 4.000.000,- . Dalam kasus
ini saldo akhir yang diperoleh adalah Rp 4.000.000,- bukan Rp 10.000.000,-
(yang seharusnya).
2. Program aplikasi Jakarta dilakukan menulis ke rekening A secara
cepat sehingga dihasilkan saldo Rp 4.000.000,-. Setelah itu program
aplikasi di kantor bandung menimpa hasil itu dengan saldo Rp 6.000.000,-.
Hasil yang lebih baik dibanding skenario pertama tetapi masih di bawah
yang seharusnya yaitu Rp 10.000.000,-.
Metode Mutual Exclusion
Beberapa metode yang diusulkan untuk menjamin
Mutual Exclusion, antara lain:
1.
Metode Variable Lock
Locking adalah salah satu mekanisasi pengontrol konkuren.
Konsep dasar : pada saat suatu transaksi memerlukan jaminan kalau record yang
diinginkan tidak akan berubah secara mendadak, maka diperlukan kunci untuk
record tersebut. Fungsi kunci (lock) adalah menjaga record tersebut agar tidak
dimodifikasi transaksi lain.
Cara kerja dari kunci :
a.
Pertama kita asumsikan terdapat 2
macam kunci :
1. Kunci X : kunci yang eksklusif.
2. Kunci S : kunci yang digunakan bersama-sama.
b.
Jika transaksi A menggunakan kunci
X pada record R, maka permintaan dari transaksi B untuk suatu kunci pada R
ditunda, dan B harus menungggu sampai A melepaskan kunci tersebut.
c.
Jika transaksi A menggunakan kunci
S pada record R, maka :
1.
Bila transaksi B ingin
menggunakan kunci X, maka B harus menunggu sampai A melepaskan kunci tersebut.
2.
Bila transaksi B ingin
menggunakan kunci S, maka B dapat menggunakan kunci S bersama A.
Tabel Kunci
3.
Bila suatu transaksi hanya
melakukan pembacaan saja, secara otomatis ia memerlukan kunci S -> baca (S).
4.
Bila transaksi tersebut ingin
memodifikasi record maka secara otomatis ia memerlukan kunci X ->
memodifikasi (X).
5.
Bila transaksi tersebut sudah
menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan
dinaikan ke level kunci X.
6.
Kunci X dan kunci S akan
dilepaskan pada saat synchpoint (synchronization point). Synchpoint menyatakan
akhir dari suatu transaksi dimana basis data berada pada state yang konsisten.
Bila synchpoint ditetapkan maka :
a.
Semua modifikasi program
menjalankan operasi commit atau rollback.
b.
Semua kunci dari record
dilepaskan.
Metode ini sederhana
ketika proses masuk critical section lebih dahulu memeriksa variable lock.
a.
Jika variable lock bernilai 0,
proses men-set variable locknya menjadi 1 kemudian masuk ke dalam critical
section.
b.
Jika variable lock bernilai 1,
maka proses menunggu sampai nilai variable lock nya menjadi 0.
Metode ini tidak menjamin
proses tidak masuk critical section yang telah dimasuki proses lain.
2. Metode Naif
Sebenarnya metode ini tidak menyelesaikan
mutual exclusion, karena masih terdapat scenario proses yang membuat situasi
kacau. Metode ini sering disebut metode variable lock sederhana.
Ketika proses hendak masuk critical section,
proses lebih dulu memeriksa variable lock dengan ketentuan :
-
Jika variable lock bernilai 0,
proses mengeset variable lock menjadi 1 dan segera masuk critical section.
-
Jika variable lock bernilai 1,
proses menunggu sampai nilai variabel lock menjadi 0.
3.
Metode untuk situasi
tertentu
Metode ini sering disebut metode bergantian secara ketat yang
mengasumsikan proses-proses yang hendak masuk critical section secara
bergantian terus menerus. Proses memeriksa terus menerus sehingga kondisi siap
untuk diproses. Kondisi ini tidak dapat ditentukan lamanya waktu sehingga
menyia-nyiakan waktu pemroses. Suatu saat kondisi akan crash ketika ada proses
yang harus segera masuk sementara ada proses lain yang masih berjalan.
4. Metode Busy Waiting
a. Metode Penyelesaian Dekker
Algoritma Dekker mempunyai property-property berikut :
-
Tidak memerlukan
instruksi-instruksi perangkat keras khusus.
-
Proses yang beroperasi di luar
critical section tidak dapat mencegah proses lain memasuki critical section.
-
Proses yang ingin masuk critical
section akan segera masuk bila dimungkinkan.
b. Metode Penyelesaian Peterson
Sebelum masuk critical section, proses memanggil
enter_critical_section, namun sebelumnya proses memeriksa sampai kondisi aman.
Terjadi busy waiting, setelah selesai proses menandai pekerjaan dan mengijinkan
proses lain masuk.
Keadaan awal tidak ada proses di critical section. Proses 0 akan masuk
critical section. Proses menandai elemen arraynya dan mengeset turn ke 0.
Proses memeriksa kondisi, dan prosedur enter_critical_section dilaksanakan.
Jika kemudian, proses 1 akan masuk, proses akan menunggu sampai interest(0)
menjadi FALSE. Kondisi ini hanya terjadi jika proses 0 mengeset elemen itu dan
keluar dari critical section.
c.
Metode Pematian Interupsi
Proses mematikan interupsi ke pemroses dan segera masuk ke critical
section. Proses kembali mengaktifkan interupsi segera setelah meninggalkan
critical section. Metode ini mengakibatkan :
-
Pemroses tidak dapat beralih ke
proses lain karena interupsi clock dimatikan sehingga penjadual pun tidak
dieksekusi. Karena penjadual tidak beroperasi maka tidak terjadi alih proses.
-
Proses dapat memakai memori
bersama tanpa takut terinvensi prosesü lain karena
memang tidak ada proses lain yang dieksekusi saat itu.
Kelemahan utama :
Kelemahan utama :
-
Bila proses yang mematikan
interupsi mengalami gangguan maka proses tidak akan pernah menghidupkan
interupsi kembali. Kejadian ini mengakibatkan kematian seluruh system.
-
Jika terdapat dua pemroses atau
lebih, mematikan interupsi hanya berpengaruh pada pemroses yang sedang
mengeksekusi intruksi itu. Proses lain masih dapat memasuki critical section.
d.
Metode Test and Set Lock (TSL)
Metode ini membaca isi memori ke register dan kemudian menyimpan nilai
bukan 0 ke alamat memori. Pemroses yang mengeksekusi instruksi tsl
mengunci bus memori, mencegah pemroses lain mengkases memori.
e.
Metode Exchange (XCHG)
Metode ini menggunakan instruksi exchange (xchg). Instruksi xchg
menukarkan dua isi memori.
f.
Metode Instruksi Mesin
Keunggulan :
-
Sederhana dan mudah diverifikasi
-
Dapat diterapkan ke sembarang
jumlah proses
-
Dapat digunakan untuk mendukung
banyak critical region
Kelemahan :
-
Merupakan metode dengan busy
waiting, sangat tidak efisien.
-
Adanya busy waiting memungkinkan
terjadi deadlock dan starvation.
5. Metode Penyelesaian Level Tinggi (Metode Semapore)
Dua proses atau lebih dapat bekerja sama dengan menggunakan
penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda
tertentu. Variabel khusus untuk penandaan ini disebut semaphore. Semaphore
mempunyai dua property :
a. Semaphore dapat diinisialisasi dengan nilai bukan negative.
b. Ada dua operasi terhadap semaphore yaitu Operasi Up dan
Operasi Down.
Operasi Down
Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi
bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah
atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan
nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai
instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses
selesai.
Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih
telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka
salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya.
Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan
satu proses ke senarai ready tidak dapat diinterupsi.
Sebelum masuk critical section, proses melakukan down. Bila berhasil maka proses masuk critical section. Bila tidak berhasil maka proses diblok pada semaphore. Proses yang diblok dapat melanjutkan jika proses yang berada di critical section keluar dan melakukan operasi up dan menjadikan proses yang diblok menjadi ready dan berlanjut hingga operasi downnya berhasil.
Implementasi Semaphore
Sebelum masuk critical section, proses melakukan down. Bila berhasil maka proses masuk critical section. Bila tidak berhasil maka proses diblok pada semaphore. Proses yang diblok dapat melanjutkan jika proses yang berada di critical section keluar dan melakukan operasi up dan menjadikan proses yang diblok menjadi ready dan berlanjut hingga operasi downnya berhasil.
Implementasi Semaphore
1.
Pematian Interupsi
Sistem operasi mematikan interupsi selagi memeriksa semaphore,
memperbarui, dan menjadikan proses diblok. Karena semua aksi hanya memerlukan beberapa
instruksi, pematian interupsi tidak merugikan.
2.
Instruksi tsl
Pada banyak pemroses, tiap semaphore dilindungi variable lock dan
instruksi tsl agar menjamin hanya satu pemroses yang saat itu memanipulasi
semaphore