Minggu, 10 Mei 2015

CONCURRENCY

Concurrency adalah proses yg dilakukan secara bersamaan. Concurrency terjadi pada :

  • proses dalam suatu aplikasi
  • thread dalam proses
  • programnya
Tujuan dari concurrency adalah : 
  1. Komunikasi dalam suatu proses
  2. Berbagi sumber daya maupun sumber informasi
  3. Proses sinkronisasi suatu proses
  4. 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 :
  1. OS harus bisa menelurusi bermacam-macam proses
  2. OS harus mengalokasikan dan mendealokasi sumber informasi untuk setiap proses yg aktif, diantaranya :
    - Waktu prosesor
    - Memori
    - Dokumen/file
    - Perangkat inout output
  3. OS harus memproteksi data dan sumber informasi fisik untuk mencegah adanya gangguan dalam proses tersebut
  4. 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 :
  1. 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.
  2. Deadlock
    ketika ada 2/lebih proses yg ingin berebut untuk mendapatkan informasi dari sumber yg sama.
  3. 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,
  • 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 :
  • 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