SISTEM OPERASI
MUTUAL
EXCLUSION
Mutual exclusion adalah suatu cara yang menjamin jika
ada sebuah proses yang menggunakan variable atau berkas yang sama (digunakan juga oleh proses lain ) maka proses
lain akan dikeluarkan dari pekerjaan yang sama. Jadi , mutual exclusive terjadi
ketika hanya ada satu proses yang boleh
memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada
proses yang memakai sumber daya tersebut. Pentingnya mutual exclusion dapat dilihat pada ilustrasi
berikut:
DEMON PRINTER
Demon printer adalah proses penjadwalan dan
pengendalian pencetakan berkas-berkas di printer sehingga seolah-olah printer
dapat digunakan secara simultan oleh proses-proses. Daemon printer mempunyai ruang
disk (disebut direktori spooler) untuk menyimpan berkas-berkas yang akan
dicetak. Direktori spooler membagi disk menjadi sejumlah slot. Slot-slot diisi
berkas yang akan dicetak. Terdapat variable in menunjuk slot bebas di ruang
disk yang akan dipakai menyimpan berkas yang ingin dijadwalkan untuk dicetak.
Jika terdapat kondisi dimana dua proses atau lebih sedang membaca atau menulis
data bersama (yaitu variable in) dengan hasil akhir bergantung jalannya
proses-proses. Hasil akhir tidak dapat diprediksi. Kondisi ini disebut kondisi
pacu (race condition). Kondisi pacu harus dihilangkan agar hasil proses dapat diprediksi
dan tidak bergantung jalannya proses-proses itu yaitu dengan cara mencegah
lebih dari satu proses membaca atau menulis data bersama pada saat bersamaan.(Bambang Harianto, Sistem Operasi)
Bagian program yang sedang mengakses memori atau sumber daya yang dipakai
bersama disebut critical section / region. Kesuksesan proses-proses kongkuren
memerlukan pendefinisian critical section dan memaksakan mutual exclusion diantara proses-proses kongkuren yang sedang berjalan. Critical
Region adalah bagian dari kode yang selalu dieksekusi di bawah kondisi
mutual eksklusif. Critical
Region menyerahkan penanganan
kondisi mutual eksklusif tersebut dari tangan programmer (seperti yang terjadi
dalam semafor) ke tangan kompiler. Hal ini membantu mengurangi error yang
terjadi karena kesalahan programmer dalam mengimplementasi semafor.
Kriteria Penyelesaian Mutual-Exclusion
Kemampuan menjamin mutual-exclusion
harus memenuhi kriteria-kriteria berikut:
1. Mutual-exclusion harus dijamin.
.Hanya satu proses pada satu saat yang diizinkan masuk critical
section yang sama pada
saat telah ada proses yang masuk critical section itu.
2. Proses yang berada di noncritical
section, dilarang mem-block proses-proses lain yang
ingin masuk critical section.
3. Harus dijamin proses yang ingin
masuk critical section tidak menunggu selama waktu
yang tak berhingga atau tidak boleh terjadi deadlock maupun
startvation.
4. Ketika tidak ada proses di
critical section, maka proses yang ingin masuk critical section
harus diizinkan segera masuk tanpa ada waktu tunda.
5. Tidak ada asumsi mengenai
kecepatan relatif proses atau jumlah proses yang ada.
kriteria pada nomor satu merupakan kriteria pokok yang harus
dipenuhi. Metode yang
melanggar kriteria nomor satu sama sekali tidak dapat di gunakan.
Pelanggaran kriteria-kriteria lain berarti metode masih bisa digunakan pada
situasi-situasi tertentu tapi harus dilakukan secara hati-hati.
METODE-METODE
PENJAMIN MUTUAL EXCLUSION
1.
Metode Naif
Disebut
naïf karena tidak menyelesaikan masalah mutual exclusion. Metode-metode ini
dipelajari untuk memperoleh gambaran lebih jelas mengenai mekanisme penjaminan
mutual exclusion. Yang masuk metode naïf adalah:
Metode
Variabel Lock Sederhana
Metode
ini meniru mekanisme penguncian pintu dengan kunci pintu diganti variable lock.
Variabel lock bernilai 0 berarti pintu tidak terkunci, berniali 1 berarti pintu
terkunci. Metode ini gagal karena analogi ini tidak sepenuhnya sama, yaitu
pengambilan kunci ( di computer berarti membaca variable lock) tidaklah sama,
dengan di dunia fisik dimana pengambilan kunci berarti benar-benar
pemakai-pemakai lain tidak dapat mengambilnya lagi, sementara pembacaan variable
lock masih memungkinkan pemakai-pemakai lain membacanya.
-
Mekanisme yang diusulkan :
Ketika
proses hendak masuk critical section, proses lebih dulu memeriksa variable lock
denagn ketentuan sebagai berikut:
-
Jika variable lock bernilai 0, proses menset variable
lock menjadi 1 dan kemudian masuk critical section
-
Jika variable lock bernilai 1, proses menunggu
sampai nilai variable lock menjadi 0 ( situasi ini berarti terdapat proses lain
pada critical section)
2.
Metode untuk Situasi Tertentu
Metode
Bergantian secara Ketat
Metode
ini mengasumsikan dapat menggilir masuk critical section secara bergantian
terus-menerus. Variabel Turn (Giliran) mencatat (nomor) proses yang sedang masuk critical section.
Variabel turn diinisialisasi 0. Skenario yang terjadi adalah: Proses 0,
memeriksa variable turn, berniali 0 dan segera memasuki critical section.
Proses 1, menemukan variable turn berniali 0, melakukan loop memeriksa variable
turn terus-menerus, memeriksa apakah turn telah berniali 1. kondisi ini disebut
busy waiting, kalau hal ini terjadi lama maka cara ini harus dihindari karena
banyak menyiakan waktu pemroses.
3.
Metode Menggunakan Busy Waiting
-
Metode Penyelesaian Dekker
Algoritma
Dekker mempunyai properti-properti berikut :
> Tidak
memerlukan instruksi-instruksi perangkat keras khusus
> Proses yang beroperasi di luar critical section tidak
dapat mencegah proses lain masuk critical section itu.
> Proses yang ingin masuk critical section akan segera
masuk bila dimungkinkan
Program
sulit diikuti dan pembuktian kebenarannya memerlukan kecerdasan.
-
Metode Penyelesaian Peterson
-
Metode Pematian Interupsi
Proses
mematikan interupsi ke pemroses dan segera memasuki critical section. Proses
kembali mengaktifkan interupsi segera setelah meninggalkan critical section.
Cara pematian interupsi mengakibatkan: Pemroses tidak dapat beralih ke proses
lain, karena interupsi clock dimatikan sehingga penjadwal pun tidak dieksekusi.
Karena penjadwal tidak beroperasi maka tidak terdapat alih proses, proses dapat
memakai memori bersama tanpa takut intervensi proses lain karena memang tidak
ada proses lain yang dieksekusi pada saat itu.
Kelemahan
Utama:
-
Bila proses yang mematikan interupsi mengalami
gangguan (yaitu crash), maka proses tak akan pernah menghidupkan interupsi
kembali. Kejadian ini menagkibatkan mematikam seluruh sistem.
-
Jika terdapat dua pemroses atau lebih, mematikan
interupsi hanya berpengaruh pada pemroses yang mengeksekusi instruksi tersebut.
Pematian interupsi tidak mempengaruhi pemroses-pemroses lain, pemroses lain
masih bebas memasuki critical section yang sedang dimasuki pemroses lain di
pemroses lain. Teknik ini tidak dpat diterapkan pada system multiprocessors.
-
Metode dengan Instruksi Teks and Set Lock
Instruksi
ini membaca isi memori ke register dan kemudian menyimpan nilai non-zero ke
alamat memori itu. Operasi membaca isi memori dan menyimpan ke memori adalah atomic
dijamin tak dapat diinterupsi. Tak ada pemroses lain yang dapat mengakses
memori itu sampai instruksi berakhir. Pemroses yang mengeksekusi instruksi TSL
mengunci bus memori, mencegah pemroses lain mengakses memori itu.
-
Metode dengan Instruksi Exchange (XCHG)
Instruksi
ini disediakan mesin. Intel yang menyediakan. Instruksi ini saling menukarkan
antra dua isi memori yang dilakukan secara atomic, tidak dapat disela.
Instruksi dapat digunakan untuk implementasi mutual exclusion.
-
Karakteristik Pendekatan dengan Instruksi Mesin
Keunggulan:
Ø Sederhana
dan mudah diverifikasi
Ø Dapat
diterapkan ke sembarang jumlah proses baik di pemroses tunggal maupun bayak
pemroses yang memakai memori bersama
Ø Dapat
digunakan untuk mendukung banyak critical region, tiap critical region
didefinisikan dengan suatu variable
Kelemahan:
Ø Merupakan
metode dengan busy waiting, sangat tidak efisien. Selagi proses menunggu memasuki
critical region, proses berlanjut mengkonsumsi waktu pemroses
Ø Adanya busy
waiting memungkinkan terjadinya deadlock dan starvation.
-
Dampak Adanya Busy Waiting
Metode
dengan busy waiting mempunyai keterbatasan yaitu tidak dapat diterapkan pada system
dengan penjadwalan berprioritas. Pada system dengan penjadwalan berprioritas,
metode dengan busy waiting dapat menimbulkan deadlock. Aturan penjadwalan
berprioritas selalu menjadwalkan proses-proses berprioritas lebih tinggi di
antrian proses ready.
4.
METODE SEMAPHORE
Prinsip
semaphore yaitu dua proses atau lebih dapat bekerja sama dengan menggunakan
penanda-penanda sederhana. Proses dipaksa berhenti sampai proses memperoleh
penanda tertentu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan
struktur penanda yang sesuai kebutuhannya. Variabel khusus untuk penandaan ini
disebut semaphore. Terdapat dua
operasi terhadap semaphore:
-
Operasi Down
Operasi
ini menurunkan nilai semaphore. Jika nilai semaphore menjadi nonpositif maka
proses yang mengeksekusi di blocked.Operasi down adalah atomic (atomic action),
tak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai,
menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak
dimulai, tak ada proses lain yang dpat mengakses semaphore sampai operasi
selessai atau di blocked.
-
Operasi Up
Operasi
menaikkan nilai semaphore. Jika satuproses atau lebih telah di blocked pada
sustau semaphore tak dapat menyelesaikan operasi down, maka salah satu dipilih
oleh system dan dibolehkan menyelesaikan operasi down-nya. Urutan proses yang
dipilih tidak ditentukan, dapat dipili secara acak, FIFO, dan sebagainya sesuai
keperluan dan kepentingan system.(Bambang Harianto, Sistem Operasi)
Deadlock
pada Sistem Operasi
Deadlock adalah keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya. Analoginya seperti pada kondisi jalan raya dimana terjadi kemacetan parah. Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses. Deadlock bisa digambarkan sebagai berikut :
Kejadian
Deadlock selalu tidak lepas dari sumber daya, bahwa hampir seluruhnya merupakan
masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga
perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi
berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau
dapat dikatakan sumber daya sekali pakai.
(http://nugan88.wordpress.com/2011/10/03/deadlock-pada-sistem-operasi/ 25 April 2013. 21.56 WIB)
(http://nugan88.wordpress.com/2011/10/03/deadlock-pada-sistem-operasi/ 25 April 2013. 21.56 WIB)
I.
Model Deadlock
Urutan
kejadian pengoprasian perangkat masukan/pengeluaran adalah :
·
Meminta (request) :meminta pelayanan perangkat masukan/keluaran
·
Memakai (use) :
memakai perangkat masukan/keluaran
·
Melepaskan (release) : melepaskan pemakaian perangkat masukan/pengeluaran
Deadlock
tidak hanya terjadi pada dua proses dan dua sumber daya,deadlock dapat terjadi
dengan melibatkan lebih dari dua proses dan dua sumber daya. (Bambang Harianto, Sistem Operasi)
Penyebab terjadinya deadlock adalah :
A. Mutual Exclusion
A. Mutual Exclusion
Yaitu suatu keadaan dimana hanya ada satu
proses saja yang boleh memakai resource, proses yang lain harus menunggu sampai
proses tadi benar-benar selesai. contoh mutual exclusion adalah “buffering”
ketika kita menonton video.
B. Hold and Wait
B. Hold and Wait
Yaitu
keadaan dimana suatu proses ‘kelaparan’ sumberdaya. Suatu proses menunggu suatu
sumberdaya dalam waktu yang lama hingga sumberdaya tersebut tidak terpakai oleh
proses lainnya.
C. No Pre-emption
C. No Pre-emption
Yaitu
keadaan dimana suatu sumberdaya tidak boleh diambil(dipakai) begitu saja/secara
paksa oleh proses yang lainnya sehingga suatu proses harus menunggu hingga
proses yang sedang memakai sumberdaya benar-benar telah selesai.
D. circular wait
D. circular wait
Yaitu
suatu keadaan dimana proses yang lain membutuhkan sumberdaya yang sedang
dipakai oleh suatu proses sehingga timbul antrian melingkar (waiting chain)
seperti halnya rantai.
Keempat penyebab timbulnya deadlock hampir sama yaitu penggunaan sumber daya dan waktu tunggu oleh suatu proses atau lebih.
Keempat penyebab timbulnya deadlock hampir sama yaitu penggunaan sumber daya dan waktu tunggu oleh suatu proses atau lebih.
(http://2010219ifunsika.wordpress.com/2012/12/26/deadlock-pada-sistem-operasi/
25 April 2013. 22.03 WIB)
Penanganan Deadlock
Secara umum terdapat 4 cara untuk menangani keadaan deadlock, yaitu:
1. Pengabaian
Secara umum terdapat 4 cara untuk menangani keadaan deadlock, yaitu:
1. Pengabaian
Maksud dari pengabaian di sini adalah sistem
mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi.
Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan
algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara
otomatis mematikan proses atau program yang mengalami deadlock. Kebanyakan
sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan deadlock.
Cara penanganan dengan mengabaikan deadlock banyak dipilih karena kasus
deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk
diselesaikan.
2. Pencegahan
Penanganan ini dengan cara mencegah terjadinya
salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat
deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan
pernah berada pada kondisi deadlock. Akan dibahas secara lebih mendalam pada
bagian selanjutnya.
3. Penghindaran
Menghindari keadaan deadlock. Bagian yang
perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran
adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari
empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi.
Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem,
dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan
terjadi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.
4. Pendeteksian dan Pemulihan
Pada
sistem yang sedang berada pada kondisi deadlock, tindakan yang harus diambil
adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan
mendeteksi adanya deadlock, kemudian memulihkan kembali sistem. Proses
pendeteksian akan menghasilkan informasi apakah sistem sedang deadlock atau
tidak serta proses mana yang mengalami deadlock. Akan dibahas secara lebih
mendalam pada bagian selanjutnya.
(http://blog.ugm.ac.id/2010/05/08/deadlock-dan-penanganannya/ 25 April 2013. 22.04 WIB)
(http://blog.ugm.ac.id/2010/05/08/deadlock-dan-penanganannya/ 25 April 2013. 22.04 WIB)
II.
Strategi Butrung Onta
Strategi ini disebut strategi onta karena
kabar yang telah tyersebar, bahwa burung onta akan menyembunyikan kepalanya ke
tanah bila mengetahui adanya bahaya yang mengancam. Bila solusi yang dilakukan
justru sebenarnya tak memperdulikan adanya masalah.strategi ini sebenarnya
berarti aadalah sama sekali tidak berusaha mengatasi deadlock atau tak ada
metode sama sekali untuk mengatasi masaalah deadlock.
III.
Pencegahan Deadlock
Havender menyarankan strategi – strategi
berikut untuk meniadakan syarat – syarat tersebut, yaitu :
·
Tiap proses harus meminta semua sumber daya yang
diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.
·
Jika proses telah sedang memegang sumber daya
tertentu, untuk permintaan berikutnya proses harus melepas dahulu sumber daya
yang dipegangnya.
·
Beri pengurutan linear trerhadap tipe-tipe
sumber daya pada semua proses, yaitu jika proses telah dialokasikan ssuatu tipe
sumber daya.
IV.
Penghindaran Deadlock
Strategi ini biasanya diimplementasikan
dengan pengalokasi sumber daya memeriksa dampak – dampak pemberian akses ke
suatu permintaan.
·
Jika pemberian akses akses sumber daya tidak
mungkin menuju deadlock, sumber daya diberikan ke peminta.
·
Jika tidak aman (memungkinkan timbulnya
deadlock),proses yang meminta di-suspend sampai suatu waktu permintaannya aman
diberikan.kondisi ini biasanya terjadi setelah satu sumber daya atau lebih yang
semula di pegang oleh proses-proses aktif lain dilepas.
V.
Deteksi pemulihan deadlock
·
Deteksi adanya deadlock
Deteksi
deadlock adalah tekhnik untuk menentukan apakah, deadlock terjadi serta
mengidentifikasi proses – proses dan sumber daya yg terlobat deadlock. Umumnya
algoritma - algoritma deteksi yang
digunakan adalah menentukan keberadaan menunggu sirkulasi ( circular wait ).
Pengguna algoritma deteksi deadlock melibatkan over-head run time karena secara
periodic dijalankan untuk menunggu sirkulasi.
·
Pemulihan dari deadlock
Pemulihan
dari deadlock dirumitkan oleh factor-faktor berikut :
Teknik pemulihan yang biasa digunakan
adalah menghilangkan proses-proses dalam system dan pengklaiman kembali
(reclaim) sumber daya yang dipegang prose itu. Istilah “ pemulihan “ sebenarnya
kurang berarti disini karena yang terjadi sesungguhnya adalah penyingkiran
beberapa proses “untuk member manfaat”proses-proses lain. Pendekatan berikut
dapat dilakukan untuk pemulihan deadlock. Pendekatan – pendekatan dituliskan
terurut kecanggihan penyelesaiannya :
1.
Abaikan semua proses yang terlibat deadlock.
2.
Backup semua proses yang terlibat deadlock ke
suatu checkpoint yang didefisinikan sebelumnya dan jalankan kembali semua prose
situ.
3.
Secara berurutan abaikan proses sampai tidak ada
deadiock lagi. Setelah masing-masing penyingkiran,algoritma deteksi harus
dijalankan untuk melihat apakah masih terdapat deadlock.
4.
Secara berurutan preempt sumber daya sampai
tidak ada deadlock lagi. Sebagaimana item 3. Proses yang kehilangan sumber daya
karena preemption harus dikembalikan (rool-back) ke titik sebelum mmemperolah
sumbert daya.
Untuk item 3 dan 4,criteria pemilihan
proses yang akan disingkirkan (kill) atau di-suspend adalah dengan kriteria,
sbb :
·
Waktu pemrosesan yang telah dijalankan paling
kecil.
·
Jumlah baris kluaran yang di produksi paling
kecil.
·
Mempunyai estimasi sisa waktu eksekusi terbesar.
·
Jumlah total sumber daya terkecil yang telah
dialokasikan.
·
Prioritas terkecil.
VI.
Strategi penanggulangan deadlock terpadu
Masing-masing tekhnik memilik keunggulan
dan kelemahan, maka daripada berusaha merancang fasilitas system operasi dengan
satu strategi penangfgulan deadlock maka lebih efisien menggunakan
startegi-strategi berbeda untuk situasi berbeda. Silberschatz menyarankan satu
pendekatan terpadu,yaitu:
ü
Kelompokkan sumber daya-sumber daya menjadi
sejumlah kelas sumber daya.
ü
Gunakan strategi pengurutan linear seperti yang
di definisikan pada pencegahan menunggu sirkular. Strategi ini digunakan untuk
mencegah deadlock diantara kelas-kelas sumber daya berbeda.
ü
Dalam satu kelas sumber daya, gunakan algoritma
yang paling cocok untuk kelas sumber daya itu.(Bambang Harianto, Ssitem Operasi)
Tidak ada komentar:
Posting Komentar