KONKURENSI : DEADLOCK
DAN STARVATION
Oleh :
Rafdavel oktamiranda (20066042)
Situasi tersebut digambarkan pada Gambar 6.3, situasi deadlock tidak akan
terjadi pada relative timing kedua proses.
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 133
Gambar 6.3 Contoh tanpa Deadlock
134 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
sumber daya habis pakai innterup , sinyal, pesan , dan informasi didalam
buffer I/O.
C.
ya Deadblock
Tiga syarat harus
dipenuhi agar
deadblock dapat
terjadi:
1. Mutual
exclusion.pada suatu
saat,hanhya satu
proses yang dapat menggunakan suatu sumber daya.
2. Hold dan wait.suatu proses dapat mempertahankan sumber daya yang di
alokasikan sambil menunggu assigmment sumber daya lainnya.
3. Tidak ada preemption.tidak ada sumber daya yang dapat di paksa dilepaskan
dari proses yang sedang menggunakannya.
Dalam banyak hal, kondosi-kondisi di atas sangat diharapkan misalnya,
mutual exclusion diperlukan untuk menjamin konsistensi hasil dan
integritas database demikian pula halnya, preemption tidak dapat
melakukan secara sembarang dan khususnya apabila sumber daya data
dilibatkan, harus di dukung oleh mekanisme rollback recovery, yang akan
mengembalikan suatu proses dan sumber dayanya ke keadaan
sebelumnya yang cocok yang merupakan posisi proses dapat
mengulangi aksinya.
Deadlock dapat terjadi apabila ketiga kondisi di atas ada, tetapi tidak akan
terjadi hanya karenaadanya tiga kondisi di atas. Untuk terjadinya
deadlock, diperlukan persyaratan keempat:
4. Circuit wait. Adanya rantai tertutup proses-proses, yang setiap proses
menguasai sedikitnya satu sumber daya yang diperlukan oleh proses
berikutnya yang berada di dalam rantai. (contohnya gambar 6.4)
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 135
Tiga syarat pertama di atas perlu. Namun tidak cukup agar terjadi deadlock.
Syarat ke empat, yang sebenar nya, merupakan konse-kuensi dari adanya ketiga
syarat pertama tersebut. Dengan kata lain, dengan adanya tiga syarat pertama,
sejumlah event yang akan terjadi dapat menimbulkan circular wait yang tidak
dapat diatasi (unresolvavle). Circular wait yang ditanyakan sebagai syarat 4
adalah unresolvable karena tiga syarat pertama telah terpenuhi. Jadi,empat
syarat yang digabungkan akan dibutuhkan dan syarat-syarat yang mencukupi
untuk terjadinya deadlock.
A. Mutual Exclusion
Secara umum,kondoso pertama pada keempat kondisi di atas tidak dapat
dihindarkan.apabila akses ke suatu sumber daya memerlukan mutual
excluison,mutual excluison harus didukung oleh sistem operasi.beberapa
sumber daya,seperti file,dapat mengizinkan sejumlah akses untuk
pembacaan, namun hanya satu akses eksklusif untuk penulisan.Bahkan di
dalam kasus ini, deadlock dapat terjadi apabila lebih dari satu proses
memerlukan izin penulisan.
136 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
Terdapat juga masalah praktis lainnya yang disebabkan oleh penggunaan
pemograman modular atau struktur bermultithread bagi suatu aplikasi. Sebuah
aplikasi perlu mengetahui seluruh sumberdaya yang akan diminta pada semua
tingkat atau didalam semua modul untuk membuat permintaan simultan itu.
C. No Preemption
Kondisi ini dapat dicegah dalam beberapa cara. Pertama, apabila peoses
yang memegang sejumlah sumber daya ditolak untuk melakukan permintaan
lebih lanjut, proses tersebut harus melepaskan sumberdaya asalnya, apabila
perlu, mintalah kembali sumber- sumber daya tersebut dengan sumber daya
tambahan lainnya. Cara lainnya, apabila suatu proses melakukan
permintaan sumber daya yang saat itu sedang dipegang oleh proses lainnya,
system operasi dapat mendahulukan proses kedua dan mengharuskannya
untuk melepaskan sumber- sumber daya yang sedang dipegangnya. Teknik
yang disebut terakhir ini dapat mencegah deadlock hanya apabila tidak ada
proses yang memiliki prioritas yang sama.
Pendekatan ini hanya praktis apabila diterapkan bagi sumber daya yang
memiliki keadaan yang dapat disimpan dan dipanggil kembali dengan
mudah, seperti halnya pada processor.
D. Circular Wait
Kondisi circular wait dapat dicegah dengan membuat penguratan linear jenis
sumber daya. Apabila suatu proses telah dialokasi sumber daya berjenis R,
proses itu hanya dapat meminta sumber- sumberdaya yang jenisnya setelah
jenis R itu didalam urutan.
Untuk mengetahui cara kerja strategi ini, kita asosialikan suatu indeks
dengan setiap jenis sumber daya. Sumber daya Ri mendahului Rj didalam
pengurutan itu apabila i< j. sekarang anggaplah bahwa dua proses, A dan B,
mengalami deadlock karena A telah menguasai Ri dan meminta Rj,
sedangkan B telah menguasai Rj dan meminta Ri. Keadaan ini tidak
mungkin terjadi karena hal itu menyatakan bahwa i< j dan j<i.
Seperti halnya pencegahan hold-and-wait, pencegahan circular wait bisa
tidak efisien, yang akan memperlambat proses dan penolakan akses sumber
daya yang tidak perlu.
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 137
penghindaran deadlock (deadlock avoidance). Didalam pencegahan deadlock,
kita memaksa permintaan sumber daya untuk mencegah sedikitnya salah satu
dari tempat deadlock. Hal ini dapat dilakukan baik secara tidak langsung, dengan
mencegah salah satu kondisi kebijakan yang perlu (mutual exclusion, hold and
wait, no preemption), atau secara langsung, dengan mencgah circular wait. Cara
tersebut menyebabkan terjadinya ketidakefisienan penggunaan sumber daya dan
ketidak efisienan eksekusi proses.
Dipihak lain, penghindaran deadlock mengizinkan ketiga kondisi yang
diperlukan, namun membuat pilihan bijaksana untuk menjamin bahwa titik
deadlock tidak akan pernah tercapai. Dengan demikian, penghindaran
memungkinkan konkurensi yang lebih banyak dibandingkan dengan
pencegahan. Pada penghindaran deadlock, pengambilan keputusan dilakukan
secara dinamis apakah permintaan alokasi sumber daya itu akan, apa bila
diluluskan, menyebabkan deadlock. Dengan demikian, penghindaran deadlock
memerlukan pengetahuan permintaan daya proses yang akan terjadi.
Pada sub bab ini, kita akan menjelaskan dua pendekatan terhadap
penghindaran deadlock:
• Jangan memulai proses apabila kebutuhan proses tersebut akan
menyebabkan deadlock
• Jangan memberikan/ meluluskan permintaan sumber daya incremental
kesuatu proses apabila alokasinya akan menyebabkan deadlock
138 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
1. Ri = Vi + , bagi semua i: Semua sumber daya adalah tersedia atau
telah dialokasikan
2. Cki<Ri, bagi semua k, i: Tidak satupun proses yang dapt mengkalim lebih
banyak dari jumlah sumber daya yang ada didalam system.
3. Aki ≤Cki, bagi semua k, i: Tidak ada satupun proses yang dialokasikan jenis
sumberdaya tertentu melebihi yang diperlukan oleh proses dalam keadaan
awalnya.
Dengan ditentukannya kuantitas- kuantitas diatas, kita dapat menetapkan
kebijakan penghindaran deadlock yang akan menolak diciptakannya proses
baru apabila kebutuhan sumber dayanya akan menyebabkan terjadinya
deadlock. Proses baru Pn+1 akan dimulai hanya apabila
R untuk semua i
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 139
dihasilkan ditunjukan pada Gambar 6.5b. sekarang kita dapat bertanya lebih
lanjut lagi apakah ada proses lainnya yang dapat diselesaikan. Dalam hal ini,
semua proses lainnya dapat berlangsung hingga selesai. Misalnya kita
memilih P1, mengalokasikan sumber daya yang dibutuhkan, menyelesaikan
P1, dan mengembalikan semua sumber daya P1 ke pool. Kita akan berada
di state yang terdapat pada Gambar 6.5d. Terakhir, kita dapat
menyelesaikan P4. Disini, semua proses telah beroperasi hingga selesai.
Jadi, state yang ditentukan oleh Gambar 6.5a merupakan safe state.
Konsep- konsep tersebut mengusulkan strategi penghindaran deadlock
berikut ini, yang menjamin bahwa system proses- proses dan sumber-
sumber daya akan selalu berada didalam safe state. Pada saat proses
melakukan permintaan sejumlah sumber daya, asumsikan bahwa
permintaan tersebut akan dikabulkan, meng-update state system, dan
kemudian menetapkan apabila hasilnya merupakan safe state. Apabila
demikian, kabulkan permintaan, sedangkan apabila tidak, blokir proses
tersebut sampai ditemukan saat yang aman untuk mengabulkan
permintaannya.
140 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
Gambar 6.5 Penentuan Safe State
Perhatikan state yang ditetapkan oleh matriks pada Gambar 6.6a anggap p2
melakukan permintaan satu unit R1 dan satu unit R3. Apabila kita
mengasumsikan permintaan tersebut dikabulkan, state yang dihasilkan
adalah state yang terdapat pada gambar 6.5a. kita telah mengetahui bahwa
state tersebut adalah sebuah state; karena itu, akan aman bila mengabulkan
permintaan. Namun, apabila kita kembali ke state gambar 6.6a dan sekarang
anggap bahwa P1 melakukan permintaan masing-masing satu unit R1 dan
R3, dan apabila kita mengasumsikan bahwa permintaan itu dikabulkan kita
akan memperoleh state yang terdapat pada gambar 6.6b. apakah ini
merupakan safe state? Jawabannya adalah bukan, karena masing-masing
proses akan memerlukan sedikitnya satu unit R1 tambahan, dan tidak ada
satupun sumber daya itu dalam keadaan tersedia. Jadi, berdasarkan
penghindaran deadlock, permintaan yang diajukan oleh P1 harus ditolak dan
P1 harus diblokir.
Penting untuk diperhatikan bahwa gambar 6.6b adalah state yang bukan
deadlock. Namun, state itu memiliki kecendrungan untuk mengalami
deadlock. Misalnya, hal yang mungkin bila P1 yang berjalan dari state ini
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 141
akan segera melepaskan satu unit R1 dan satu unit R3 sebelum,
kemudian, membutuhkan kembali sumber-sumber daya tersebut.
142 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
• Proses yang sedang dipertimbangkan harus independen; yaitu,
urutan eksekusinyatidak boleh terganggu oleh kebutuhan
sinkronisasi.
• Jumlah sumberdaya yang akn dialokasikan harus tetap.
• Tidak boleh ada proses yang keluar selama memegang sumber
daya.
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 143
4. Apabila baris seperti itu ditemukan, tandai proses I dan tambahkan baris
matriks alokasi yang bersangkutan ke W, yaitu memasang Wk = Wk +
Aik. Kembali ke langkah 3.
Deadlock ada bila dan hanya bila terdapat proses yang tidak bertanda pada
akhir algoritma. Setiap proses yang tidak bertanda adalah ber-deadlock.
Strategi algoritma ini adalah mencari proses yang permintaan sumber
dayanya dapat dipenuhi denga sumber daya yang tersedia, dan kemudian
mengasumsikan bahwa sumber-sumber daya itu diberikan dan proses akan
berjalan sampai selesai dan melepaskan sumber dayanya. Kemudian
algoritma akan mencari proses-proses lainnya yang akan dipenuhi. Perlu
diingat bahwa algoritma ini tidak dapat menjamin untuk mencegah deadlock;
hal itu akan bergantung pada urutan pemberian permintaan.
Kita dapat menggunakan Gambar 6.8 untuk menjelaskan algoritma deteksi
deadlock algoritma tersebut berjalan sebagai berikut:
1. Tandai P4, karena P4 tidak memiliki sumber daya yang dialokasikan.
2. Set W = (0 0 0 1).
3. Permintaan proses P3 lebih kecil atau sama dengan W, karena itu
ditandai P3 dan set W = W + (0 0 0 1 0) = (0 0 0 1 1).
4. Hentikan algoritma.
Algoritma diatas akan berakhir dengan P1 dan P2 tidak bertanda, yang
mengindikasikan bahwa proses-proses itu ber-deadlock.
B. Recovery
Sekali deadlock telah terdeteksi, diperlukan beberapa strategi untuk
keperluan recovery. Pendekatan-pendekatan di berikut ini dapat diterapkan,
yang diurutkan berdasarkan peningkatan kecanggihannya :
144 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n
orisinil akan terjadi lagi. Namun, nondeterminansi pengolahan
konkuren biasanya akan menjamin hal tersebut tidak akan terjadi.
3. Batalkan proses-proses ber-deadlock secara berurutan sampai
deadlock tidak ada lagi. Urutan pemilihan proses untuk pembatasan
harus didasarka pada berbagai Kriteria yang beresiko terkecil. Setiap
kali pembatalan dilakukan, algoritma deteksi harus dilakukan untuk
mengetahui apakah deadlock masih ada atau tidak.
4. Melakukan preemption sumber daya secara berurutan sampai
deadlock tidak ada lagi. Seperti pada 3, perlu digunakan pemilihan
berdasarkan resiko, dan pemanggilan algoritma deteksi setelah setiap
kali preemption diperlukan. Suatu proses yang memiliki sumber daya
yang diambil alih darinya harus di-rollback ke titik sebelum sumber
daya itu diperoleh.
Bagi pendekatan 3 dan 4, pemilihan criteria harus merupakan salah satu dari
yang disebutkan dibawah ini. Pilihlah proses yang
• Paling sedikit menghabiskan waktu proses sejauh ini
• Paling sedikit jumlah output yang dihasilkan sejauh ini
• Diperkirakan paling banyak memiliki sisa waktu
• Paling sedikit jumlah sumber daya yang dialokasikan sejauh ini
• Memiliki prioritas paling rendah
M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n | 145
• Sumber Daya Internal: Misalnya saluran-saluran I/O.
Urutan di atas merepresentasikan urutan dengan sumber-sumber daya
diassign. Urutan tersebut merupakan urutan yang beralasan, yang
mempertimbangkan urutan langkah yang dijalani prose selama masa hidupnya.
Di dalam tiap-tiap kelas, strategi berikut ini dapat digunakan:
• Swappable space: Pencegahan deadlock yang mengharuskan semua
sumber daya yang dibutuhkan yang dapat dipakai dialokasikan sekaligus,
seperti halnya pada strategi pencegahan hold-and-wait. Strategi ini cukup
masuk akal apabila kebutuhan storage maksimum diketahui, yang
merupakan keadaan yang sering terjadi. Penghindaran deadlock juga
merupakan kemungkinan.
• Sumber Daya Proses: Penghindaran akan lebih sering efektif bila
dilakukan didalam kategori ini, karena itu cukup beralasan meminta
proses agar mendeklarasikan sumber daya yang akan dibutuhkannya di
dalam kelas ini terlebih dahulu. Pencegahan dengan menggunakan
pengurutan sumber daya di dalam. Kelas ini juga dimungkinkan.
• Memori utama: Pencegahan dengan menggunakan preemption
merupakan strategi yang paling cocok bagi memori utama. Pada saat
proses di-preempt, prose situ cukup diswap kememori sekunder, yang
akan membebaskan ruang untuk mengatasi deadlock.
• Sumber Daya Internal: Pencegahan menggunakan pengurutan sumber
daya dapat digunakan.
REFERENSI UTAMA :
Silberschatz et.al (2014). Operating System Concept Essentials, 2nd Edition, New
Jersey, USA : John Wiley & Sons, Inc
Stalling, William. (2012). Operating Systems : Internals and Design Principles, 7th
Edition, Boston, USA : Prentice-Hall.Inc
146 | M a t e r i 6 . K o n k u r e n s i : D e a d l o c k d a n S t a r v a t i o n