- proses dalam suatu aplikasi
- thread dalam proses
- programnya
Tujuan dari concurrency adalah :
- Komunikasi dalam suatu proses
- Berbagi sumber daya maupun sumber informasi
- Proses sinkronisasi suatu proses
- Mengalokasikan waktu prosesor
Untuk mencapai tujuan-tujuan tersebut tidak akan berjalan lancar, di bawah ini adalah masalah-masalah yg dihadapi dalam concurrency :
- Berbagi sumber daya untuk maksud kejahatan
- OS sulit mengatur alokasi dari sumber informasi secara optimal
- Menjadi bahasa pemrograman yg sulit untuk disimpan/diletakkan
Fokus dalam OS :
- OS harus bisa menelurusi bermacam-macam proses
- OS harus mengalokasikan dan mendealokasi sumber informasi untuk setiap proses yg aktif, diantaranya :
- Waktu prosesor
- Memori
- Dokumen/file
- Perangkat inout output - OS harus memproteksi data dan sumber informasi fisik untuk mencegah adanya gangguan dalam proses tersebut
- Hasil dari sebuah proses harus diselesaikan secara cepat dalam proses concurrency
COMPETITION among PROCESSES for RESOURCES
Proses concurrency menjadi sebuah konflik/masalah ketika proses-proses tersebut saling berebut untuk mendapatkan informasi dari sumber data yg sama. Ada 3 masalah yg terjadi :
- Mutual exclusion
ketika ada 2 proses yg berebut sumber daya seperti printer, akan terjadi yg namanya critical resource. Untuk menyelesaikan masalah ini maka hanya ada 1 program saja yg daapt mengakses critical resource, disebut dengan critical section. Tidak memungkinkan terjadi deadlock dan starvation. - Deadlock
ketika ada 2/lebih proses yg ingin berebut untuk mendapatkan informasi dari sumber yg sama. - Starvation
suatu keada dimana ada 2/lebih proses yg ingin mengakses sumber informasi secara bersamaan tapi saling mengalah semua dan tidak ada yg jadi mengakses sumber informasi tersebut.
COOPERATION among PROCESSES
Ada 2 model kooperasi :
- By sharing
penulisan harus terjadi secara eksklusif, dan critical section digunakan untuk menyediakan data yg berintegritas - By communication
- message di passing, mutual exclusion tidak begitu dibutuhkan
- memungkinkan terjadi deadlock, setiap proses menunggu proses yg lainnya
- memungkinkan terjadi starvation
SEMAPHORES
Semaphore merupakan variabel spesial yg digunakan untuk mengirimkan sinyal. Operasi pengiriman sinyal tersebut tidak dapat diinterupsi. Didalam semaphore terdapat queue, yg berguna untuk memegang proses yg sedang menunggu semaphore. Semaphore sendiri merupakan sebuah variabel yg memiliki nilai integer,
Semaphore merupakan variabel spesial yg digunakan untuk mengirimkan sinyal. Operasi pengiriman sinyal tersebut tidak dapat diinterupsi. Didalam semaphore terdapat queue, yg berguna untuk memegang proses yg sedang menunggu semaphore. Semaphore sendiri merupakan sebuah variabel yg memiliki nilai integer,
- proses inisialisasi menggunakan angka bukan negatif
- proses waiting akan mengurangi nilai semaphore
- proses signaling akan menambahkan nilai semaphore
Gambar diatas merupakan pengimplementasian dari mutex (mutual exclusion) lock dan mutex unlock
MONITOR
Monitor adalah sebuah bahasa pemrograman yg dibangun untuk menyediakan fungsi-fungsi setara dalam semaphore yg memudahkan untuk mengakses data yg tersebar. Karakteristik dari monitor adalah :
MONITOR
Monitor adalah sebuah bahasa pemrograman yg dibangun untuk menyediakan fungsi-fungsi setara dalam semaphore yg memudahkan untuk mengakses data yg tersebar. Karakteristik dari monitor adalah :
- data variabel lokal dapat diakses hanya oleh prosedur monitor.
- proses yg masuk ke dalam monitor harus meng-invoke prosedurnya
- hanya ada 1 proses yg dieksekusi dalam monitor
Selama didalam monitor, proses mungkin menemukan kondisi yg tidak boleh dilanjutkan, seperti :
- proses dapat waiting/menunggu signaling dari proses yg lain
- variabelnya hanya dapat diakses dari dalam monitor saja
- proses waiting akan melepaskan monitor secara sementara
Semoga bermanfaat ! ^^
Tidak ada komentar:
Posting Komentar