Anda di halaman 1dari 16

MATERI 6

KONKURENSI : DEADLOCK
DAN STARVATION
Oleh :
Rafdavel oktamiranda (20066042)

6.1 PRINSIP – PRINSIP DEADLOCK


Deadlock dapat didefenisikan sebagai pemblokiran permanen sejumlah
proses yang berkompetisi dalam mendapatkan sumber daya system atau yang
berkomunikasi satu dengan lainnya. Tidak seperti masalah – masalah
manajemen proses konkuren lainnya, secara umum dalam deadlock tidak ada
solusi yang efisien untuk mengatasinya.
Semua deadlock mencakup konflik kebutuhan akan sumber daya oleh dua
proses atau lebih. Contoh yang umum adalah deadlock lalu lintas. Gambar 6.1a
menunjukkan situasi empat mobil tiba dipersimpangan empat arah dalam waktu
yang hampir bersamaan. Keempat kuadran persimpangan itu merupakan
sumber daya yang memerlukan control. Pada suatu saat, apabila keempat mobil
itu ingin melintasi persimpangan, persyaratan sumber dayanya adalah sebagai
berikut :
• Mobil yang bergerak ke utara membutuhkan kuadran 1 dan kuadran 2.
• Mobil yang bergerak ke barat membutuhkan kuadran 2 dan kuadran 3.
• Mobil yang bergerak ke selatan membutuhkan kuadran 3 dan kuadran 4. 
Mobil yang bergerak ke timur membutuhkan kuadran 4 dan kuadran 1.
Aturan jalan raya yang normal adalah bahwa mobil yang berada di
persimpangan empat arah harus memberikan jalan kepada mobil yang berada di
sebelah kanannya. Aturan ini akan berfungsi apabila terdapat hanya dua atau
tiga mobil di persimpangan itu. Misalnya, apabila hanya mobil yang menuju utara
dan yang menuju barat tiba di persimpangan, mobil yang menuju utara akan
menunggu, sedangkan mobil yang menuju barat melanjutkan perjalanannya.
Namun apabila empat buah mobil tiba di persimpangan pada saat yang hampir
bersamaan, keempat mobil itu akan menahan diri melintasi persimpangan, yang
akan menyebabkan deadlock.
Gambar 6.1 Ilustrasi peristiwa Deadlock
Apabila keempat mobil itu mengabaikan aturan dan melanjutkan perjalanan
dengan melintasi persimpangan, keempat mobil itu akan mengambil satu sumber
daya (satu kuadran) namun tidak dapat melanjutkan perjalanannya karena
sumber daya yang kedua yang diperlukannya telah diambil oleh mobil lainnya.
Demikian juga, hal ini akan menyebakan deadlock.

Gambar 6.2 Contoh Deadlock


Sekarang kita perhatikan penggambaran deadlock yang terdiri dari proses –
proses dan sumber daya computer. Gambar 6.2 menjelaskan keadaan dua
proses yang sedang berkompetisi untuk mendapatkan dua sumber daya.

Di dalam gambar 6.2 Sumbu x mempersentasikan kemajuan eksekusi P


dan sumbu y mempersentasikan kemajuan sumbu Q. Karena itu kemajuan
132 | 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
gabungan kedua proses dapat dipersentasikan dengan sebuah lintasan yang
bergerak dari sebuah sumbu kea rah timur laut . pada system uniprosesor , pada
saat tertentu hanya satu proses yang dapat melkukan eksekusi , dan lintasan
terdiri dari segment – segment horizontal dan vertikal , dengan segmen
horinzontal yang ,mempersentasikan priode pada P melakukan eksekusi dan Q
menunggu , sedangkan segment verikal mempersentasikan periode pada saat q
melakukan eksekusi dan P menunggu.
Gambar 6.2 menunjukkan lintasan eksekusi yang berbeda. Lintasan – lintasan
tersebut dapat dirangkum sebagai :
1. Q mendapatkan B kemudian A, dan kemudian melepaskan B dan A pada
saat P melanjutkan eksekusinya , proses tersebut dapat mendapatkan
kedua sumber daya itu
2. Q mendapatkan B kemudian A, P melakukan eksekusi kemudian
memblokir permintaan untuk A. Q melepaskan B dan A. Pada saat P
melanjutkan eksekusinya proses tersebut dapat mendapatkan kedua
sumber daya itu
3. Q mendapatkan B kemudian P mendapatkan A kemudian . Deadlock
tidak dapat dihindarkan , karena begitu eksekusi berlangsung , Q akan
memblokir A dan P akan memblokir B
4. P mendapatkan A kemudian Q mendapatkan B kemudian. Deadlock
tidak dapat dihindarkan , karena begitu eksekusi berlangsung , Q akan
memblokir A dan P akan memblokir B
5. P mendapatkan A kemudian B, Q eksekusi akan memblokir permintaan
untuk B. P melepaskan A dan B. pada saat Q melanjutkan eksekusi ,
maka proses tersebut bias mendapatkan kedua sumber daya itu
6. P mendapatkan A kemudian B, Dan setelah itu melepaskan A dan B , Q
melanjutkan eksekusi , maka proses tersebut bias mendapatkan kedua
sumber daya itu

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

A. Sumber daya dapat dipakai kembali (reusable resource)


Sumber daya tibagi menjadi 2 yaitu sumber daya yang dapat dipakai kembali
dan sumber daya habis pakai, sumber daya yang dapat dipakai kembali
adalah sumber daya yang pada saat tertentu dapat dugunakan dengan
aman hanya dengan satu proses dan tidak akan habis oleh adanya
pemakaian itu. Proses memperoleh unit – unit sumber daya yang kemudian
dilepaskan unutk dapat digunakan lagi oleh proses – proses lainnya. Contoh
– contoh sumber daya yang dapat digunakan kembali adalah: prosesor,
saliran I/O , memori utama dan memori sekunder , perangkat dan struktur
struktur data , seperti file, database , dan semaphore.
Deadlock akan terjadi apabila kedua proses berlanjut ke permintaan proses
yang kedua. Apabila jumlah memori yang diminta tidak diketahui terlebih
dahulu , maka akan sulit untuk menghadapi deadlock ini menggunaka
kendala rancangan system . cara terbaik untuk menghadapi masalah seperti
ini adalah dengan menggunakan virtual memori.

B. Sumber daya habis pakai (Consumable resource)


Sumber daya habis pakai yang dapat dibuat(diproduksi) dan di pakai
(consumable). Umunya , tidak ada batasan sumber daya habis pakai jenis
tertentu. Proses yang memproduksi dan yang tidak terblokir dapat
melepaskan beberapa sumber daya seperti itu. Pada saat suatu sumber
daya dipegang oleh proses , daya tersebut tidak muncul . beberapa contoh

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.

Deadlock akan terjadi bila receive memblokir. Sekali lagi, kesalahan


rancangan menjadi sebab terjadinya deadblock.kesalaham seperti itu hampir
tidak terlihatdan sangat sulit dideteksi.selain itu,kesalahan itu menggunakan
kombinasi event yang jarang menyebabkan terjadinya deadblock;jadi sebuah
program harus dipakai dalam waktu yang lama,bahkan tahunan,sebelum
masalah itu terjadi.
Tidak ada satupun stategi yang efektif yang dapat mengatasi semua jenis
deadblock Ttabel 6.1 merangkum elemen-elemen utama pendekatan yang
paling penting yang telah berhasil diciptakan:deteksi,pencegahan, dan
penghindaran.kita membahas ketiga pendekatan itu satu per satu.

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)

Gambar 6.4 Circuit Wait

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.

6.2 PENCEGAH DEADLOCK


Strategi pencegahan deadlock adalah dengan merancang sistem sedemikian
rupa sehingga kemungkinan terjadinya deadlock ditiadakan secara apriori. Kita
dapat membagi metode pencegah deadlock menjadi dua golongan.metode
pencegahan deadlock secara tak langsung adalah dengan mencegah teradinya
salah satu dari ketiga kondisi yang diperlukan (item 1 hingga3).metode
pencegahan deadlock secara langsung adalah dengan mencegah terjadinya
circular wait (item 4).sekarang kita akan membahas teknikteknik yang berkaitan
dengan empat kondisi tersebut.

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.

B. Hold and Wait


Kondisi hold and wait dapat di cegah dengan mengharuskan proses
meminta semua sumber daya yang dibutuhkan sekaligus dan memblokir
proses itu sampai semua permintaan dapat diberikan secara
bersamaan.pendekatan ini tidak efisien dalam dua hal. Pertama, proses
dapat ditahan dalam waktu yang lama untuk menunggu semua permintaan
sumber dayanya dipenuhi, sedangkan dalam kenyataan proses itu harus
menjalankannya hanya dengan beberapa sumber daya. Kedua, sumber-
sumber daya yang dialokasikan ke suatu proses dapat tetap tidak digunakan
dalam periode waktu tertentu, selama sumber-sumber daya itu ditolak oleh
proses-proses lainnya.

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.

6.3 PENGHINDARAN DEADLOCK


Suatu pendekatan untuk menyelesaikan masalah deadlock yang agak
berbeda dengan pencegahan deadlock (deadlock prevention) adalah

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

A. Process Initiation Denial


Perhatikan system yang terdiridari n buah proses dan m jenissumberdaya
yang berbeda. Kita ketahui vektor- vector dan matriks-matriks berikut ini:
Sumber = (R1, R2, …, Rm) Jumlah total sumberpadasistem
Tersedia = (V1, V2, …,Vm) Jumlah total tiap- tiap sumber
tidak dialokasikan untuk sebuah proses

Claim keperluan tiap proses untuk tiap-tiap


sumber

Allocation alokasi sekarang

Matriks klaim memberikan kebutuhan maksimum setiap proses


persumberdaya, dengan satu baris didedikasikan bagi masing- masing
proses. Dengan kata lain, Ci j = kebutuhan proses I akan sumber daya j.
informasi ini harus dideklarasikan terlebih dahulu oleh suatu proses agar
penghindaran deadlock dapat berfungsi. Demikian juga, Aij alokasi sumber
daya saat itu bagi proses i. berikut ini hubungan- hubungan yang harus
dipenuhi :

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

B. Resource Allocation Denial


Strategi resource allocation denial, yang dikenal sebagai bunker’s algorilum,
untuk pertama kalinya diajukan didalam [DIJK65]. Kita awali dengan
membahas konsep state (keadaan) dan safe state. Ambil sebuah system
yang memiliki jumlah proses yang tetap dan jumlah sumber daya yang tetap.
Suatu saat tertentu proses dapat memiliki alokasi sumber daya yang
berjumlah nol atau lebih. State suatu system merupakana lokasi sumber
daya saat itu terhadap prose- prosesnya. Jadi, state terdiri dari dua vector,
Resource dan Available, dan dua matriks, Cloaim da Allocation, yang akan
dibahas kemudian. Safe state adalah suatu state yang setikdaknya terdapat
satu rangkaian dengans emua proses yang dapat berjalan hingga selesai
yang tidak menyebabkan terjadinya deadlock. Tentu saja unsafe state
adalah state yang tidak aman (safe).
Contoh dibawah ini akan menjelaskan konsep- konsep diatas. Gambar 6.5a
system state yang terdiri dari empat proses dan tiga proses. Jumlah total
sumber daya R1, R2, R3 adalah masing- masin gsebesar 9,3dan 6 unit.
Dalam state saatini, alokasi telah dilakukan bagi empat proses, yang
menyisakan satu proses unit sumber daya 2 dan satu unit sumber daya 3.
Pertanyaanya adalah: Apakah hal itu merupakan safe state? Untuk:
menjawab pertanyaan tersebut, kita pertanyaan lainnya: Dapatkah salah
satu diantara keempat proses itu berjalan hingga seleasai dengan sumber
daya yang tersedia?
Dengan kata lain, dapatkah perbedaan alokasi saat itu dengan kebutuhan
maksimum sembarang proses dipenuhi oleh suber daya yang tersedia?
Jelas, hal itu tidaklah mungkin bagi P1, yang hanya memiliki satu unit R1,
dan membutuhkan dua unit lagi R1, dua unit R2, dan dua unit R3. Namun,
dengan meng-assign satu unit R3 ke proses P2, P2 memiliki alokasi sumber
daya maksimum yang dibutuhkannya dan dapat berjalan hingga selesai. Kita
asumsikan bahwa hal tersebut dapat dicapai, pada saat P2 selesai, sumber
dayanya dapat dikembalikan ke pool sumber daya yang tersedia. State yang

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.

Gambar 6.7 Penetapan Unsafe State Claim Matriks


Apabila hal itu terjadi, system akan kembali ke safe state. Jadi, strategi
penghindaran deadlock tidak dapat memprediksi deadlock dan menjamin
bahwa tidak aka nada kemungkinan terjadinya deadlock.
Listing algoritma berikut ini memberikan versi logic penghindaran deadlock
secara abstrak. Algoritma utamanya ditunjukan pada bagian (b). dengan
state system yang ditetapkan oleh struktur data state, request [S] merupakan
vector yang menetapkan sumber daya yang diminta oleh proses i. pertama-
tama, dilakukan pemeriksaan untuk menjamin bahwa permintaan itu tidak
akan melampaui klaimorisinal proses. Apbila permintaan valid, lagkah
berikutnya adalah menentukan kemungkinan untuk memenuhi permintaan.
Untuk melakukan hal tersebut, sumber daya untuk sementara di-assign ke
proses dari newstate. Kemudian, pemeriksaan keamanan dilakukan dengan
menggunakan algoritma yang terdapat pada Listing c.
Penghindaran deadlock memiliki kelebihan yang tidak perlu dilakukan
preemption dan roolback proses, seperti halnya dalam deteksi deadlock, dan
kurangnya restriktif dari pencegahan deadlock. Namun, strategi ini memiliki
sejumlah keterbatasan dalama penggunaannya.
• Jumlah kebutuhan sumber daya maksimum bagi setiap proses harus
di tetapkan terlebih dahulu.

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.

6.4 DETEKSI DEADLOCK


Strategi pencegahan deadlock yang sangat konservatif ; strategi ini
menyelesaikan masalah deadlock dengan cara membatasi akses ke sumber
daya dan dengan menggunakan pembatasan terhadap proses. Pada hal ini
ekstrem lainnya, strategi deteksi deadlock tidak membatasi akses sumber daya
atau membatasi aksi-aksi proses. Dengan menggunakan deteksi deadlock,
sumber daya yang di minta akan diberikan kepada proses setiap kali di
mungkinkan. Secara teratur, system operasi melakukan algoritma yang
memungkinnya untuk mendeteksi kondisi circular-wait yang dijelaskan kepada
kondisi (4) terdahulu dan dijelaskan didalam Gambar 6.4.

A. Algoritma Deteksi Deadlock


Pemeriksaan deadlock dapat dilakukan setiap kali terjadi permintaan sumber
daya atau, agak tidak terlalu sering bergantung pada besarnya kemungkinan
deadlock akan terjadi. Pemeriksaan setiap kali adanya permintaan sumber
daya memiliki dua keuntungan: pemeriksaan seperti ini akan menyebabkan
terjadinya deteksi yang lebih awal, dan algoritma relative sederhana karena
didasarkan pada perubahan incremental ke state system itu. Di pihak lain,
pemeriksaan sesering itu akan menghabiskan waktu prosessor.
Algoritma umum untuk deteksi deadlock adalah seperti yang dijelaskan
menggunakan matriks Allocation dan Available yang dijelaskan dalam
subsub diatas. Di samping itu, ditentukan pula matriks permintaan Q
sehingga qi j mempresentasikan jumlah sumber daya yang berjenis j yang
diminta oleh proses i. algoritma berlangsung dengan menjadi proses yang
tidak berdeadlock. Pada saat awal, semua proses tidak bertanda. Kemudian,
langkahlangkah berikut ini dilakukan:
1. Tandai setiap proses yang memiliki baris dalam matriks alokasi yang
seluruh nya nol.
2. Inisialisasi vector temporer W sehingga sama dengan vector Available
(tersedia).
3. Temukan suatu indeks I sehingga proses I yang saat itu tidak bertanda
dan baris ke I pada Q lebih kecil atau sama dengan W. yaitu, Qik<Wk,
untuk 1<k<m. Apabila baris seperti itu tidak ditemukan, hentikan algoritma
tersebut.

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 :

Gambar 6.8 Contoh deteksi deadlock


1. Gagalkan semua proses yang ber-deadlock. Pendekatan ini, percaya
atau tidak merupakan salah satu solusi yang paling umum digunakan,
apabila tidak dapat dikatakan sebagai yang paling umum digunakan,
yang digunakan didalam system operasi.
2. Buatlah back-up proses ber-deadlock ke checkpoint yang ditetapkan
sebelumnya dan mulailah lagi semua proses. Hal ini mensyaratkan
bahwa mekanisme rollback dan restart harus dimasukkan kedalam
system. Resiko yang dimiliki pendekatan ini adalah bahwa deadlock

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

6.5 STRATEGI DEADLOCK TERINTEGRASI


Terdapat kelebihan dan kekurangan pada semua strategi yang berkaitan
dengan deadlock. Daripada harus membuat rancangan fasilitas system operasi
yang hanya menggunakan salah satu strategi tersebut, akan lebih efisien apabila
menggunakan strategi yang berbeda di dalam situasi yang berbeda. [SILB94]
menganjurkan sebuah pendekatan:
• Kelompokkan sumber daya ke dalam kelas-kelas sumber daya yang
berbeda.
• Gunakan strategi pengurutan linier yang telah ditetapkan sebelumnya
untuk mencegah circular-wait sehingga akan mencegah
deadlockdeadlock yang terdapat di antara kelas-kelas sumber daya.
• Di dalam kelas sumber daya, gunakan algoritma yang paling cocok bagi
kelas itu.
Sebagai contoh teknik tersebut, perhatikan kelas-kelas sumber daya di
bawah ini:
• Swappable space: Blok-blok memori pada penyimpan sekunder untuk
digunakan dalam proses-proses swapping.
• Sumber Daya Proses: Perangkat yang dapat di-assign, misalnya tape
drive, dan file.
• Memori utama: Dapat di-assign dalam betuk page atau segmen ke
proses-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 | 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

Anda mungkin juga menyukai