Beberapa masalah yang kerap ditemukan pada konkurensi terdapat pada:
- Pembagian sumber yang bersifat global
- Managemen alokasi dari sumber daya
- Pencarian kesalahan pada programming
Hal yang sering menjadi perhatian utama:
- Menjaga track dari proses yang sedang aktif
- Mengalokasikasikan resource
- Menjaga keamanan data dan resource
- Menjaga hasil dari proses bersifat independen
Hal yang sering terjadi antara proses dan resource:
- Mutual Exclusion
Pada saat kritis, hanya satu program yang diizinkan untuk mengakses resource yagn ada. - Deadlock
- Starvation
Korporasi yang ada di dalam proses:
- By sharing
Writing harus bersifat mutual exclusion dan critical sesion harus ada untuk menjaga integritas. - By communication
> Mutual exclusion bukan sebuah pengontrol requirment
> Setiap proses menunggu pesan dari proses lainnya
> Dua proses mengirim pesan ke yang lainnya sementara proses lain menunggu.
Hal-Hal yang berkaitan dengan mutual exclusion:
- Hanya satu proses yang diizinkan untuk mengakses resource ketika critical sesi terjadi.
- Tidak ada deadlock maupun starvation
- Sebuah proses tidak harus ditunda saat kritikal sesi jika tidak ada proses yang sedang berjalan
Hal hal yang dipenuhi dalam mutual exclusion:
- menghilangkan interupsi
- lock variabel
- strict alternation
- peterson's solution
- tsl instruction
Bagaimana dengan pencegahan interupsi?
Sebuah proses akan berjalan sampai ada yang meminta servis dari OS atau sampai proses itu diinterupsi. Adanya pencegahan interupsi itu memungkin terjadinya mutual exclusion. Prosesor dibatasi dalam hal kemampuan.
Tabel di bawah akan menjelaskan mekanism yang sering dalam konkurensi.
Salah satu masalah klasik yang sering terjadi pada IPC adalah masalah Dining Philosopher's Room.
> Pick one fork at one time
> How to prevent dead lock?
> How to prevent dead lock?
Di dalam konkurensi juga ada dibahas mengenai mutex. Gambar gambar di bawah akan menjelaskan sedikit tentang mutex.
Mutex |
Mutex in thread |
Hal lain yang akan dibahas kali ini adalah monitor (pengawasan).
Konstruksi dari bahasa pemrogramman mensuport kontrol akses dalam pembagian data. Hal ini dilihat dari compiler yang sinkron secara otomatis dan adanya enforce runtime.
Enkapsulasi juga digunakan saat melakukan pembagian data.
Enkapsulasi juga digunakan saat melakukan pembagian data.
Hanya ada satu proses aktif di dalam sebuah monitor.
Dalam hal mutual exclusion yang terdapat pada monitor, sama seperti sebelumnya hanya ada satu proses yang dapat diproses sekali waktu.
Monitors |
MESSAGE PASSING
Komunikasi dilakukan denga menggunakan fungsi send()/receive(). Receiver bisa dikategorikan secara umum.
www.skyconnectiva.com
www.binus.ac.id
www.skyconnectiva.com
www.binus.ac.id