Anda di halaman 1dari 15

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 Exclusion 2. Sinkronisasi 3. Deadlock 4. Startvation

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.

Gambar : Deadlock Dapat 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.

Model deadlock 2 proses dan 2 sumber daya Misal : 2 proses P0 dan P1 2 sumber daya R0 dan R1 P0 meminta sumberdaya R0. Sumber daya R1 dialokasikan ke P1.

Skenario yang menimbulkan deadlock : P0dialokasikan R0 P1 dialokasikan R1

Kemudian P0 sambil masih menggenggam R0, meminta R1 P1 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

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

- 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)

- 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

- 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 Bankir Adalah algoritma penjadwalan sebag aiperluasan deadlock detection (Dijkstra 1965), Kasusnya dianalogikan dg pemberikan kredit dalam perbankan.

- 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 Preemption 2. Lewat melacak kembali 3. Lewat membunuh proses yang menyebabkan deadlock, kriteria seleksi ialah: a. yang paling jarang memakai prosesor

b. yang paling sedikit hasil programnya c. yang paling banyak memakai sumber daya sampai saat ini d. yang alokasi sumber daya totalnya tersedikit e. 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 proses 2. Rollback and Restart

'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.

Starvation adalah keadaan dimana satu atau beberapa proses

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

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.

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 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.)

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 Robin Algoritma 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).

Anda mungkin juga menyukai