Anda di halaman 1dari 29

SISTEM OPERASI

Deadlock dan Starvation


Oleh: Muharriana Maisara Evayanti

DEADLOCK
Suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. 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.

Contoh Persimpangan Jalan

Hanya terdapat satu jalur Mobil digambarkan sebagai proses yang sedang menuju sumber daya. Untuk mengatasinya beberapa mobil harus preempt (mundur) Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya).

Model-Model Deadlock

Model deadlock dua proses dan dua sumber daya


P
0

R1

R0

P
1

Skenario yang menimbulkan deadlock

P0

R1

R0

P1

P0

R0

R1

P1

Syarat-Syarat terjadinya Deadlock


Mutual exclution condition Tiap sumber daya saat itu diberikan pada tepat satu proses / proses meng-klaim kontrol eksklusif terhadap sumber daya yang dibutuhkannya. Hold and wait condition / kondisi genggam dan tunggu Proses-proses yang sedang menggenggam sumber daya yang telah dialokasikan untuknya sementara menunggu sumber daya sumber daya tambahan yang baru. Non-preemption condition / kondisi non-preemption Sumber daya sumber daya yang sebelumnya diberikan tidak dapat diambil paksa dari proses sampai sumber daya tersebut digunakan sampai selesai. Sumber daya sumber daya harus secara eksplisit dilepaskan dari proses yang menggenggamnya. Circular wait condition / kondisi menunggu secara sirkular Harus terdapat rantai sirkuler / satu lingkaran proses dari dua proses atau lebih dimana setiap proses memegang satu atau lebih sumber daya yang diminta oleh proses berikutnya pada lingkaran tersebut, masing-masing menunggu sumber daya yang digenggam oleh anggota berikutnya pada rantai itu.

Metode-metode mengatasi deadlock


deadlock prevention / metode pencegahan terjadinya deadlock
pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Jika mulainya satu atau lebih proses akan menyebabkan terjadinya deadlock, proses tersebut tidak akan dimulai sama sekali. tiap proses harus meminta resource yang dibutuhkan sekaligus dan tidak bisa berjalan sampai semua di dapat (untuk wait for) jika ada resourcce yang tidak terpenuhi, yang lainnya harus dilepas (untuk no preemption) urutkan tipe-tipe resource secara linier / linier ordering (untuk circular wait)

Metode-metode mengatasi deadlock

Deadlock avoidance / metode penghindaran terjadinya deadlock


menghindarkan kondisi yang paling mungkin menimbulkan deadlock agar memperoleh sumber daya lebih baik. Penghindaran bukan berarti menghilangkan semua kemungkinan terjadinya deadlock. Jika sistem operasi mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem menolak / menghindari pengaksesan itu. Dengan demikian menghindari terjadinya deadlock. Contohnya dengan menggunakan algoritma Banker yang diciptakan oleh Dijkstra.

Metode-metode mengatasi deadlock Deadlock detection and recovery / metode deteksi dan pemulihan dari deadlock
deteksi digunakan pada sistem yang mengijinkan terjadinya deadlock, dengan memeriksa apakah terjadi deadlock dan menentukan proses dan sumber daya yang terlibat deadlock secara presisi. Begitu telah dapat ditentukan, sistem dipulihkan dari deadlock dengan metode pemulihan. Metode pemulihan dari deadlock sistem sehingga beroperasi kembali, bebas dari deadlock. Proses yang terlibat deadlock mungkin dapat menyelesaikan eksekusi dan membebaskan sumber dayanya.

Pencegahan deadlock
Meniadakan mutual exclusion : yaitu mencegah hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu, Meniadakan syarat Hold dan Wait, cara ini dapat dilakukan dengan: mengalokasikan semua sumber daya atau tidak sama sekali dan hold and release. proses untuk mengalokasikan semua sumber daya atau tidak sama sekali permintaan ini hanya dapat dilayani bila semua sumber daya tersedia, jika sumber daya tersedia proses dialokasikan jika diperlukan dan berjalan sampai selesai. Jika sumber daya tidak tersedia atau hanya satu sumber daya maka proses harus menunggu sampai semua sumber daya yang diperlukan tersedia untuk dialokasikan padanya, yang menjadi permasalahan adalah sukar untuk mengetahui lebih dulu sumber daya yang diperlukan suatu proses karena pada awal proses tidak diketahui berapa sumber daya yang diperlukan, jika proses hanya butuh satu disk diawal eksekusi (atau lebih buruk lagi tanpa disk) dan menistrahatkan disk-disk yang lain. Perlunya proses utnuk menerima seluruh disk yang diperlukan sebelum eksekusi dimulai menyebabkan sumber daya komputer menganggur dalam waktu yang lama, sementara proses yg memerlukan harus menunggu. Hold and release (genggam dan lepas)yaitu pada saat terjadi permintaan satu sumber daya Maka proses harus melepaskan sumber daya lain yg telah digunakan, jadi hanya satu sumber daya yg dialokasikan untuk proses. Cara ini tidak mungkin karena ada proses yang di Syaratkan harus memegang beberapa sumber daya sekaligus,misalnya menggambar pada Plotter yang memerlukan plotter serta disk untuk menyimpan data gambar yang diplot.

Pencegahan deadlock
meniadakan kondisi non preempation :yaitu mencegah proses lain harus menunggu menunggu proses preemption sehingga tidak ada tunggu menunggu. Contohnya : saat proses A menulis ke printer tiba-tiba di stop oleh proses B yang juga akan menulis ke printer yang sama bila dimungkinkan preemption ini maka kedua proses akan mencetak seca ra tidak benar. Meniadakan kondisi menunggu sirkular: Kondisi ini dapat ditiadakan dengan cara yaitu proses hanya dibolehkan menggenggam satu sumber daya pada satu saat , jika perlu sumber daya yang kedua maka proses harus melepaskan sumber daya pertama. (sama dengan hold & release), cara ini tidak dimungkinakn karena terdapat proses yang mengharuskan memegang lebih dari satu sumber daya pada saat yg sama untuk menyelesaikan prosenya. Untuk meniadakan kondisi sirkular juga dapat dilakukan dengan penomoran global semua Sumber daya, karena proses dapat meminta kapanpun proses menginginkan,tetapi permintaan dibuat terurut secara numerik, cara ini tidak menimbulkan siklus , permasalah yang timbul tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.

Pencegahan deadlock
Havendar mengemukakan bahwa jika keempat syarat tersebut diatas tidak dipenuhi maka tidak akan terjadi deadlock, sehingga Havendar menyarankan strategi strategi untuk meniadakan dengan syarat :
Setiap proses harus meminta semua sumber yang diperlukan sekaligus dan tidak berlanjut sampai semua diberikan. Jika proses telah/sedang memegang sumber daya tertentu , untuk permintaan berikutnya Proses harus melepas sumber daya yang dipegangnya , jika diperlukan proses harus meminta kembali sekaligus dengan sumber daya yang baru. Buat urutan yang linear untuk semua sumber daya pada semua proses, jika proses telah dialokasikan pada suatu type sumber daya maka proses berikutnya boleh meminta type sumber daya berikutnya.

Penghindaran Deadlock
Gagasan dasar penghindaran deadlock adalah untuk memberi akses ke permintaan sumber daya yang tidak menimbulkan deadlock, cara ini biasa digunakan dengan mengalokasikan sumber daya dan memeriksa dampak pemberian akses ke suatu permintaan Jika pemberian akses sumber daya tidak mungkin menimbulkan deadlock maka sumber daya diberikan ke peminta sumber daya, jika timbul deadlock maka proses yang meminta di suspend sampai waktu permintaannya aman (tidak timbul deadlock) baru diberikan, kondisi ini biasanya terjadi setelah satu suimber daya atau lebih yang semula dipegang oleh proses-yang aktif liannya dilepas. Untuk penghindaran deadlock diperlukan pengertian mengenai state selamat (safe state) dan dan state tak selamat (unsafe state), dinyatakan sebagai state selamat jika state tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati & mengikuti urutan tertentu. Contohnya :
* State selamat (safe state) dan state tak selamat (unsafe state) * Algoritma bunker olek Dijkstra

Safe State
Safe State adalah cara untuk memenuhi permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati mengikuti urutan tertentu. Contoh: Pada sistem yang memiliki 10 sumber daya se type , proses A memerlukan sumber daya maksimum 10 , sedangkan pada saat ini ia menggenggam 2 sumber daya, sedangkan proses B memerlukan sumber daya maksimum 3 sedangkan saat ini menggenggam 1 sumber daya, proses C memerlukan sumber daya maksimum 7 sedangkan saat ini mengenggam 3 sumber daya ,maka masih tersedia sumber daya 4 seperti pada tabel dibawah ini :
Proses A B C Tersedia 4 Jlh sumber daya yg digenggam 2 1 3 Maks sumber daya yang dibutuhkan 10 3 7

Sistem terhindar dari deadlock adalah dengan langkah sbb:


Proses A B C Tersedia Proses A B C Tersedia Proses A B C Tersedia 0 Jlh sumber daya yg digenggam 2 1 0 7 Jlh Sumber daya yg di genggam 2 3 0 5 Maks sumber daya yang dibutuhkan 10 3 Alokasikan 5 sumber daya nantikan sampai proses B berakhir Maks Sumber daya yang dibutuhkan 10 3 Setelah selesai proses pada C maka diperoleh Jlh Sumber daya yg digenggam 2 1 7 Maks sumber daya yang dibutuhkan 10 3 7 Alokasikan 4 sumber daya pada proses C sehingga sumber daya tersedia tinggal 1,nanti sampai proses C berakhir sehingga

Algoritma bunker olek Dijkstra


Disebut algoritma karena memodelkan bunker disebuah kota kecil yang berurusan dengan sekumpulan nasabah yang memohon kredit, pada algoritma ini kondisi mutual exclusion, hold and wait dan non preemption diizinkan dan proses melakukan klaim penggunaan sumber daya eksklusif yang diperlukan, proses diizinkan menggenggam sumber daya sambil meminta dan menunggu sumber daya yang lain. Serta sumber daya itu tidak diizinkan di preemption proses lain. Proses dapat meminta sumber daya pada suatu waktu, sistem operasi dapat mengakses dan menolak sumber daya permintaan, jika ditolak proses masih menggenggam sumber daya yg telah dialokasikan dan menunggu sampai waktu yg tak terhingga sampai permintaan dipenuhi. Dan sistem hanya meberikan permintaan yang menghasilkan state selamat, sedangkan permintaan yang menghasilkan state tak selamat ditolak sampai permintaan dipenuhi. Karena sistem selalu memelihara agar dalam kondisi state selamat maka cepat atau lambat dalam waktu yang tak terhingga semua permintaan dapat dipenuhi dan semua proses berakhir.

Kelemahan Algoritma Banker


Proses jarang mengetahui jumlah sumber daya maksimum diperlukan di awalnya. Jumlah proses tidak tetap Sumber daya yang tersedia tiba tiba dapat saja dicopot Proses harus independen yaitu urutan proses eksekusi tidak dibatasi kebutuhan sinkronisasi antar proses. Algoritma menghendaki memberikan semua permintaan pada waktu yang tak terhingga Algoritma menghendaki client mengembalikan sumber daya setelah waktu yang tak terhingga

Deteksi dan pemulihan Deadlock


Deteksi adanya dealock adalah cara untuk menentukan apakah deadlock terjadi serta mengidentifikasi proses dan sumber daya yang terlibat dalam deadlock. Umumnya algoritma yang dibutuhkan untuk deteksi adalah menentukan keberadaan menunggu sirkular (circular wait), penggunaan algoritma ini melibatkan over head run time karena secara kontinyu dijalankan untuk mendeteksi menunggu sirkular, sembaranag algoritma pendeteksian siklus graph berarah dapat digunakan. Perioda yang biasa dilakukan adalah memonitor permintaan dan pelepasan sumber daya. Setiap terdapat permintaan & pelepasan maka dilakukan pembaharuan graph dan deteksi adanya siklus. Bila terdapat siklus berarti terjadi menunggu sirkular dan deadlock terjadi. Pemulihan dari deadlock yaitu begitu sistem terdapat deadlock maka deadlock harus diputuskan denagn menghilangkan salah satu atau lebih persyaratannya. Pemulihan dari deadlock ditentukan oleh beberapa faktor : Belum tentu secepatnya dapat menentukan deadlock Kebanyakan sistem tidak memilki fasiltas atau fasilitasnya buruk untuk mensuspend proses,menghilangkan dari sistem dan meresume proses dilain waktu, pada sistem waktu nyata yang harus berfungsi kontinyu proses tidak dapat di suspend dan resume. Jika terdapat kemampuan sistem resume dan suspend yang efektif kemampuan ini dapat melibatkan sejumlah overhead, berarti memerlukan perhatian operator yang berkemampuan tinggi,operator ini tidak selalu tersedia. Pemulihan memerlukan sejumlah kerja yang berarti.

Deteksi dan pemulihan Deadlock


Pada sistem operasi yang hanya tiga state dasar (running,ready dan blocked) maka tak ada cara lain kecuali menyingkirkan proses itu, proses akan hilang dari memori dan harus dimuat kembali, sedangkan pada operasi modern sistem biasanya menerapkan state supended blocked dan suspended ready diman sumber dayanya dilepas tetapi proses masih di memory dan akan ditetapkan kembali proses untuk sumber daya begitu terjadi resume. Pendekatan yang digunakan untuk pemulihan deadlock : Singkirkan semua proses yang melibatkan deadlock (cara ini sering digunakan) Backup semua proses yang terlibat deadlock ke suatu check point yang didefinisikan sebelumnya dan jalankan kembali semua proses itu, cara ini memerlukan mekanisme rollback dan restart,resikonya deadlock semula dapat terjadi lagi , tetapi karena tidak tertentu pemrosesan kong kuren ,biasa tidak akan terjadi deadlock serupa. Secara berurutan singkirkan proses sampai tidak terjadi deadlock lagi, urutan proses yang disingkirkan berdasarkan kriteria ongkos minimum, setelah penyingkiran algoritma deteksi harus dijaalankan untuk melihat apakah masih terjadi deadlock. Secara berurutan preemp sumber daya tidak ada deadlock lagi

Kriteria-kriterianya sebagai berikut: Waktu pemrosesan yang telah dijalankan paling kecil Jumlah baris keluaran yang diproduksi kecil Mempunyai estimasi sisa waktu eksekusi besar Jumlah total sumber daya terkecil yang telah dialokasikan Prioritas terkecil.

Startegi Penanggulanag Deadlock Terpadu Silberschatz menyarankan satu pendekatan terpadu yaitu:
Kelompokkan sumber daya menjadi kelas sumber daya Gunakan strategi pengurutan linear seperti yg dijelaskan pada pencegahan menunggu sirkular, strategi ini untuk mencegah deadlock diantara kelas sumber daya yang berbeda. Dalam satu kelas sumber daya gunakan algoritma yang sesuai untuk kelas sumber daya tsb.

Starvation
Ilustarsi dead clock misalnya: Terdapat tiga buah proses yaitu P1, P2 dan P3. P1,P2 dan P3 memerlukan pengaksesan sumber daya R secara kontinyu: Skenario berikutnya adalah : P1 sedang diberi sumber daya R maka P2 dan P3 di blocked menunggu sumber daya R Ketika P1 keluar dari critical section maka P2 dan P3 diizinkan mengakses R Asumsi kita P3 diberi hak akses kemudian setelah selesai maka hak akses diberikan kembali kepada P1 yang saat itu kembali membutuhkan sumber daya R. Jika hak akses hanya bergantian P1 dan P3 saja secara terus menerus maka P2 tidak memperoleh akses sumber daya R, kondisi ini tidak terjadi deadlock , hanya saja P2 mengalami startvation (tidak ada kesempatan untuk dilayani.)

Fakta tentang Deadlock dalam OS


Pada windows NT, deteksi deadlock yaitu berupa BSOD(Blue Screen Of Death), recoverynya adalah reboot sederhana Pada linux untuk mengetahui apakah terjadi deadlock yaitu dengan menggunakan xosview untuk mengetahui proses yang menggunakan CPU 100%, lalu kill saja proses tersebut

Deadlock di Linux
Linux dengan kernel versi 2.4 mengalami deadlock pada sistem dengan prosesor lebih dari 2 unit Deadlock ini pada umumnya terjadi bila akses melalui Ethernet dilakukan, terutama bila melakukan teaming pada jaringan. Proses akan terblock dan saling menunggu resource Ethernet tersebut bebas.

Deadlock di Linux
Beberapa kasus deadlock juga terjadi ketika OS Linux dijalankan dari kondisi sleep, proses yang mengakses USB device akan mengalami deadlock Hal ini disebabkan fungsi scheduler pada kernel yang digunakan tidak menyimpan state sebelum sleep, sehingga ketika kernel dijalankan kembali, Proses-proses yang mengakses USB device tersebut menunggu giliran mengakses, sementara scheduler belum menjadwalkan masingmasing proses.
Kasus ini juga terjadi pada Serial device

Kesimpulan
Deadlock adalah situasi dimana 1 atau lebih proses tidak akan pernah selesai tanpa adanya recovery Empat kondisi penting untuk deadlock : mutual exclusion, hold and wait, circular wait, and no preemption Deadlock bisa diatasi oleh berbagai strategi : prevention, avoidance, detection and recovery

Anda mungkin juga menyukai