Concurrency and Deadlock
-Concurrency
Concurrency adalah sebuah properti sistem dimana beberapa perhitungan dieksekusi secara bersamaan, dan berpotensi untuk berinteraksi antara satu dengan yang lainnya.
-Conccurency terjadi pada
Proses dalam suatu aplikasi
Thread dalam proses
Program itu sendiri
-Tujuan Concurrency
Proses komunikasi antar proses
Berbagi sumber daya
Sinkronisasi antara beberapa proses
Alokasi waktu proses
-Masalah-masalah dalam Concurrency
Berbagi sumber daya yang sama / bersifat global
Manajemen alokasi sumber daya
Error dalam programming susah diidentifikasi
-Fokus dalam OS
Menelusuri setiap proses yang sedang aktif
Mengatur alokasi dan de-alokasi dari sumber daya tertentu, misalnya : Memory, I/O Devices, Processor Time
Melindungi data dan sumber daya
Hasil dari proses harus bersifat independen dari proses concurrency lainnya
-Kompetisi antar Proses untuk mendapatkan sumber daya
1.Mutual Exclusion
Hanya satu program yang diperbolehkan untuk mengakses sumber daya ketika ada 2 program yang sama – sama membutuhkan sumber daya tersebut.
2.Deadlock
Ketika ada 2 proses / lebih yang saling berebut untuk mendapatkan suatu sumber daya yang sama
3.Starvation
Ketika ada 2 proses / lebih yang saling berebut untuk mendapatkan suatu sumber daya yang sama, namun semua proses saling mengalah sehingga tidak ada yang dapat mengakses sumber daya tersebut.
-Semaphore
Semaphore adalah sebuah variabel spesial yang digunakan untuk mengirimkan sinyal.
-Karakteristik dari Semaphore
Variable Semaphore merupakan sebuah integer
Operasi pengiriman sinyal yang dilakukan oleh Semaphore tidak dapat diinterupsi
-Cara kerja proses dalam Semaphore
Proses Inisialisasi menggunakan angka non-negatif
Proses Waiting akan mengurangi nilai Semaphore
Proses Signaling akan menambahkan nilai Semaphore
-Monitor
Monitor adalah sebuah bahasa pemrograman yang mensupport semua akses kontrol kedalam data yang dishare
-Beberapa kondisi yang tidak boleh dijalankan selama berada didalam monitor antara lain :
Proses menunggu signaling dari proses lain
Variable proses hanya dapat diakses dari dalam monitor
Proses waiting akan melepaskan monitor secara sementara
-Deadlock
Deadlock adalah sebuah kondisi dimana setiap proses dalam sebuah set saling menunggu event dalam proses lainnya sehingga tidak ada proses yang berjalan
-Beberapa hal yang dapat menyebabkan terjadinya Deadlock
1.Mutual exclusion
Hanya satu proses yang dapat mengakses sumber daya saat itu
2.Hold and Wait
Sebuah proses yang saat itu membawa sebuah sumber daya memerlukan sumber daya lain yang sedang dibawa oleh proses lain agar dapat berjalan
3.No preemption
Sebuah sumber daya dilepaskan oleh sebuah proses setelah proses tersebut selesai menjalankan tugasnya
4.Circular wait
Setiap set saling menunggu sumber daya dari set lain sehingga terbentuk sebuah looping
-Solusi Deadlock
Mengabaikan permasalahan yang terjadi
Sengaja membiarkan Deadlock terjadi, kemudian cari lokasi Deadlock terjadi dan selesaikan Deadlock tersebut
Pencegahan secara dinamik
Pencegahan dengan cara meniadakan salah satu dari 4 kondisi deadlock
-Stravation
Starvation adalah sebuah Algoritma untuk mengalokasikan sejumlah sumber daya.
-Karakteristik dari Starvation
Dapat memberikan prioritas kepada job yang paling singkat
Efektif untuk beberapa job singkat dalam sebuah system
Dapat menyebabkan sebuah job tertunda dalam jangka waktu yang lama
Soal Deadlock
Ada 3 proses dalam gambar diatas, yaitu proses A, B, C.
Dalam kondisi saat ini saldo yang ada di Bank adalah 3 + 3 + 2 + 2 = 10
Tentukan proses safe / unsafe dari setiap proses :
-Selisih saldo yang dibutuhkan dari proses A adalah 9 – 3 = 6
-Selisih saldo yang dibutuhkan dari proses B adalah 4 – 2 = 2
-Selisih saldo yang dibutuhkan dari proses C adalah 7 – 2 = 5
-Sedangkan saldo yang dimiliki Bank saat ini adalah 3, maka dapat kita simpulkan bahwa saat ini A & C bersifat unsafe, dan B bersifat safe
Bank meminjamkan saldonya ke proses yang bersifat safe, yaitu B. Maka proses yang terjadi adalah :
-Bank meminjamkan 2 saldo ke B, sehingga free = 1 dan B = 4
-B mengembalikan saldonya ke Bank, sehingga free = 5
-Bank meminjamkan 5 saldo ke C, sehingga free = 0 dan C = 7
-C mengembalikan saldonya ke Bank, sehingga free = 7
-Bank meminjamkan 6 saldo ke A, sehingga free = 1 dan A = 9
-A mengembalikan saldonya ke Bank, sehingga free = 10
Karena setiap proses berhasil mengembalikan saldonya ke bank, maka problem diatas bersifat safe
Solusinya :
Leave a Reply