Anda di halaman 1dari 4

Definisi Deadlock

Deadlock adalah keadaan dimana dua program memegang kontrol terhadap sumber daya yang
dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses masing-masing
sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang mengalah.

Penyebab Deadlock
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu
kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam
kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat
dilakukan oleh proses lain dalam himpunan tersebut.

Syarat terjadinya Deadlock

1.Mutual Exclusion . Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik
pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang
menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus menunggu
hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai menggunakannya. Suatu
proses hanya dapat menggunakan secara langsung sumber daya yang tersedia secara bebas.

2.Hold and Wait . Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling
menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal
satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya
yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan
adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi.
Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang
dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan
dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.

3.No Preemption . Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya
hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai
menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu sampai
sumber daya tersedia, tanpa bisa merebutnya dari proses yang memilikinya.

4.Circular Wait . Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus yang
berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang
dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan
seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir,
proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah proses-
proses tersebut akan selamanya menunggu.

Mencegah Deadlock

1. Masalah Mutual Eksklusif


Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu proses,maka hal ini
harus didukung oleh kemampuan sistem operasi. Jadi diusahakan agar tidak menggunakan
kondisi spesial tersebut sehingga sedapat mungkin deadlock dapat dihindari.
2. Masalah Kondisi Menunggu dan Memegang Penanggulangan deadlock dari kondisi ini lebih
baik dan menjanjikan, asalkan kita dapat memegang sumber daya untuk menunggu sumber daya
lain, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya yang ia
butuhkan sebelumproses berjalan. Tetapi masalahnya sebagian proses tidak mengetahui
keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakan
algoritma bankir. Sistem operasi atau sebuah protokol mengatur hal ini. Hasil yang dapat terjadi
adalah sumber daya lebih harus dispesifikasikan dan kelaparan sumber daya, atau proses yang
membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapatkan
sumber daya yang ia butuhkan.

3. Masalah tidak preemption


Hal ketiga ialah jangan sampai ada preemption pada sumberv daya yang telah dialokasikan.
Untuk memastikan hal ini, kita dapat menggunakan protocol. Jadi jika sebuah proses meminta
sumber daya yang tidak dapat ia penuhi saat itu juga, maka proses mengalami preempted.
Dengan kata lain ada sumber dayadilepaskan dan diberikan ke proses yang menunggu, dan
proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi. Cara lain yaitu dengan
mengecek apakah sumber daya yang dicari proses tersedia atau tidak. Jika ada maka langsung
dialokasikan tetapi jika tidak maka kita cek apakah ada proses lain yang sedang menunggu
sumber daya juga. Jika ya maka kita ambil sumber daya dari proses yang sedang menunggu
tersebut dan memberikan kepada proses yang meminta sumber daya tersebut. Jika tidak tersedia
juga maka proses tersebut harus menunggu. Dalam menunggu beberapa dari sumber dayanya
dapat saja dipreempted jika ada proses yang memintanya. Cara ini efektif untuk proses yang
menyimpan dalam memory atau register.

4. Masalah lingkaran tunggu


Masalah ini dapat ditangani oleh sebuah protocol yang menjaga agar sebuah proses tidak
membuat lingkaran sikus yang dapat mengakibatkan deadlock dengan cara memberikan
penomoran kepada sumber daya, dan bila suatu proses meminta sumber daya lagi maka ia hanya
dapat meminta sumber daya yang nomornya lebih tinggi dari yang ia minta sebelumnya.

Menghindari Deadlock

Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya
yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian
akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka
sumber daya akan diberikan pada proses yang meminta. Jika tidak aman, proses yang meminta
akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi
ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.

Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang
tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.

Kondisi Aman (Safe state)


Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat cara
untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock.
Dengan cara mengikuti urutan tertentu.

Kondisi Tak Aman (Unsafe state)


Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk
memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan
suatu urutan.

Gambar 3-17. Safe.

Unsafe state

Safe state

deadlock

Pemulihan Deadlock

1. Terminasi Proses
Abort semua proses yang deadlock
Metode ini akan mematahkan deadlock cycle, tetapi bisa saja proses-proses yang deadlock telah
dikomputasi dalam waktu yang lama dan hasil-hasil komputasi parsial harus dibuang, sehingga
ada kemungkinan harus dikomputasi ulang. Abort satu proses pada satu waktu sampai deadlock
tereliminir.
Metode ini sangat mungkin mendatangkan overhead, setelah setiap proses di-abort, algoritma
pendeteksian deadlock harus diminta kembali untuk menentukan apakah masih ada proses-
proses yang deadlock. Jika terminasi parsial digunakan, kita harus menentukan proses-proses
deadlock yang mana yang harus diterminasi. Penentuan ini pada dasarnya berkaitan dengan
ekonomi. Kita harus abort proses-proses yang terminasinya minimum cost. Sayangnya, minimum
cost tidak ditentukan satu hal. Banyak faktor yang
mempengaruhi pemilihan proses, mencakup:
- Apa prioritas dari proses
- Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan mengkomputasi
sebelum menyelesaikan tugasnya
- Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses
- Berapa sumber daya lagi yang dibutuhkan proses supaya selesai
- Berapa banyak proses yang perlu diterminasi
- Apakah proses interactive atau batch

2. Preempt Sumber Daya


Mengeliminasi deadlock menggunakan preempt sumber daya berarti kita berturut-turut preempt
beberapa sumber daya dari suatu proses dan memberikan sumber daya ini ke proses lain sampai
deadlock cycle patah.
Pada preempt sumber daya, tiga isu perlu dibicarakan:
- Memilih korban
Seperti pada terminasi proses, kita harus menentukan sumber daya dan proses mana yang akan
dipreempt dengan minimum cost. Faktor cost mencakup parameter-parameter seperti jumlah dari
sumber daya yang ditahan proses-proses yang deadlock dan jumlah waktu dari proses yang telah
digunakan selama eksekusinya.
- Rollback
Jika kita preempt sebuah sumber daya dari sebuah proses, proses tidak dapat berlanjut dengan
eksekusi normal karena proses kehilangan beberapa sumber daya yang diperlukan. Kita harus
rollback proses ke beberapa safe state dan restart dari state tersebut. Secara umum, sulit untuk
menentukan safe state.
Solusi termudah adalah dengan total rollback, abort proses, dan restart.
- Starvation
Dalam sebuah sistem di mana pemilihan korban berdasar primer pada faktor cost, dapat terjadi
suatu proses tidak pernah menyelesaikan tugasnya karena suatu sumber daya selalu di-preempt
pada proses yang sama. Kita harus memastikan bahwa sebuah proses dapat dipilih sebagai
korban hanya dengan batasan waktu tertentu. Solusi pada umumnya adalah dengan
menambahkan jumlah rollback ke dalam faktor cost.

Algoritma Bankir

Menurut Djikstra(1965) algoritma penjadwalan dapat menghindari deadlock dan algoritma


penjadwalan tersebut dikenal dengan algoritma bankir. Algoritma ini dapat digambarkan, ada
seorang bankir yang akan meminjamkan kepada peminjam-peminjamnya. Setiap peminjam
memberikan batas pinjaman maksimum. Tentu saja bankir tahu bahwa peminjam tidak akan
meminjam dana maksimum secara langsung melainkan bertahap. Bankir memprioritaskan kepada
peminjam yang meminjam dana lebih banyak, sedangkan yang lain disuruh menunggu hingga
peminjam yang lebih besar mengembalikan dananya, baru setelah itu iameminjamkan kepada
peminjam yang lain. Jadi algoritma bankir disini mempertimbangkan apakah permintaan proses
sesuai dengan jumlah sumber daya yang ada dan sekaligus memperkirakan jumlah sumber daya
yang mungkin diminta lagi. Jangan sampai ketika ada proses yang meminta sumber daya tetapi
sumber dayanya habis atau tidak ada lagi jika tidak maka akan terjadi deadlock.

Secara umum algoritma bankir dibagi menjadi 4 struktur data:


1. Tersedia: jumlah sumber daya yang tersedia
2. Alokasi: jumlah sumber daya yang dialokasikan untuk setiap proses
3. Maksimum: jumlah permintaan sumber daya oleh proses
4. Kebutuhan: maksimum-alokasi(sisa sumber daya yang dibutuhkan oleh proses setelah
dikurangi dengan yang dialokasikan)

Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990)
adalah sebagai berikut:
1. Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
2. Jumlah proses yang tidak tetap dan berubah-ubah.
3. Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
4. Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar
proses.
5. Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.

Anda mungkin juga menyukai