You are here: Home > Uncategorized > Concurrency Dalam Bahasa C

Concurrency Dalam Bahasa C

Ada beberapa alasan mengapa programmer menjadi tertarik pada Concurrency:

  1. Untuk lebih memahami arsitektur komputer (memiliki banyak concurrency dengan pipelining (beberapa langkah) dan super-skalar (beberapa instruksi))
  2. Desain compiler
  3. Beberapa yang paling alami diselesaikan dengan menggunakan satu set co-operasi proses
  4. Sebuah solusi sekuensial lebih dari spesifikasi
  5. untuk mengurangi waktu eksekusi.

 

Bahasa Pemrograman Concurrent Programming

ü  Java

ü  C#

ü  Erlang

ü  Occam

ü  Limbo SR

ü  Ad

 

Tidak dalam bahasa C

 

Kelebihan Concurrent Programming

ü  Lebih memahami Arsitektur Komputer

ü  Design compiler

ü  Beberapa permasalahan diselesaikan dengan menggunakan co-operating proses

ü  Waktu pengerjaan lebih singkat

 

Concurrency pada sebuah mesin dapat terjadi pada 4 buah level :

–         Instruksi level (eksekusi 2 atau lebih instruksi mesin serentak)

–         Statement level (eksekusi 2 atau lebih statement bahasa tingkat tinggi serentak)

–         Unit level (eksekusi 2 atau lebih subprogram unit serentak)

–         Program level (eksekusi 2 atau lebih program serentak)

Ada 2 kategori concurrent unit control yaitu :

–         Physical concurrency

Memiliki lebih dari 1 processor, beberapa program unit dari program yang sama di eksekusi serentak.

–         Logical concurrency

Relaxation konsep dari concurrency yang membolehkan programmer dan aplikasi software memberikan concurrency asli.

 

Subprogram level concurrency

Task atau process atau thread adalah sebuah program unit yang dapat di eksekusi bersamaan dengan program unit yang lain.

Task berbeda dari subprogram biasa, terletak pada :

–         Sebuah task dapat implicit

–         Ketika program unit menjalan kan eksekusi task, maka tidak perlu dilakukan penundaan

–         Ketika eksekusi task selesai, control dapat tidak kembali kepada pemanggil nya

Task dapat di bagi menjadi 2 kategori yaitu :

–         Heavyweight

Task eksekusi pada ruang alamat nya sendiri

–         Lightweight

Semua task berjalan pada ruang address yang sama

Jika sebuah task tidak berkomunikasi terhadap eksekusi pada sebuah program di sebut disjoint.

111

 

 

Synchronization adalah meknisme yang mengontrol urutan dari sebuah eksekusi task.

Terdapat 2 tipe synchronization :

–         Cooperation synchronization

Dibutuhkan antara task A dan task B ketika task A harus menunggu task B untuk menyelesaikan aktivitas spesifik sebelum task A dapat melanjutkan eksekusi.

–         Competition synchronization

Dibutuhkan antara 2 task ketika keduanya membutuhkan resource yang tidak dapat digunakan secara serentak.

Scheduler berfungsi memberikan synchronisasi ke mekanisme eksekusi task yang terlambat.

Task eksekusi control di atur oleh program bernama scheduler.

Macam-macam task eksekusi states :

–         New (dibuat tapi belum dijalankan)

–         Ready (siap untuk dijalankan tapi belum berjalan)

–         Running (task yang sedang berjalan / eksekusi)

–         Blocked (task yang diblok ketika sedng berjalan / interrupted oleh sesuatu)

–         Dead (task yang tidak lagi aktif)

 

Liveness = karakteristik dari program unit yang mungkin / tidak mungkin memiliki sequential code (unit akan menyelesaikan eksekusinya)

Deadlock = semua task pada concurrent environment kehilangan liveness nya

 

Semaphore

Semaphore adalah data struktur mengandung counter dan queue untuk menyimpan task descriptor (data struktur yang menyimpan semua informasi relevan tentang state eksekusi dari sebuah task) / mekanisme simple yang dapat digunakan untuk memberikan syncronisasi task.

Contoh semaphore :

wait(aSemaphore)

if aSemaphore’s counter > 0 then

decrement aSemaphore’s counter

else

put the caller in aSemaphore’s queue

attempt to transfer control to some ready task

(if the task ready queue is empty, deadlock occurs)

end if

release(aSemaphore)

if aSemaphore’s queue is empty (no task is waiting) then

increment aSemaphore’s counter

else

put the calling task in the task-ready queue

transfer control to a task from aSemaphore’s queue

end
Gambar Semaphore Monitor

222

 

Monitor

Mengenkapsulasi shared data dan operasi nya pada akses terbatas. Monitor adalah abstract data type (ADT) untuk shared data.

 

Dapus:

http://arcana70.blogspot.co.id/2014/06/kbp-pert-10.html

http://febriana-putri24.blogspot.co.id/2013/01/concurrent-programming-dan-imperative.html

http://cai.elearning.gunadarma.ac.id/webbasedmedia/semua-download-22.html

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Leave a Reply