deadlock

15
KONGKURENSI DEADLOCK & STARVATION

Transcript of deadlock

Page 1: deadlock

KONGKURENSIDEADLOCK & STARVATION

Page 2: deadlock

Kongkurensi merupakan landasan umum perancangan sistem operasi. Proses-proses disebut kongkuren jika proses-proses(lebih dari 1 proses) berada pada saat yang sama. Proses-proses kongkuren dapat sepenuhnya tak bergantung dengan lainnya tapi dapat juga saling berinteraksi/kerjasama. Pada proses-proses konkuren yang berinteraks mempunyai beberapa masalah yang harus diselesaikan:1. Mutual Exclusion2. Sinkronisasi3. Deadlock4. Startvation

Page 3: deadlock

Deadlock ialah suatu kondisi permanen dimana proses tidak berjalan lagi ataupun 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, atau dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya bisa dikerjakan oleh proses lain dalam set yang sedang menunggu. Contoh gambar berikut ini :

     

   

Gambar : Deadlock sederhana Pada gambar diatas, tidak ada yang dapat maju karena keduanya memperebutkan

jalan yang sama ( yang dilingkari ), demikian juga deadlock saat semua proses memperebutkan sumber yang sama.

DEADLOCK

Page 4: deadlock

Gambar : DeadlockDapat dilihat bahwa kedua mobil yang berada di tengah-tengah

jembatan tidak dapat maju dan hanya menunggu. Penyelesaian dari masalah tersebut adalah salah satu dari mobil tersebut mundur, sehingga mobil yang lain dapat maju. Mobil pada kasus ini adalah proses, sedangkan jembatan adalah sumber daya. Kedua mobil berebut untuk menggunakan sumber daya, namun karena sumber daya tersebut hanya dapat digunakan oleh satu proses saja, maka terjadilah deadlock. Kondisi tersebut bila terjadi dalam waktu yang lama dapat menyebabkan terjadinya starvation.

Page 5: deadlock

Model deadlock 2 proses dan 2 sumber dayaMisal : 2 proses P0 dan P1

2 sumber daya R0 dan R1P0 meminta sumberdaya R0.

Sumber daya R1 dialokasikan ke P1.

 

Skenario yang menimbulkan deadlock : P0dialokasikan R0P1 dialokasikan R1

Page 6: deadlock

KemudianP0 sambil masih menggenggam R0, meminta R1P1 sambil masih menggenggam R1,meminta R0 Terjadi deadlock karena sama-sama akan saling menunggu.Terjadinya deadlock ditandai munculnya graph melingkar.

Deadlock dapat terjadi dengan melibatkan lebih dari 2 proses dan 2 sumber daya

Page 7: deadlock

1.Kondisi mutual exclusion, sebuah resource hanya boleh digunakan oleh sebuah proses dalam satu

2.Kondisi Hold and Wait, sebuah proses boleh terus menerus menggunakan sebuah resource sambil menunggu resource yang lain menunggu resource yang lain

3.Kondisi No Preemption, resource yang sedang digunakan oleh suatu proses tidak boleh direbut , Proses tersebut tidak bisa disela(preempted)

4.Kondisi Circular Wait, merupakan rangkaian beberapa proses dan resource yang membentuksebuah cincin dimana setiap proses sedang menggunakan minimal sebuah resource yang jugasedang dibutuhkan oleh proses di waktu dekatnya

Kondisi Terjadinya Deadlock (Coffman 1971)

Page 8: deadlock

- Mengabaikan masalah deadlock (Algoritma Ostrich)

- Metode pencegahan terjadinya deadlock (Deadlock Prevention)

- Metode penghindaran deadlock (Deadlock Avoidance)

- Metode deteksi dan pemulihan dari deadlock (Deadlock Detection and Recovery)

Strategi Penanganan Deadlock

Page 9: deadlock

- Mengabaikan masalah deadlock (Algoritma Ostrich)Dalam Algoritma ini dikatakan bahwa untuk menghadapi deadlock ialah dengan berpura-pura bahwa tidak ada masalah apapun.

- Metode pencegahan terjadinya deadlock (Deadlock Prevention)Menghilangkan salah satu kondisi atau lebih yang memungkinkan terjadinya deadlock pada saat perancangan

- Metode penghindaran deadlock (Deadlock Avoidance)Dilakukan pemilihan langkah yang dinamis untuk mencegah terjadinya deadlock berdasarkan alokasi resource saat itu pada saat eksekusi Proses

Page 10: deadlock

- Metode penghindaran deadlock (Deadlock Avoidance)

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.Contoh metode penghindaran deadlock :- 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.

- Algoritma BankirAdalah algoritma penjadwalan sebag aiperluasan deadlock detection

(Dijkstra 1965), Kasusnya dianalogikan dg pemberikan kredit dalam perbankan.

Page 11: deadlock

- Metode deteksi dan pemulihan dari deadlock (Detection and Recovery)

Cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi system mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Ada beberapa jalan untuk kembali dari deadlock :1. Lewat Preemption2. Lewat melacak kembali

3. Lewat membunuh proses yang menyebabkan deadlock, kriteria seleksi ialah:

a. yang paling jarang memakai prosesor

b. yang paling sedikit hasil programnyac. yang paling banyak memakai sumber daya sampai saat inid. yang alokasi sumber daya totalnya tersedikite. yang memiliki prioritas terkecil

Cara Pemulihan darideadlock segera dilakukan karena sistem dapat mengalami penurunan performance dan akhirnya terhenti. Cara yang ditempuh adalah sebagai berikut :1. Terminasi proses2. Rollback and Restart

Page 12: deadlock

Starvation adalah keadaan dimana satu atau beberapa proses 'kelaparan' karena terus dan terus menunggu kebutuhan sumber dayanya dipenuhi. Namun, karena sumber daya tersebut tidak tersedia atau dialokasikan untuk proses lain, akhirnya proses yang membutuhkan tidak bisa memilikinya. Kondisi seperti ini merupakan akibat dari keadaan menunggu yang berkepanjangan.

Pada gambar diatas, pada antrian kanan terjadi starvation karena resource (jembatan) selalu dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran

STARVATION

Page 13: deadlock

Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya.

Starvation dapat terjadi pada proses penjadwalan yang menggunakan prinsip “proses yang paling cepat diselesaikan didahulukan”, seperti pada Shortest Job First (SJF) dan Penjadwalan Prioritas.

Kondisi Terjadinya Starvation

Page 14: deadlock

Ilustarsi starvation 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 blok menunggu sumber daya RKetika 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.)

Page 15: deadlock

Ada beberapa cara mengatasi Starvation ,yaitu :1. Dengan cara Aging

Meningkatkan prioritas dari proses-proses yang telah lama menunggu dalam sistem secara bertahap.

2. Dengan cara Round RobinAlgoritma ini menggilir proses yang ada di

antrian. Proses akan mendapat jatah sebesar timequantum. Jikatime quantumnya habis atau proses sudah selesai, CPU akan dialokasikan ke proses berikutnya (tidak ada proses yang memonopoli resource).

Mengatasi Starvation