Saturday, May 9, 2015

Concurrency

Concurrency untuk mengatasi :
1. Multiple applications
    - Multiprogramming (programnya yang concurrent)
2. Structured application
   - aplikasi yang dapat mengatur proses concurrent (prosesnya yang concurrent)
3.Operating-system structure
   - Sistem operasi yang mengatur sekumpulan proses atau thread

A. Masalah dalam Concurrency
    - Berbagi resource global
      contoh : printer (ketika printer digunakan bersama-sama)
    - Bagaimana alokasi resources supaya lebih aman
    - Programming error dificult to locate

Operating system konsen pada beberapa hal di bawah ini :
1. Mencari tahu proses yang aktif apa saja.
2. Mengalokasikan dan mendealokasikan resources.
3. Melindungi data dan resources.
4. Hasil prosesnya harus independent dari hasil ekseskusi proses lain.

B. Kompetisi antara proses dan resources
1. Mutual Exclusion : 1 proses diberikan hak khusus untuk menggunakan resources.
2. Deadlock              : banyak proses memperebutkan 1 resources
3. Starvation             : setiap proses berfikir bahwa ada proses lain yang sedang memakai resources tersebut padahal sebenarnya tidak ada yang memakai.

    Kerja sama antar proses
1. By Sharing (berbagi)
2. By Communication (berkomunikasi)

C, Mutual Exclusion
Alasan untuk menciptakan mutual exclusion (memberikan hak khusus pada 1 proses) :
1. Disabling Interrupt (tidak bisa interrupt - non preemptive)
2. Lock variables
    contoh : a = 10 (lock variable)
                  jika ada b yang mau mengubah nilai a maka tidak bisa karena a merupakan lock variable
3. Strict Alternation : biasanya terjadi di java script / VB 
4. Peterson's solution 
5, The TSL instruction

D. Semaphores
- spesial variable yang disebut semaphore digunakan untuk signalling.
- jika sebuah proses sedang mununggu sinyal maka dia akan dimatikan sampai sinyalnya dikirim.
- operasi wait dan operasi sinyal tidak bisa diinterrupt
- semaphore adalah sebuah variable yang mempunyai nilai integer :
    1. mungkin di inisialisasi dengan angka positif.
    2. operasi wait akan mengurangi nilai semaphore
    3. operasi sinyal akan menambah nilai semaphore.

E. Produces Consumer's Problem
- consumer tidak akan bisa konsumsi sebelum ada yang dihasilkan oleh producer.
- hanya single customer yang mendapatkan product pada satu waktu.

cara mengatasi Producer consumer's problem :
1. menggunakan semaphore

2. menggunakan thread


F. Dining Philosopher's Problem
1. Philosopers makan/berfikir.
2. Makan membutuhkan 2 forks
3. Hanya bisa mengambil 1 fork pada satu waktu.
4. Bagaimana caranya untuk mencegah deadlock

Solusi untuk dining philosopher's problem :
1. monitor      : dicek apakah forknya itu ada atau tidak.
2. semaphore : dicek philosophernya ada berapa

G. Mutex 
- Mirip dengan semaphore
  bedanya : 
  1. mutex         : hanya ada 2 operasi / penanda.
  2. semaphore : mempunyai 3 operasi / penanda.
Mutex dalam pthread :
H. Monitor
- ada 5 kondisi yang dicatat , tapi dia mengecek forknya itu available atau tidak.
- hanya satu proses actif di dalam monitor.
I. Message Passing
- jika ingin melakukan komunikasi maka dengan kirim-kiriman pesan (antara sender dan receiver.) 



Link :

No comments:

Post a Comment