Apa sih yang dimaksud dengan DeadLock???????
Sering kali kita menemui kejadian dimana komputer kita tiba-tiba berhenti mendadak entah
karena apa. Kejadian ini dikenali sebagai kondisi komputer hang, atau dalam bahasa akademisi
disebut sebagai deadlock.
Sebelum mengetahui lebih lanjut apasih deadlock itu, disini ada sebuah contoh :
Contohnya adalah terdapat satu jalur pada jalan. Mobil
digambarkan sebagai proses yang sedang menuju sumber
daya. Untuk mengatasi hal tersebut, beberapa mobil harus
mundur.
A. PENGERTIAN DEADLOCK
DEADLOCK Adalah Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya
Proses 1 meminta resource 2 sedangkan resource 2 dipakai proses 2, namum proses 2 meminta resource 3 , dan resource 3 dipakai proses 3, dan proses 3 meminta resource ke resource 1.
Jadi dari gambar dapat disimpulkan Deadlock disebabkan karena
proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang
menunggu sumber daya yang dipegang oleh proses tersebut.
B.MODEL SISTEM
Pada sistem terdapat beberapa sumber daya (resource)
yang digunakan dalam proses - proses untuk
menyelesaikan permasalahan dan mencapai tujuan. Setiap
proses yang menggunakan sumber daya menjalankan
urutan operasi sebagai berikut :
• meminta (request) : meminta sumber daya
• memakai (use) : memakai sumber daya
• melepaskan (release) : melepaskan sumber daya
C.PENYEBAB DEADLOCK
1.Mutual Exclusion
2.Hold and Wait
3.Circular Waiting
4.No Preemption
Deadlock terjadi bila terdapat empat kondisi berikut ini secara simultan.
1. Mutual Exclusion : hanya satu proses pada satu waktu yang dapat menggunakan sumber
daya.
2. Genggam dan Tunggu (Hold and Wait) : suatu proses membawa sedikitnya satu sumber
daya menunggu mendapatkan tambahan sumber daya baru yang dibawa oleh proses
3. Non-Preemption : sebuah sumber daya dapat dibebaskan dengan sukarela oleh proses
yang memegangnya setelah proses menyelesaikan task.
4. Menunggu Secara Sirkuler (Circular Wait) : Terdapat sekumpulan proses {P0, P1, …,
P0} yang menunggu sumber daya dimana P0 menunggu sumber daya yang dibawa P1,
P1 menunggu sumber daya yang dibawa P2, dan seterusnya, Pn–1 menunggu sumber
daya yang dibawa oleh Pn, dan Pn menunggu sumber daya yang dibawa P0
.
Ketiga syarat pertama merupakan syarat perlu (necessary conditions) bagi terjadinya deadlock.
Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi di atas, tak mungkin terjadi
deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu,
tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock.
Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan
keharusan bagi terjadinya peristiwa deadlock. Bila salah satu saja dari kondisi tidak terpenuhi
maka deadlock tidak terjadi.
D.Graf Alokasi Sumber Daya
Deadlock dapat digambarkan dengan menggunakan
graf berarah yang disebut resource allocation graph
Notasi-notasi yang digunakan pada resource allocation graph adalah
gambar 1.
Himpunan
P, R dan E :
o P = {P1, P2, P3}
o R = {R1, R2, R3, R4}
o E = {P1 → R1, P2 → R3, R1 → P2, R2 → P2, R2
→ P1, R3 → P3}
Anggota sumber daya :
o Satu anggota dari tipe sumber daya R1.
o Dua anggota dari tipe sumber daya R2.
o Satu anggota dari tipe sumber daya R3.
o Tiga anggota dari tipe sumber daya R4.
Status proses :
o Proses P1 membawa satu anggota tipe sumber
daya R2 dan menunggu satu anggota tipe sumber
daya R1.
o Proses P2 membawa satu anggota R1 dan R2 dan
menunggu satu anggota tipe sumber daya R3.
o Proses P3 membawa satu anggota R3.
Fakta dasar dari resource allocation graph menunjukkan bahwa :
• Apabila pada graph tidak terdapat siklus maka tidak ada proses dalam sistem yang
deadlock
• Apabila pada graph terdapat siklus sistem kemungkinan deadlock dengan ketentuan:
o Jika pada setiap tipe sumber daya hanya terdapat satu anggota maka terjadi
deadlock
o Jika pada setiap tipe sumber daya terdapat beberapa anggota maka kemungkinan
terjadi deadlock
gambar 2 :
proses
P3 meminta satu anggota dari tipe sumber daya R2. Karena tidak tersedia anggota tipe sumber
daya tersebut, request edge P3 → R2 ditambahkan ke graph seperti pada. Pada
kasus ini, terdapat dua siklus pada sistem, yaitu :
P1 → R1 → P2 → R3 → P3 → R2 → P1
P2 → R3 → P3 → R2 → P2
Proses P1, P2 dan P3 terjadi deadlock. Proses P2 menunggu sumber daya R3 yang dibawa
proses P3. Proses P3 sebaliknya menunggu proses P1 atau P2 melepas sumber daya R2. Proses
P1 menunggu proses P2 melepas sumber daya R1
gambar 3:
P1 → R1 → P3 → R3 → P1
Akan tetapi pada sistem tidak terjadi deadlock. Terlihat bahwa proses P4 kemungkinan melepas
tipe sumber daya R2. Sumber daya tersebut kemudian dapat dialokasikan untuk P3 dan akan
menghapus siklus.
E.METODE MENANGANI DEADLOCK
Prevention(Pencegahan) : Menggunakan protocol
untuk menjamin bahwa sistem tidak pernah
memasuki status deadlock.
Avoidance( menghindari) : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker
Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich
F.MENCEGAH DEADLOCK
1.. Mencegah Mutual Exclusion
Mutual exclusion adalah hal yang tidak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.
Mutual exclusion adalah hal yang tidak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.
2. Mencegah Hold and Wait
Pencegahan menggunakan hold and wait adalah sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan semua sumber daya yang diperlukan dialokasikan sebelum proses memulai eksekusi atau mengizinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain
Pencegahan menggunakan hold and wait adalah sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan semua sumber daya yang diperlukan dialokasikan sebelum proses memulai eksekusi atau mengizinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain
3.mencegah non premption atau Peniadaan non - preemption
mencegah proses - proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu - menunggu.
mencegah proses - proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu - menunggu.
Cara mencegah
kondisi non - preemption
:
o Jika suatu proses yang membawa beberapa sumber
daya meminta sumber daya lain yang tidak dapat segera
dipenuhi untuk dialokasikan pada proses tersebut, maka
semua sumber daya yang sedang dibawa proses tersebut
harus dibebaskan.
o Proses yang sedang dalam keadaan menunggu,
sumber daya yang dibawanya ditunda dan ditambahkan
pada daftar sumber daya
.
o Proses akan di restart hanya jika dapat memperoleh
sumber daya yang lama dan sumber daya baru yang
diminta.
4. mencegah menunggu sirkular(circular wait)
Mencegah Kondisi Menunggu Sirkular
Sistem mempunyai total permintaan global untuk semua
tipe sumber daya. Proses dapat meminta proses kapanpun
diinginkan, tetapi permintaan harus dibuat terurut secara
numerik. Setiap proses yang membutuhkan sumber daya
dan memintanya maka nomor urut akan dinaikkan. Cara
ini tidak akan menimbulkan siklus. Masalah yang timbul
adalah tidak ada cara pengurutan nomor sumber daya
yang memuaskan semua pihak.
G.MENGHINDARI DEADLOCK
Metode alternatif untuk menghindari deadlock adalah menggunakan informasi tambahan tentang bagaimana sumber daya diminta.
Misalnya, pada sistem dengan satu tape drive dan satu printer,
proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive.
Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia, sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock.
Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh proses - proses.
Untuk penghindaran deadlock diperlukan pengertian mengenai state selamat (safe state) dan state tak selamat (unsafe state).
Metode alternatif untuk menghindari deadlock adalah menggunakan informasi tambahan tentang bagaimana sumber daya diminta.
Misalnya, pada sistem dengan satu tape drive dan satu printer,
proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive.
Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia, sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock.
Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh proses - proses.
Untuk penghindaran deadlock diperlukan pengertian mengenai state selamat (safe state) dan state tak selamat (unsafe state).
G.1 . State Selamat (Safe State)
Ketika suatu proses meminta sumber daya yang tersedia, sistem harus menentukan apakah alokasi sumber daya pada proses mengakibatkan sistem dalam stafe state. Sistem dikatakan dalam safe state jika sistem dapat mengalokasikan sumber daya untuk setiap proses secara berurutan dan menghindari deadlock. Urutan proses selamat jika untuk setiap Pi,
sumber daya yang masih diminta Pi masih memenuhi
sumber daya yang tersedia dan sumber daya yang dibawa
oleh setiap Pj, dimana j < i. Jika sumber daya yang
diperlukan Pi tidak dapat segera disediakan, maka Pi
dapat menunggu sampai semua Pj selesai. Ketika Pj
selesai, Pi dapat memperoleh sumber daya yang
diperlukan, mengeksekusi, mengembalikan sumber daya
yang dialokasikan dan terminasi. Ketika Pi selesai, Pi +1
dapat memperoleh sumber daya yang diperlukan dan
seterusnya.
Jika sistem dalam safestate maka tidak terjadi
deadlock, sedangkan jika sistem dalam state tidak selamat
(unsafe state) maka kemungkinan terjadi deadlock seperti
Gambar
H.Resource Allocation graph Algoritma
Algoritma RAG
• Request edge: Pi -> Rj
• Assignment edge: Rj -> Pi
• Claim edge: Pi-->Rj, proses Pi boleh meminta resource Rj suatu saat di masa depan Pada saat dibutuhkan claim edge, dikonversikan menjadi request edge • Jika suatu resource dilepas, maka assigment edge dikonversikan menjadi claim edge • Claim Pi--> Rj boleh ditambahkan pada graph jika semua edge yang berhubungan dengan Pi berupa claim edge
Untuk menghindari deadlock pada sistem yang hanya mempunyai satu anggota untuk setiap tipe sumber daya, dapat digunakan algoritma resource allocation graph.
#Claim edge Pi → Rj menandakan bahwa proses Pi mungkin meminta sumber daya Rj yang direpresentasikan dengan garis putus-putus. Claim edge akan berubah ke request edge bila proses meminta sumber daya. Bila sumber daya dibebaskan oleh proses, assignment edge diubah ke claim edge. Sumber daya sebelumnya harus diklaim pada sistem. Sehingga sebelum proses Pi mulai dieksekusi, semua claim edge harus muncul pada resource allocation graph.
Misalnya,
proses Pi meminta sumber daya Rj. Permintaan dapat dipenuhi hanya jika mengubah request edge Pi → Rj ke assignment edge Rj → Pi tidak menyebabkan siklus pada graf. Jika tidak terdapat siklus, maka alokasi sumber daya menyebabkan sistem dalam safestate Jika terjadi siklus, maka alokasi akan membawa sistem pada state tak selamat. Sehingga proses Pi harus menunggu permintaan dipenuhi.
Cara kerja algoritma Banker adalah dengan mempertimbangkan permintaan pinjaman yang diajukan oleh nasabah tersebut sesuai dengan uang yang dimiliki oleh bank, sekaligus mempertimbangkan jumlah pinjaman yang akan diajukan lagi oleh nasabah tersebut atau nasabah yang lainnya. Setiap nasabah memiliki batas kredit dan apabila nasabah telah mencapai batas kredit pinjaman, maka diasumsikan bahwa nasabah tersebut telah menyelesaikan bisnisnya dan dapat mengembalikan pinjamannya kepada bank. Jangan sampai dana yang ada pada bank habis dan tidak dapat melakuakn pinjaman lagi.
Bank tersebut berperan untuk menentukan apakah nasabah tersebut layak mendapatkan pinjaman yang diajukan atau tidak agar tidak terjadi kredit macet (atau dalam Sistem Operasi dikenal dengan deadlock). Dan apabila nasabah yang dalam pengembalian pinjamannya selalu telat secara berulang ditolak, sampai permintaan dap dipenuhi.
-Jika suatu proses mendapatkan semua sumber
daya maka proses harus mengembalikan semua sumber
daya dalam jangka waktu tertentu.
Struktur data yang digunakan untuk
mengimplementasikan algoritma Banker akan
menentukan state dari sumber daya yang dialokasikan
oleh sistem. Misalnya, n = jumlah proses dan m = jumlah
tipe resource. Struktur data yang diperlukan :
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
Seandainya proses P4 meminta sumber daya (3,3,0) tidak akan terpenuhi karena sumber daya tidak tersedia, sedangkan permintaan P0 (0,2,0) juga tidak dapat dipenuhi walaupun sumber daya tersedia, karena hasil status dalam keadaan tidak aman.
K.MENDETEKSI DEADLOCK
Jika sistem tidak menyediakan algoritma , mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan:
• Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi.
• Algoritma untuk memperbaiki dari deadlock.
Ketika suatu proses meminta sumber daya yang tersedia, sistem harus menentukan apakah alokasi sumber daya pada proses mengakibatkan sistem dalam stafe state. Sistem dikatakan dalam safe state jika sistem dapat mengalokasikan sumber daya untuk setiap proses secara berurutan dan menghindari deadlock. Urutan proses
enentukan aman atau tidak amannya alokasi proses ditentukan untuk menghindari terjadinya deadlock. Safe state diartikan dengan banyaknya sumberdaya yang sudah dialokasikan terhadap masing-masing proses. Sedangkan Unsafe state diartikan sebagai banyaknya sumberdaya yang belum dialokasikan kepada masing-masing proses, sehingga masih ada sumberdaya yang digunakan oleh beberapa proses. Contohnya yaitu:
Terdapat sumberdaya atau R=10
Tentukan pengalokasian agar tidak terjadi deadlock!
dengan sisa Resource yang ada yaitu 10-6=4
Jawab:
Yang pertama R akan dialokasikan ke A. Sehingga akan mendapat hasil seperti berikut:
Sisa 10-10=0 (tidak ada sisa sumberdaya yang dapat digunakan)
Dari pengalokasian diatas, ternyata mendapatkan hasil unsafe, jadi artinya terjadi deadlock apabila proses A dialokasikan pertama. Dimana proses A tidak pernah selesai untuk diproses dan proses B&C menunggu terus menerus. Maka dengan itu, kita akan mencari proses lain, yang akan di proses lebih awal sehingga tidak terjadi deadlock.
Melihat hal di atas, kemudian merubah susunan pengalokasian proses, dimana yang dialokasikan pertama adalah proses B. Pada awal siklus akan diperoleh hasil seperti berikut:
Sisa 10-8=2
Diakhir siklus akan diperoleh hasil seperti berikut:
Sisa 10-5=5 (terdapat 5 sumberdaya yang bisa digunakan/safe state)
Setelah pengalokasian ke proses B, akan dilanjutkan ke pengalokasian ke proses C. Dimana diawal proses akan diperoleh hasil seperti berikut:
Sisa 10-9=1
Diakhir siklus akan diperoleh hasil seperti berikut:
Sisa 10-2=8 (terdapat 8 sumberdaya yang bisa digunakan/ safe state)
Dan yang terakhir, pengalokasian dilakukan ke proses A. Sehingga di awal siklus didapat hasil seperti berikut:
Sisa 10-10=0
Diakhir siklus akan diperoleh hasil seperti berikut:
Sisa 10-0=10 (Terdapat 10 sumberdaya yang bisa digunakan dan sekaligus tidak ada proses yang akan diproses lagi). Dengan ini tidak terjadi deadlock.
H.Resource Allocation graph Algoritma
Algoritma RAG
• Request edge: Pi -> Rj
• Assignment edge: Rj -> Pi
• Claim edge: Pi-->Rj, proses Pi boleh meminta resource Rj suatu saat di masa depan Pada saat dibutuhkan claim edge, dikonversikan menjadi request edge • Jika suatu resource dilepas, maka assigment edge dikonversikan menjadi claim edge • Claim Pi--> Rj boleh ditambahkan pada graph jika semua edge yang berhubungan dengan Pi berupa claim edge
Untuk menghindari deadlock pada sistem yang hanya mempunyai satu anggota untuk setiap tipe sumber daya, dapat digunakan algoritma resource allocation graph.
#Claim edge Pi → Rj menandakan bahwa proses Pi mungkin meminta sumber daya Rj yang direpresentasikan dengan garis putus-putus. Claim edge akan berubah ke request edge bila proses meminta sumber daya. Bila sumber daya dibebaskan oleh proses, assignment edge diubah ke claim edge. Sumber daya sebelumnya harus diklaim pada sistem. Sehingga sebelum proses Pi mulai dieksekusi, semua claim edge harus muncul pada resource allocation graph.
Misalnya,
proses Pi meminta sumber daya Rj. Permintaan dapat dipenuhi hanya jika mengubah request edge Pi → Rj ke assignment edge Rj → Pi tidak menyebabkan siklus pada graf. Jika tidak terdapat siklus, maka alokasi sumber daya menyebabkan sistem dalam safestate Jika terjadi siklus, maka alokasi akan membawa sistem pada state tak selamat. Sehingga proses Pi harus menunggu permintaan dipenuhi.
gambar kanan. Misalnya P2
meminta R2. Meskipun R2 bebas, tetapi tidak dapat
dialokasikan untuk P2, karena akan menyebabkan siklus
pada graf (Gambar kanan). Siklus menandakan sistem dalam
state tak selamat (unsafe state). Jika P1 meminta R2 dan P2 meminta
R1, maka terjadi deadlock.
I.Algoritma Banker
Algoritma Banker adalah suatu metode untuk mengatasi deadlock yang dikemukakan oleh Dijkstra, algoritma ini disebut Banker karena memodelkan banker di sebuah kota kecil yang berhubungan dengan sekumpulan nasabah yang memohon kredit/pinjaman. Atau dapat dianalogikan seperti berikut :
- Sistem Operasi diibaratkan sebagai Bank.
- Resource diibaratkan sebagai uang.
- Proses diibaratkan sebagai nasabah.
Cara kerja algoritma Banker adalah dengan mempertimbangkan permintaan pinjaman yang diajukan oleh nasabah tersebut sesuai dengan uang yang dimiliki oleh bank, sekaligus mempertimbangkan jumlah pinjaman yang akan diajukan lagi oleh nasabah tersebut atau nasabah yang lainnya. Setiap nasabah memiliki batas kredit dan apabila nasabah telah mencapai batas kredit pinjaman, maka diasumsikan bahwa nasabah tersebut telah menyelesaikan bisnisnya dan dapat mengembalikan pinjamannya kepada bank. Jangan sampai dana yang ada pada bank habis dan tidak dapat melakuakn pinjaman lagi.
Bank tersebut berperan untuk menentukan apakah nasabah tersebut layak mendapatkan pinjaman yang diajukan atau tidak agar tidak terjadi kredit macet (atau dalam Sistem Operasi dikenal dengan deadlock). Dan apabila nasabah yang dalam pengembalian pinjamannya selalu telat secara berulang ditolak, sampai permintaan dap dipenuhi.
• Available : Vektor panjang m.
Jika Available[j] = k,
terdapat k anggota tipe sumber daya Rj yang tersedia.
• Max : matrik n x m.
Jika Max[i, j] = k, maka proses Pi
meminta paling banyak k anggota tipe resource Rj.
• Allocation : matriks n x m.
Jika Allocation[i, j] = k
maka Pi sedang dialokasikan k anggota tipe resource
Rj.
• Need : matriks n x m.
Jika Need[i, j] = k, maka Pi
membutuhkan k anggota tipe resource Rj untuk
menyelesaikan tugas bagiannya. Need[i, j] = Max[i, j]
– Allocation[i, j].
I.1Algoritma safety
Algoritma ini untuk menentukan apakah sistem berada dalam state selamat atau tidak.
1. Work dan Finish adalah vektor dengan panjang m dan n.
Inisialisasi : Work = Available dan Finish [i] = false untuk i = 1,3, …, n.
2. Cari i yang memenuhi kondisi berikut : (a) Finish [i] = false (b) Need [i] ≤ Work Jika tidak terdapat i ke langkah 4.
3. Work = Work + Allocation [i] Finish[i] = true Kembali ke langkah 2.
4. Jika Finish [i] = true untuk semua i, maka sistem dalam state selamat.
Algoritma ini untuk menentukan apakah sistem berada dalam state selamat atau tidak.
1. Work dan Finish adalah vektor dengan panjang m dan n.
Inisialisasi : Work = Available dan Finish [i] = false untuk i = 1,3, …, n.
2. Cari i yang memenuhi kondisi berikut : (a) Finish [i] = false (b) Need [i] ≤ Work Jika tidak terdapat i ke langkah 4.
3. Work = Work + Allocation [i] Finish[i] = true Kembali ke langkah 2.
4. Jika Finish [i] = true untuk semua i, maka sistem dalam state selamat.
Contoh Penggunaan Algoritma Banker
Diketahui sistem terdapat 5 proses yaitu P0 sampai P4, 3 tipe sumber daya yaitu A (10 anggota), B (5 anggota) dan C (7 anggota). Perhatikan gambaran sistem pada waktu T0.
Diketahui sistem terdapat 5 proses yaitu P0 sampai P4, 3 tipe sumber daya yaitu A (10 anggota), B (5 anggota) dan C (7 anggota). Perhatikan gambaran sistem pada waktu T0.
(work)
Proses Allocation Max Available ( Resource - Jumlah Alloc)
Proses Allocation Max Available ( Resource - Jumlah Alloc)
A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2 P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
--------------------+
7 2 5
Need ( Max - Alloc )
A B C
7 4 3
1 2 2
6 0 0
0 1 1
4 3 1
if , Need < = Available = Avilable + Alloc
P0 , 743 <= 332 X
P1, 122 <= 332 (Benar)
Available = Available + Alloc
332 + 200
532
P2 , 600 < = 532 X
P3 , 011 <= 532 (Benar)
Available = Available + Alloc
= 532 + 311
= 743
P4. 431 < = 743 (Benar)
Available = Available + Alloc
= 743 + 002
= 745
P0. 743 <= 745 ( Benar)
Available = Available + Alloc
= 745 + 010
= 755
P2. 600 <= 755 (Benar)
Available = Available + Alloc
= 755 + 302
= 10 5 7
Safe sequence < P1,P3,P4,P0,P2>
J.Algoritma Resource-Request Request
Algoritma Resource-Request Reques tmerupakan vektor permintaan untuk proses Pi.
Jika Requesti[j]=k, maka proses Pi menginginkan k instasi sumber daya Rj. Ketika permintaan sumber daya dibuat oleh proses Pi, beberapa aksi berikut diikutsertakan:
1. Jika Requesti ≤ Need, ke langkah 2. Selain itu berikan status kondisi error, karena melebihi batas maksimal kebutuhan.
2. Jika Requesti ≤ Available, ke langkah 3. Selain itu, Pi harus menunggu, karena sumber daya belum tersedia.
3. Sistem menganggap telah mengalokasikan sumber daya yang dibutuhkan untuk proses Pi, dengan memodifikasi status sebagai berikut:
Available = available-Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;
Jika hasil pengalokasian sumber daya dengan status aman, transaksi telah selesai dan proses Pi mengalokasikan sumber daya tersebut.
Namun jika status tidak aman, maka Pi harus menunggu selama Requesti dan sumber daya telah dikembalikan. Contoh ilustrasi, anggap sistem mempunyai lima proses P0 sampai P4 dan tiga tipe sumber daya A, B dan C. Sumber daya tipe A mempunyai 10 instansim tipe B mempunyai 5 instansi dan C mempunyai 7 instansi. Seandainya pada waktu T0, sistem mempunyai status:
Allocation Max Available
Proses A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
Matriks Need didefinsikan dari Max-Allocation, yaitu:
Need
Proses A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
Dari perhitungan di atas sistem dalam keadaan aman.
Anggap sekarang proses P1 meminta satu tambahan instansi sumber daya tipe A dan dua instansi tipe C,
jadi Request
1 = (1,0,2).
Untuk memutuskan permintaan mana yang dapat secara langsung dipenuhi,
pertama periksa apakah Request1 ≤ Available (yaitu, (1,0,2) ≤ (3,3,2)), bernilai TRUE.
Kemudian anggap permintaan ini dipenuhi, dan status yang baru adalah:
Allocation Need Available
Proses A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
Kita harus menentukan apakah status sistem aman(safe state). Untuk melakukannya kita eksekusi algoritma safety dan cari rangkaian memenuhi keadaan aman.
K.MENDETEKSI DEADLOCK
Jika sistem tidak menyediakan algoritma , mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan:
• Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi.
• Algoritma untuk memperbaiki dari deadlock.
K.1Satu Anggota untuk Setiap Tipe Sumber
Daya
Jika semua sumber daya hanya mempunyai satu
anggota, kita dapat menentukan algoritma mendeteksi
deadlock menggunakan bentuk resource allocation graph
yang disebut wait-for graph.
Garis dari Pi → Pj pada wait-for graph menandakan
bahwa proses Pi menunggu Pj melepaskan sumber daya
yang dibutuhkan Pi. Garis Pi → Pj terdapat pada wait-for
graph jika dan anya jika resource allocation graph berisi
dua garis Pi → Rq dan Rq → Pj untuk beberapa sumber
daya Rq seperti Gambar dibawah
K.2Beberapa Anggota untuk Setiap Tipe
Sumber Daya
Untuk tipe sumber daya yang mempunyai beberapa
anggota digunakan algoritma yang sejenis dengan algoritma Banker
K.3Penggunaan Algoritma Deteksi
Untuk menjawab kapan dan berapa sering
menggunakan algoritma deteksi, hal ini tergantung pada :
• Seberapa sering terjadi deadlock.
• Berapa proses yang perlu dilakukan roll back.
Jika algoritma deteksi digunakan, terdapat beberapa
siklus pada graf, hal ini tidak dapat mengetahui berapa
proses yang deadlock yang menyebabkan deadlock
L.PERBAIKAN DEADLOCK
Terdapat dua pilihan untuk membebaskan deadlock.
Satu solusi sederhana adalah dengan menghentikan satu
atau beberapa proses untuk membebaskan kondisi
menunggu sirkular. Pilihan kedua adalah menunda
beberapa sumber daya dari satu atau lebih proses yang
deadlock.
L.1Terminasi Proses
Untuk memperbaiki deadlock dengan terminasi
proses, dapat digunakan salah satu dari dua metode di
bawah ini
:
• Menghentikan (abort) semua proses yang deadlock
• Menghentikan satu proses setiap waktu sampai siklus
deadlock hilang.
L.2 Menunda Sumber Daya
Menunda Sumber Daya
Untuk menghilangkan deadlock dengan menunda
sumber daya, sumber daya dari proses harus ditunda dan
memberikan sumber daya tersebut ke proses lain sampai
siklus deadlock hilang.
Jika penundaan dibutuhkan untuk menghilangkan
deadlock,
terdapat tiga hal yang perlu diperhatikan :
• Pilihlah korban (sumber daya) yang mempunyai biaya
minimal.
• Lakukan rollback yaitu memulai kembali (restart)
proses pada state yang selamat
.
• Harus dijamin starvation tidak akan terjadi karena
kemungkinan beberapa proses selalu terpilih sebagai
korban termasuk jumlah rollback sebagai faktor biaya.
M.METODE KOMBINASI MENANGANI
DEADLOCK
Untuk menangani deadlock dilakukan kombinasi dari
tiga algoritma dasar yaitu mencegah deadlock,
menghindari deadlock dan mendeteksi deadlock.
Kombinasi ketiga algoritma ini memungkinkan
penggunaan yang optimal untuk setiap sumber daya pada
sistem.
KESIMPULAN
Deadlock adalah keadaan pada proses yang berhenti
akibat keadaan saling menunggu.
Deadlock terjadi karena
mutual exclusion, hold and wait, non – preemption,
menunggu secara sirkuler. Masalah ini dapat diselesaikan
dengan metode pencegahan, metode menghindari, metode
Ostrich. Jika sistem tidak menyediakan algoritma
mencegah ataupun meghindari deadlock, maka deadlock
harus dideteksi dan diperbaiki. Tantangan pada distribusi
data adalah menghindari masalah deadlock, dimana
banyak klien mengakses data secara bersamaan dan data
harus tetap konsisten (konkurensi).
Semoga Bermanfaat ^^
Sumber :
Buku Sistem Operasi Sri KusumaDewi
http://informatika.stei.itb.ac.id/~rinaldi.munir/Matdis/2010-2011/Makalah2010/MakalahStrukdis2010-089.pdf
http://informatika.stei.itb.ac.id/~rinaldi.munir/Matdis/2010-2011/Makalah2010/MakalahStrukdis2010-089.pdf















Komentar
Posting Komentar