Sesi 1 – Concurrency
Concurrency adalah sebuah properti sistem dimana beberapa perhitungan dieksekusi secara bersamaan, dan berpotensi untuk berinteraksi antara satu dengan yang lainnya.
Concurrency terjadi pada:
- Proses dalam suatu aplikasi
- Thread dalam proses
- Program itu sendiri
Tujuan dari Concurrency:
- Proses komunikasi antar proses
- Berbagi sumber daya
- Sinkronisasi antara beberapa proses
- Alokasi waktu proses
Masalah–masalah yang terjadi 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:
- Mutual Exclusion
Hanya satu program yang diperbolehkan untuk mengakses sumber daya ketika ada 2 program yang sama – sama membutuhkan sumber daya tersebut.
- Deadlock
Ketika ada 2 proses / lebih yang saling berebut untuk mendapatkan suatu sumber daya yang sama.
- 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 adalah sebuah variabel spesial yang digunakan untuk mengirimkan sinyal.
Karakteristik 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
Gambar diatas merupakan pengimplementasian dari mutual exclusion lock dan unlock.
Monitor adalah sebuah bahasa pemrograman yang mensupport semua akses kontrol kedalam data yang dishare.
Gambar diatas merupakan diagram proses dari monitor, dimana hanya ada satu proses aktif didalam monitor.
Selama didalam monitor, ada beberapa kondisi yang tidak boleh dijalankan lebih lanjut, seperti:
- Proses menunggu signaling dari proses lain
- Variable proses hanya dapat diakses dari dalam monitor
- Proses waiting akan melepaskan monitor secara sementara
Sesi 2 – Deadlock
Deadlock adalah sebuah kondisi dimana setiap proses dalam sebuah set saling menunggu event dalam proses lainnya sehingga tidak ada proses yang berjalan.
Gambar diatas merupakan ilustrasi dari Deadlock, dimana setiap proses terhalang oleh proses lainnya sehingga tidak ada proses yang dapat dijalankan.
Beberapa penyebab deadlock:
- Mutual exclusion: Hanya satu proses yang dapat mengakses sumber daya saat itu.
- 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.
- No preemption: Sebuah sumber daya dilepaskan oleh sebuah proses setelah proses tersebut selesai menjalankan tugasnya.
- Circular wait: Setiap set saling menunggu sumber daya dari set lain sehingga terbentuk sebuah looping.
Gambar diatas merupakan salah satu contoh Deadlock yang terjadi dalam sebuah proses.
Sedangkan gambar diatas merupakan salah satu cara penyelesaian Deadlock.
Beberapa Strategi untuk menangani 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
Gambar diatas merupakan cara mendeteksi Deadlock, dimana gambar (a) adalah metode Resource Graph, dan gambar (b) adalah sebuah cycle yang diekstrak dari metode Resource Graph
Kesimpulan atas kondisi – kondisi Deadlock dan cara penyelesaiannya.
Starvation adalah sebuah Algoritma untuk mengalokasikan sejumlah sumber daya.
Karakteristik 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.
Penyelesaian dari soal diatas :