DEADLOCK
Sinkronisasi diperlukan untuk
menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara
konkuren. Proses-proses disebut konkuren jika proses-proses itu ada dan
berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat
independen atau bisa juga saling berinteraksi. Proses-proses konkuren yang
saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga
menghasilkan output yang benar
Deadlock atau pada beberapa buku
disebut Deadly Embrace 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.
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.
1.
Peranan Deadlock
Menurut Coffman dalam
bukunya “Operating System” menyebutkan empat syarat bagi
terjadinyadeadlock, yaitu:
- Mutual Exclusion
- Suatu
kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada
suatu waktu.
- Hold and Wait
- Kondisi
yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat
meminta sumber daya yang lain.
- Non-pre-emptive
- Kondisi
dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat
diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
- Circular Wait
- Kondisi
yang menyatakan bahwa adanya rantai saling meminta sumber daya yang
dimiliki oleh suatu proses oleh proses lainnya.
2. Strategi
menghadapi Deadlock
Strategi untuk menghadapi deadlock dapat
dibagi menjadi tiga pendekatan, yaitu:
- Mengabaikan
adanya deadlock.
- Memastikan
bahwa deadlock tidak akan pernah ada, baik dengan metode
Pencegahan, dengan mencegah empat kondisi deadlock agar
tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu
mengizinkan empat kondisi deadlock, tetapi menghentikan setiap
proses yang kemungkinan mencapai deadlock.
- Membiarkan deadlock untuk
terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung,
yaitu:
- Pendeteksian deadlock,
untuk mengidentifikasi ketika deadlock terjadi.
- Pemulihan deadlock,
mengembalikan kembali sumber daya yang dibutuhkan pada proses yang
memintanya.
v Strategi Ostrich
Pendekatan yang paling sederhana adalah
dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan
seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul
berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama
sekali tidak dapat diterima dan semua keadaan deadlock harus
ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering
mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada
kompilator atau bugspada sistem operasi. Maka ongkos yang dibayar
untuk melakukan penanganan deadlock sangatlah besar dan lebih
baik mengabaikan keadaan deadlock tersebut. Metode ini
diterapkan pada sistem operasi UNIX dan MINIX.
3. Mencegah Deadlock
Metode ini merupakan metode yang paling
sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih
dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan
mengakibatkan kinerja utilisasi sumber daya yang buruk.
Metode pencegahan menggunakan pendekatan
dengan cara meniadakan empat syarat yang dapat menyebabkan deadlock terjadi
pada saat eksekusi Coffman (1971).
Syarat pertama yang akan dapat
ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yang
secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah
terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses
mengakses sebuah sumber daya yang sama akan menyebabkanchaos. Langkah
yang digunakan adalah dengan spooling sumber daya, yaitu
dengan mengantrikan job-job pada antrian dan akan dilayani
satu-satu.
Beberapa masalah yang mungkin terjadi
adalah:
- Tidak
semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool
- Kompetisi
pada ruang disk untuk spooling sendiri dapat mengarah
pada deadlock
Hal inilah yang menyebabkan mengapa
syarat pertama tidak dapat ditiadakan, jadi mutual exclusionbenar-benar
tidak dapat dihilangkan.
Cara kedua dengan meniadakan
kondisi hold and wait terlihat lebih menjanjikan. Jika suatu
proses yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat
menunggu sumber daya yang lain, maka deadlock dapat dicegah.
Langkah yang digunakan adalah dengan membuat proses agar meminta sumber daya
yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya
yang dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka
proses tersebut tidak dapat memulai prosesnya.
Masalah yang mungkin terjadi:
- Sulitnya
mengetahui berapa sumber daya yang dibutuhkan pada awal proses
- Tidak
optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya
beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses
yang telah memintanya dari awal.
Meniadakan syarat ketiga non
preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat
kedua, karena dengan meniadakan syarat ketiga maka suatu proses dapat
dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena hasil dari suatu
proses yang dihentikan menjadi tidak baik.
Cara terakhir adalah dengan meniadakan
syarat keempat circular wait. Terdapat dua pendekatan, yaitu:
- Mengatur
agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu
waktu, jika menginginkan sumber daya lain maka sumber daya yang dimiliki
harus dilepas.
- Membuat
penomoran pada proses-proses yang mengakses sumber daya. Suatu proses
dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi
permintaannya harus dibuat terurut.
Masalah yang mungkin terjadi dengan
mengatur bahwa setiap proses hanya dapat memiliki satu proses adalah bahwa
tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang
kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan
penomoran masalah yang dihadapi adalah tidak terdapatnya suatu penomoran yang
dapat memuaskan semua pihak.
Secara ringkas pendekatan yang digunakan
pada metode pencegahan deadlock dan masalah-masalah yang menghambatnya,
terangkum dalam tabel dibawah ini.
Tabel Deadlock
Syarat
|
Langkah
|
Kelemahan
|
Mutual Exclusion
|
Spooling sumber daya
|
Dapat menyebabkan chaos
|
Hold and Wait
|
Meminta sumber daya di awal
|
Sulit memperkirakan di awal dan
tidak optimal
|
No Pre-emptive
|
Mengambil sumber daya di tengah
proses
|
Hasil proses tidak akan baik
|
Circular Wait
|
Penomoran permintaan sumber daya
|
Tidak ada penomoran yang memuaskan
semua pihak
|
4. 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.
5. Mendeteksi Deadlock dan
Memulihkan Deadlock
Metode ini mengunakan pendekatan dengan
teknik untuk menentukan apakah deadlock sedang terjadi serta
proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah
kondisi deadlockdapat dideteksi, maka langkah pemulihan dari
kondisi deadlock dapat segera dilakukan. Langkah pemulihan
tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh
proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan
sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur)
suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran
besar.
Kesimpulan
Untuk mengatasi problem critical section
dapat digunakan berbagai solusi software. Namun masalah yang akan timbul dengan
solusi software adalah solusi software tidak mampu menangani masalah yang lebih
berat dari critical section. Tetapi Semaphores mampu menanganinya, terlebih
jika hardware yang digunakan mendukung maka akan memudahkan dalam menghadapi
problem sinkronisasi. Berbagai contoh klasik problem sinkronisasi berguna untuk
mengecek setiap skema baru sinkronisasi. Monitor termasuk ke dalam level
tertinggi mekanisme sinkronisasi yang berguna untuk mengkoordinir aktivitas
dari banyak thread ketika mengakses data melalui pernyataan yang telah
disinkronisasi. Kondisi deadlockakan dapat terjadi jika terdapat
dua atau lebih proses yang akan mengakses sumber daya yang sedang dipakai oleh
proses yang lainnya. Pendekatan untuk mengatasi deadlock dipakai
tiga buah pendekatan, yaitu:
- Memastikan
bahwa tidak pernah dicapai kondisi deadlock
- Membiarkan deadlock untuk
terjadi dan memulihkannya
- Mengabaikan
apa pun deadlock yang terjadi
- Dari
ketiga pendekatan diatas, dapat diturunkan menjadi empat buah metode untuk
mengatasideadlock, yaitu:
- Pencegahan deadlock
- Menghindari deadlock
- Mendeteksi deadlock
- Pemulihan deadlock
Namun pada sebagian besar Sistem Operasi
dewasa ini mereka lebih condong menggunakan pendekatan untuk mengabaikan
semua deadlock yang terjadi. Silberschatz (1994) merumuskan
sebuah strategi penanggulangan deadlock terpadu yang dapat disesuaikan dengan
kondisi dan situasi yang berbeda, strateginya sendiri berbunyi:
- Kelompokkan
sumber daya kedalam kelas yang berbeda
- Gunakan
strategi pengurutan linear untuk mencegah kondisi circular waityang
nantinya.
- Gunakan
algoritma yang paling cocok untuk suatu kelas sumber daya yang berbeda
satu dengan yang lain.
1. Definisi Deadlock
·
suatu kondisi di mana sekumpulan proses tidak dapat berjalan kembali atau
tidak adanya komunikasi antar proses
·
sekumpulan proses yang terblok yang tiap proses tersebut memegang sumber
daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh proses di
dalam kumpulan tersebut.
2. Model Deadlock
3. Penyebab Deadlock / Syarat
Terjadi Deadlock
·
Mutual Exclusion :
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
·
Hold and Wait
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
·
Non-pre-emptive
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
·
Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
4. Menghindari Deadlock
·
Sistem perlu memiliki informasi awal mengenai kebutuhan sumber daya
-Tiap proses menyatakan kebutuhan maksimum tiap jenis sumber yg dibutuhkan
-Algoritma deadlock-avoidance secara dinamis memeriksa state alokasi sumber
daya untuk menjamin tdk terjadinya kondisi circular-wait
-State alokasi sumber daya didefinisikan oleh banyaknya sumber daya yg
tersedia dan yg dialokasikan, dan permintaan sumber daya maksimum oleh proses
·
Jika proses meminta sumber daya yg tersedia, sistem harus memutuskan apakah
alokasi sumber daya ini akan menghasilkan safe state
·
Sistem berada pada safe state jika terdapat urutan
event yg tidak menyebabkan deadlock jika semua proses meminta sumber daya
maksimum sekaligus
• Logikanya:
– Jika sistem berada pd safe state no deadlock
– Jika sistem berada pd unsafe state kemungkinan deadlock
– Pencegahan: sistem tidak masuk ke
unsafe state
5. Mengatasi Deadlock
·
Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku
- Mutual Exclusion : membuat file spool untuk resource yang digunakan
bersama-sama
-Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang
dimilikinya ketika meminta resource baru
-Circular Waiting : memberikan penamaan resource berdasarkan urutan atau
level
-No Preemption : membolehkan adanya preemption
·
Avoidance : sistem menolak request terhadap resource yang berpotensi
deadlock, Algoritma Banker
-Resource manager menolak proses yang meminta resource yang berpotensi
deadlock
-Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut
akan dipaksa untuk melepaskan resource yang sudah dimiliknya
-Perlu adanya informasi tambahan
·
Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya,
kemudian melakukan recovery, Algoritma Ostrich
-Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat
checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil
6. Mencegah Deadlock
·
Tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan
tidak berlanjut sampai semuanya diberikan
·
Jika proses telah sedang memegang resource tertentu, untuk permintaan
berikutnya proses harus melepas dulu resource yg dipegangnya.
·
Beri pengurutan linear terhadap resource pada semua proses
7. Algoritma
Algoritma Bankir
Algoritma ini dapat digambarkan sebagai seorang bankir (Resources) di kota kecil yang berurusan dengan
kelompok orang yang meminta pinjaman (Proses). Jadi algoritma bankir ini
mempertimbangkan apakah permintaan mereka itu sesuai dengan jumlah dana yang ia
miliki, sekaligus memperkirakan jumlah dana yang mungkin diminta lagi. Jangan
sampai ia berada pada kondisi dimana dananya habis dan tidak dapat meminjamkan
uang lagi. Jika hal tersebut terjadi, maka akan terjadi kondisi deadlock. Agar kondisi aman, maka asumsi setiap pinjaman harus dikembalikan waktu
yang tepat.
Untuk sumber daya dengan instan banyak, ketika sebuah proses meminta sumber
daya ia harus menunggu terlebih dahulu. Ketika sebuah proses telah mendapatkan
semua sumber dayanya ia harus mengembalikannya dalam suatu batasan waktu.
Algoritma ini dapat ditulis secara lebih jelas sebagai berikut:
Let P ={P1, P2, P3, …., Pn}be set of all processes while P is not empty do
Seek Pi, an element of P that can finish
If no Pi can be found then
End algorithm: state is unsafe
else
Remove Pi from P
Return resource of Pi to allocated pool
end if
end while
End algorithm: state is safe
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.
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.
Karakteristik Deadlock
Karakteristik-karakteristik ini harus dipenuhi keempatnya untuk terjadi deadlock. Namun, perlu diperhatikan bahwa hubungan kausatif antara empat karakteristik ini dengan terjadinya deadlock adalah implikasi. Deadlock mungkin terjadi apabila keempat karakteristik terpenuhi.
Empat kondisi tersebut adalah:
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.
Penanganan Deadlock
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. Sehingga biasanya hanya diabaikan oleh sistem untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
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.
Pencegahan Deadlock
Pencegahan deadlock dapat dilakukan dengan cara mencegah salah satu dari empat karakteristik terjadinya deadlock. Berikut ini akan dibahas satu per satu cara pencegahan terhadap empat karakteristik tersebut.
1.Mutual Exclusion . Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi (non-sharable). Sedangkan pada sumber daya yang bisa dibagi tidak ada istilah mutual exclusive. Jadi, pencegahan kondisi yang pertama ini sulit karena memang sifat dasar dari sumber daya yang tidak dapat dibagi.
2.Hold and Wait . Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses meminta sumber daya, ia tidak sedang memiliki sumber daya lain. Atau bisa dengan proses meminta dan mendapatkan sumber daya yang dimilikinya sebelum melakukan eksekusi, sehingga tidak perlu menunggu.
3.No Preemption . Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila ada proses yang sedang memiliki sumber daya dan ingin mendapatkan sumber daya tambahan, namun tidak bisa langsung dialokasikan, maka akan preempted. Sumber daya yang dimiliki proses tadi akan diberikan pada proses lain yang membutuhkan dan sedang menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan semua sumber daya yang dibutuhkannya, termasuk sumber daya yang dimintanya terakhir.
4.Circular Wait . Kondisi 'lingkaran setan' ini dapat 'diputus' dengan jalan menentukan total kebutuhan terhadap semua tipe sumber daya yang ada. Selain itu, digunakan pula mekanisme enumerasi terhadap tipe-tipe sumber daya yang ada. Setiap proses yang akan meminta sumber daya harus meminta sumber daya dengan urutan yang menaik. Misalkan sumber daya printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak boleh sebaliknya.
Penghindaran Deadlock
Penghindaran terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari penghindaran adalah jangan sembarangan membolehkan proses untuk memulai atau meminta lagi. Maksudnya jangan pernah memulai suatu proses apabila nantinya akan menuju ke keadaan deadlock. Kedua, jangan memberikan kesempatan pada proses untuk meminta sumber daya tambahan jika penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita hindari.
Langkah lain untuk menghindari adalah dengan cara tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada. Selanjutnya terdapat deadlock-avoidance algorithm yang secara rutin memeriksa state dari sistem untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada kondisi safe state. Safe state adalah suatu kondisi dimana semua proses mendapatkan sumber daya yang dimintanya dengan sumber daya yang tersedia. Apabila tidak bisa langsung, ia harus menunggu selama waktu tertentu, kemudian mendapatkan sumber daya yang diinginkan, melakukan eksekusi, dan terakhir melepas kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single instances resources serta banker's algorithm untuk multiple instances resources.
Dalam banker's algorithm, terdapat beberapa struktur data yang digunakan, yaitu:
Available . Jumlah sumber daya yang tersedia.
Max . Jumlah sumber daya maksimum yang diminta oleh tiap proses.
Allocation . Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
Need . Sisa sumber daya yang masih dibutuhkan oleh proses, didapat dari max- allocation.
Kemudian terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state atau tidak.
Pendeteksian Deadlock
Pada dasarnya kejadian deadlock sangatlah jarang terjadi. Apabila kondisi tersebut terjadi, masing-masing sistem operasi mempunyai mekanisme penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi deadlock dapat langsung mendeteksinya. Namun, ada pula sistem operasi yang bahkan tidak menyadari kalau dirinya sedang mengalami deadlock. Untuk sistem operasi yang dapat mendeteksi deadlock, digunakan algoritma pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock adalah cara penanganan deadlock yang dilaksanakan apabila sistem telah berada pada kondisi deadlock. Sistem akan mendeteksi proses mana saja yang terlibat dalam kondisi deadlock. Setelah diketahui proses mana saja yang mengalami kondisi deadlock, maka diadakan mekanisme untuk memulihkan sistem dan menjadikan sistem berjalan kembali dengan normal.
Mekanisme pendeteksian adalah dengan menggunakan detection algorithm yang akan memberitahu sistem mengenai proses mana saja yang terkena deadlock. Setelah diketahui proses mana saja yang terlibat dalam deadlock, selanjutnya adalah dengan menjalankan mekanisme pemulihan sistem yang akan dibahas pada bagian selanjutnya. Berikut ini adalah algoritma pendeteksian deadlock.
Pemulihan Deadlock
Pemulihan kondisi sistem terkait dengan pendeteksian terhadap deadlock. Apabila menurut algoritma pendeteksian deadlock sistem berada pada keadaan deadlock, maka harus segera dilakukan mekanisme pemulihan sistem. Berbahaya apabila sistem tidak segera dipulihkan dari deadlock, karena sistem dapat mengalami penurunan performance dan akhirnya terhenti.
Cara-cara yang ditempuh untuk memulihkan sistem dari deadlock adalah sebagai berikut:
1.Terminasi proses. Pemulihan sistem dapat dilakukan dengan cara melalukan terminasi terhadap semua proses yang terlibat dalam deadlock. Dapat pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock secara satu per satu sampai 'lingkaran setan' atau circular wait hilang. Seperti diketahui bahwa circular wait adalah salah satu karakteristik terjadinya deadlock dan merupakan kesatuan dengan tiga karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi circular wait dapat memulihkan sistem dari deadlock.Dalam melakukan terminasi terhadap proses yang deadlock, terdapat beberapa faktor yang menentukan proses mana yang akan diterminasi. Faktor pertama adalah prioritas dari proses-proses yang terlibat deadlock. Faktor kedua adalah berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses menunggu sumber daya. Faktor ketiga adalah berapa banyak sumber daya yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, faktor utilitas dari proses pun menjadi pertimbangan sistem untuk melakukan terminasi pada suatu proses.
2.Rollback and Restart . Dalam memulihkan keadaan sistem yang deadlock, dapat dilakukan dengan cara sistem melakukan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan normal, sehingga sistem dapat memulai proses dari posisi aman tersebut. Untuk menentukan pada saat apa proses akan rollback, tentunya ada faktor yang menentukan. Diusahakan untuk meminimalisasi kerugian yang timbul akibat memilih suatu proses menjadi korban. Harus pula dihindari keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut tidak akan pernah sukses menjalankan eksekusi. - See more at: http://bayuzu.blogspot.com/2010/04/deadlock-deadlock-adalah-keadaan-dimana.html#sthash.d2w4Ozvr.dpuf
Tidak ada komentar:
Posting Komentar