350 likes | 820 Views
SISTEM OPERASI. Deadlock dan Starvation. DEADLOCK. Suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya
E N D
SISTEM OPERASI Deadlock dan Starvation
DEADLOCK • Suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. • Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya • 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 Misalkanterdapatduabuahproses , yaitu P1 dan P2 danduabuahsumberdayakritisYaitu R1 dan R2 . Proses P1 dan P2 harusmengakseskeduasumberdayatersebut, dengankondisiinimakaakanterjadi R1 akandiberikankepada P1, dan R2 akandiberikankepada P2 , karenadidalammelakukaneksekusikitamemerlukankeduasumberdayatersebutsekaligusmakakeduaprosesakansalingmenunggusumberdaya lain selamanya, prosestidakmelepaskansumberdaya yang telahdipegangnyakarenamenunggusumberdaya lain yang takpernahdiperolehnya. Makakeduaprosesdalamkondisi Deadlock yang tidakdapatmembuatkemajuanapapun, dan Deadlock merupakankondisiterparahkarenadapatmelibatkanbanyakprosesdansemuanyatidakmengakhiriprosessecarabenar
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).
Deadlock Deadlock adalah kondisi dimana 2 proses atau lebih yang tidak dapat melanjutkan eksekusinya karena saling menunggu aksi atau sumber daya yang sedang digunakan proses lain.
Urutan kejadian pengoperasian perangkat input/output adalah Sbb: • Meminta (request) :meminta pelayanan perangkat input/output • Memakai (user) :memakai perangkat input/output • Melepaskan (release) :melepaskan pemakaian perangkat input/output
Model Deadlock • Model deadlock dua proses dan dua sumber daya P0 R1 R0 P1 • Misalnya : • duaproses, P0dan P1 • dua sumber daya kritis, R0 dan R1 • proses P0 dan P1 harus mengakses kedua sumber daya tersebut
Skenario yang menimbulkan deadlock • Dapat terjadi skenario sebagai berikut : • P0 dialokasikan R0 • P1 dialokasikan R1 P0 R1 R0 P1 • Kemudian, • P0 sambil masih menggenggam R0, meminta R1 • P1 sambil masih menggenggam R1, meminta R0
Dari gambar diatas dapat kita lihat bahwa P0 meminta sumber daya pada R0, sedangkan P1 meminta sumber daya pada R1 , kemudian P0 sambil menggenggam sumber daya R0 meminta sumber daya R1 sedangkan P1 sambil mengenggam sumber dayaR1 juga meminta sumber daya pada R0 kejadian inilah yang mengakibatkan Deadlock seperti kita lihat pada gambar dibawah ini graph deadlock ini digambarkan sebagai graph melingkar dan terjadinya deadlock ini juga ditandai dengan muncul nya graph melingkar: P0 R1 R0 P1
Syarat-Syarat terjadinya Deadlock • Mutual exclution condition Tiapsumberdayasaatitudiberikanpadatepatsatuproses / prosesmeng-klaimkontroleksklusifterhadapsumberdaya yang dibutuhkannya. • Hold and wait condition / kondisigenggamdantunggu Proses-proses yang sedangmenggenggamsumberdaya yang telahdialokasikanuntuknyasementaramenunggusumberdaya – sumberdayatambahan yang baru. • Non-preemption condition / kondisi non-preemption Sumber daya – sumber daya yang sebelumnyadiberikantidakdapatdiambilpaksa dari proses sampaisumber daya tersebutdigunakansampaiselesai. Sumber daya – sumber daya harussecaraeksplisitdilepaskan dari proses yang menggenggamnya. • Circularwait condition / kondisimenunggusecarasirkular Harusterdapatrantaisirkuler / satulingkaran proses dari dua proses ataulebihdimanasetiap proses memegangsatuataulebihsumber daya yang dimintaoleh proses berikutnyapadalingkarantersebut, masing-masingmenunggusumber daya yang digenggamolehanggotaberikutnyapadarantaiitu.
Syarat-Syarat terjadinya Deadlock • Ketigasyaratpertamamerupakansyaratperlubagiterjadinyadeadlock. Keberadaandeadlockselaluberartiterpenuhikondisi-kondisidiatas, tidakmungkinterjadideadlock bila tidak ada ketigakondisiitu. Deadlockterjadiberartiterdapatketigakondisiitu, tetapiadanyaketigakondisiitubelumberartiterjadideadlock. • Deadlockbarubenar-benarterjadibilasyaratkeempatterpenuhi. Kondisikeempatmerupakankeharusanbagiterjadinyaperistiwadeadlock. Bilasalahsatudarikondisitidakterpenuhimakadeadlocktidakterjadi.
Metode-metode mengatasi deadlock • deadlockprevention / metodepencegahanterjadinyadeadlock • pengkondisiansistem agar menghilangkankemungkinanterjadinyadeadlock. Pencegahanmerupakansolusi yang bersihdipandangdarisuduttercegahnyadeadlock. Jikamulainyasatuataulebihprosesakanmenyebabkanterjadinya deadlock, prosestersebuttidakakandimulaisamasekali. • tiapprosesharusmeminta resource yang dibutuhkansekaligusdantidakbisaberjalansampaisemuadidapat (untuk “wait for”) • jikaadaresourcce yang tidakterpenuhi, yang lainnyaharusdilepas (untuk “no preemption”) • urutkantipe-tipe resource secara linier / linier ordering (untuk “circular wait”)
Metode-metode mengatasi deadlock • Deadlockavoidance / metodepenghindaranterjadinyadeadlock • menghindarkankondisi yang paling mungkinmenimbulkandeadlock agar memperolehsumberdayalebihbaik. Penghindaranbukanberartimenghilangkansemuakemungkinanterjadinyadeadlock. Jikasistemoperasimengetahuibahwaalokasisumberdayamenimbulkanresikodeadlock, sistemmenolak / menghindaripengaksesanitu. Dengandemikianmenghindariterjadinyadeadlock. Contohnyadenganmenggunakanalgoritma Banker yang diciptakanolehDijkstra.
Metode-metode mengatasi deadlock • Deadlockdetection and recovery / metodedeteksidanpemulihandarideadlock • deteksidigunakanpadasistem yang mengijinkanterjadinyadeadlock, denganmemeriksaapakahterjadideadlockdanmenentukanprosesdansumberdaya yang terlibatdeadlocksecarapresisi. Begitutelahdapatditentukan, sistemdipulihkandarideadlockdenganmetodepemulihan. Metodepemulihandari deadlock sistemsehinggaberoperasikembali, bebasdari deadlock. Proses yang terlibat deadlock mungkindapatmenyelesaikaneksekusidanmembebaskansumberdayanya.
Strategiburungonta • Strategiinidiasumsikanbahwa deadlock jarangterjadijikadibandingkandengankejadiankomputer crash. • Jadimengapakitaharusbersusahpayahmengatasi deadlock sedangkansistemlebihseringrusakkarena crash, disebutdenganstrategiburungontakarenaburungontaakanmenyembunyikankepalanyaketanahapabilaakanterjadibahaya yang mengancamdirinya. • Jadisebenarnyastrategiiniadalahsamasekalitidakberusahamengatasi deadlock .
Pencegahan deadlock • Meniadakan mutual exclusion : yaitumencegahhanyasatuproses yang mengaksessumberdayapadasuatu interval waktutertentu, • Meniadakansyarat Hold dan Wait, carainidapatdilakukan dengan: mengalokasikansemuasumberdayaatautidaksamasekalidan hold and release. prosesuntuk mengalokasikan semuasumberdayaatautidaksamasekalipermintaaninihanyadapatdilayanibilasemuasumberdaya tersedia, jika sumberdayatersediaprosesdialokasikanjikadiperlukandanberjalansampaiselesai. Jikasumberdayatidaktersedia atau hanyasatusumberdayamakaprosesharusmenunggusampaisemuasumberdaya yang diperlukan tersedia untukdialokasikanpadanya, yang menjadipermasalahanadalahsukaruntukmengetahuilebihdulusumberdayayang diperlukan suatuproseskarenapadaawalprosestidakdiketahuiberapasumberdaya yang diperlukan, jikaproseshanyabutuhsatu disk diawaleksekusi (ataulebihburuklagi tanpa disk) danmenistrahatkan disk-disk yang lain. Perlunyaprosesutnukmenerimaseluruh disk yang diperlukansebelumeksekusidimulaimenyebabkansumberdayakomputer menganggur dalamwaktu yang lama, sementaraprosesygmemerlukanharusmenunggu. Hold and release (genggamdanlepas)yaitupadasaatterjadipermintaansatusumber daya Maka prosesharusmelepaskansumberdaya lain ygtelahdigunakan, jadihanyasatu sumber dayaygdialokasikanuntukproses. Cara initidakmungkinkarenaadaprosesyang di Syaratkan harusmemegangbeberapasumberdayasekaligus,misalnyamenggambar pada Plotter yang memerlukan plotter serta disk untukmenyimpan data gambar yang diplot.
Pencegahan deadlock • meniadakankondisi non preempation:yaitumencegahproses lain harusmenunggumenungguproses preemption sehinggatidakadatunggumenunggu. Contohnya : saatproses A menuliske printer tiba-tibadi stop olehproses B yang jugaakanmenuliske printer yang samabiladimungkinkan preemption inimakakeduaprosesakanmencetaksecaratidakbenar. • Meniadakankondisimenunggusirkular: Kondisiinidapatditiadakandengancarayaituproseshanyadibolehkanmenggenggamsatusumberdayapadasatusaat , jikaperlusumberdaya yang keduamakaprosesharusmelepaskansumberdayapertama. (samadengan hold & release), carainitidakdimungkinaknkarenaterdapatproses yang mengharuskanmemeganglebihdarisatusumberdayapadasaatygsamauntukmenyelesaikanprosenya. Untukmeniadakankondisisirkularjugadapatdilakukandenganpenomoran global semuaSumberdaya, karenaprosesdapatmemintakapanpunprosesmenginginkan,tetapipermintaandibuatterurutsecaranumerik, carainitidakmenimbulkansiklus , permasalah yang timbultidakadacarapengurutannomorsumberdaya yang memuaskansemuapihak.
Pencegahan deadlock • Havendarmengemukakanbahwajikakeempatsyarattersebutdiatastidakdipenuhimakatidakakanterjadi deadlock, sehinggaHavendarmenyarankanstrategi – strategiuntukmeniadakandengansyarat : • Setiapprosesharusmemintasemuasumber yang diperlukansekaligusdantidakberlanjutsampaisemuadiberikan. • Jikaprosestelah/sedangmemegangsumberdayatertentu , untukpermintaanberikutnyaProsesharusmelepassumberdaya yang dipegangnya , jikadiperlukanprosesharusmemintakembalisekaligusdengansumberdaya yang baru. • Buaturutan yang linear untuksemuasumberdayapadasemuaproses, jikaprosestelahdialokasikanpadasuatu type sumberdayamakaprosesberikutnyabolehmeminta type sumberdayaberikutnya.
Penghindaran Deadlock • Gagasandasarpenghindaran deadlock adalahuntukmemberiakseskepermintaansumberdaya yang tidakmenimbulkan deadlock, carainibiasadigunakandenganmengalokasikansumberdayadanmemeriksadampakpemberianakseskesuatupermintaan • Jikapemberianaksessumberdayatidakmungkinmenimbulkan deadlock makasumberdayadiberikankepemintasumberdaya, jikatimbul deadlock makaproses yang memintadi suspend sampaiwaktupermintaannyaaman (tidaktimbul deadlock) barudiberikan, kondisiinibiasanyaterjadisetelahsatusuimberdayaataulebih yang semuladipegangolehproses-yang aktifliannyadilepas. • Untukpenghindaran deadlock diperlukanpengertianmengenai state selamat (safe state) dandan state takselamat (unsafe state), dinyatakansebagai state selamatjika state tidakterjadi deadlock danterdapatcarauntukmemenuhisemuapermintaan yang ditundatanpamenghasilkan deadlock denganmenjalankanprosessecarahati-hati & mengikutiurutantertentu. Contohnya : • * State selamat (safe state) dan state takselamat (unsafe state) • * Algoritma bunker olekDijkstra
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 :
Sistem terhindar dari deadlock adalah dengan langkah sbb: Alokasikan 4 sumber daya pada proses C sehingga sumber daya tersedia tinggal 1,nanti sampai proses C berakhir sehingga Setelah selesai proses pada C maka diperoleh Alokasikan 5 sumber daya nantikan sampai proses B berakhir
Algoritma bunker olekDijkstra • Disebutalgoritmakarenamemodelkan bunker disebuahkotakecil yang berurusandengansekumpulannasabah yang memohonkredit, padaalgoritmainikondisi mutual exclusion, hold and wait dan non preemption diizinkandanprosesmelakukanklaimpenggunaansumberdayaeksklusif yang diperlukan, prosesdiizinkanmenggenggamsumberdayasambilmemintadanmenunggusumberdaya yang lain. Serta sumberdayaitutidakdiizinkandi preemption proses lain. Prosesdapatmemintasumberdayapadasuatuwaktu, sistemoperasidapatmengaksesdanmenolaksumberdayapermintaan, jikaditolakprosesmasihmenggenggamsumberdayaygtelahdialokasikandanmenunggusampaiwaktuygtakterhinggasampaipermintaandipenuhi. • Dan sistemhanyameberikanpermintaan yang menghasilkan state selamat, sedangkanpermintaan yang menghasilkan state takselamatditolaksampaipermintaandipenuhi. Karenasistemselalumemelihara agar dalamkondisi state selamatmakacepatataulambatdalamwaktu yang takterhinggasemuapermintaandapatdipenuhidansemuaprosesberakhir.
KelemahanAlgoritma Banker • Prosesjarangmengetahuijumlahsumberdayamaksimumdiperlukandiawalnya. • Jumlahprosestidaktetap • Sumberdaya yang tersediatibatibadapatsajadicopot • Prosesharusindependenyaituurutanproseseksekusitidakdibatasikebutuhansinkronisasiantarproses. • Algoritmamenghendakimemberikansemuapermintaanpadawaktu yang takterhingga • Algoritmamenghendaki client mengembalikansumberdayasetelahwaktu yang takterhingga
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 masing-masing 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