Kamis, 25 November 2010

Concurrent Programming

Akar dari semua organisasi manusia yang sukses adalah kerjasama bukan kompetisi.Yg berbarengan pemrograman ditandai dengan pemrograman dengan lebih dari satu proses.
Kata kunci dan frase Pipelines, proses paralel, message passing, monitor, bersamaan pemrograman, keselamatan, liveness, kebuntuan, hidup-lock, keadilan, komunikasi, producerconsumer sinkronisasi,

Ada beberapa alasan untuk programmer yang akan tertarik pada concurrency:

1.        Untuk lebih memahami arsitektur komputer (memiliki banyak concurrency dengan pipelining
(Multiple step) dan super-skalar (beberapa instruksi)) dan
2.        kompiler desain,
3.        beberapa masalah yang paling alami diselesaikan dengan menggunakan serangkaian proses ko-operasi,
4.        Sebuah solusi sekuensial merupakan atas spesifikasi, dan
5.         untuk mengurangi waktu eksekusi.

Pemrograman konkuren mendasari dua sudut pandang utama sistem operasi modern, yaitu
multiprogramming dan pemrosesan terdistribusi, di samping merupakan dasar teknologi
perancangan sistem operasi. Konkurensi dibutuhkan dalam banyak konteks yang berbeda, antara lain aplikasi majemuk (multiple applications) pada multiprogramming, aplikasi terstruktur (structured application) pada perancangan dan pemrograman terstruktur, dan implementasi proses-proses pada struktur sistem operasi.
Pemrograman konkuren bukan pengganti pemrograman sekuensial, melainkan merupakan
pelengkapnya. Jika pada pemrograman sekuensial dikenal paradigma iteration, condition, dan repetition, maka pada pemrograman konkuren ketiga paradigma itu tetap digunakan, dan masih harus dilengkapi dengan logika temporer. Logika temporer harus ada karena ada lebih dari satu proses yang beroperasi pada saat yang sama, sebagaimana dijelaskan  pada Gambar 1.
a. Operasi sekuensial
-- O – O – O – O à
   X = 5
   Y = 3 * X + 4
b. Operasi Konkuren
        - O – O -
     -- |              | -- >
          - O – O –
       X = A * B + C
       Y = 3 * A + 7


Gambar 1. Operasi sekuensial dan operasi konkuren.

Dua hal penting yang menjadi hipotesa umum pemrograman konkuren
Ø  Tidak ada asumsi tentang kecepatan proses
Ø  Semua proses dilaksanakan sampai selesai.

Setiap persoalan yang berhubungan dengan konkurensi dapat diabstraksikan ke dalam satu
atau lebih model berikut.
1) Seksi kritis (mutual exclusion)
2) Komunikasi antar proses (interprocess communication / message passing)
3) Sinkronisasi antar proses (interprocess synchronization)

Tulisan ini menyoroti mekanisme tingkat rendah yang dibutuhkan pada pemrograman konkuren. Akan disajikan sebuah studi kasus untuk memperlihatkan cara menyelesaikan persoalan menggunakan mekanisme tingkat rendah. Juga diberikan sebuah contoh implementasi algoritma penyelesaian persoalan ke dalam sebuah program.


Concurrent programming mutlak diperlukan oleh sistem operasi desain modern dan aplikasi. Ini adalah kegiatan membangun sebuah program yang berisi beberapa proses yang dilaksanakan secara paralel. Tidak ada tingkat-of-proses asumsi dan semua proses akan dieksekusi dari awal sampai akhir. Tulisan ini difokuskan pada tiga mekanisme yang umum digunakan dalam pemrograman concurrent, dan bagaimana menggunakannya
pada kasus tertentu. Mereka dikenal sebagai mekanisme tingkat rendah.


Konsep Dasar Concurrent Programming

`      Bahasa pemrograman concurrent mendefinisikan perintahnya
       sebagai message pada sebuah proses. Umumnya bahasa ini berbasis Pi-Calculus, tidak memilki proses perhitungan, kecuali Erlang dan Ada. Namun Ada juga merupakan sebuah bahasa multi propose language, sedangkan untuk cocurrent language hanya terdapat satu pilihan. Contoh bahasa yang tergolong concurrent language adalah:

b.     Concurrent Pascal (dikembangkan oleh Brinch-Hansen)
c.     Erlang
d.     Join-calculusTerjadi bersama-sama.
e.     C#
f.     limbo
g.     occam

pengertian concurrent

Dua proses/program atau lebih mempunyai akses kemicroprocessor dan dilaksanakan pada waktu yang sama dalam bahasa pemograman
Analisa Bahasa Indonesia yang sepadan dengan kata {analisys} dari bahasa Inggris pascal Bahasa pemrograman Pascal yang standar, standard  bahasanya dikeluarkan oleh American Nastional Standard Institute.

Pemograman konkuren mendasari dua sudut pandang utama system operasi modern,yaitu multiprogramming dan pemrosesan terdistribusi,di samping merupakan dasar teknologi perancang system operasi.konkurensi dibutuhkan dalam banyak konteks antara lain aplikasi majemuk pada perancangan dan pemograman terstruktur,dan implementasi proses-proses pada sturuktur system operasi.pemograman konkuren bukan pengganti pemograman sekuensial,melainkan merupakan pelengkapnya.jika pada pemograman sekuensisl dikenal paradigma iteration,condition,dan repetition,maka pemograman konkuren
ketiga paradigm itu tetap digunakan dan masih harus dilengkapi dengan logika temporer.logika temporer harus ada karena ada lebih dari satu

Sebuah sistem komputer harus menangani beberapa program (task) yang harus dieksekusi bersama dalam sebuah lingkungan (baik mono atau multi prosesor). Pada pemrograman konkuren, kita tidak lagi berpikir sekuensial, melainkan harus menangani komunikasi dan sinkronisasi antar program.



Sifat-sifat sistem Concurrent programing

n Sinkronisasi
          Dua buah proses dikatakan berkomunikasijika aksi dari sebuah proses sepenuhnya mendahului proses berikutnya. Sinktonisasi berhubungan dengan komunikasi.

Live-lock dapat terjadi jika ada lebih dari satu proses menunggu dan ketika sinyal diterima akses tidak diberikan cukup. Kelaparan: (live-lock) beberapa proses menunggu akses tapi akses tidak diberikan secara adil Coroutines.
Real-time isu-isu bahasa pemrograman Ketika melewati pesan asynchronous, sinkronisasi dapat diperoleh dengan mengharuskan balasan ke sinkronisasi pesan. Dalam contoh berikut, melalui pesan disinkronisasi diasumsikan. Komunikasi perintah dalam penyangga. Kebanyakan komunikasi bahasa pemrograman berbasis izin masukan perintah dalam penyangga tetapi tidak perintah output. asimetri ini disebabkan yang dihasilkan kompleksitas yang dibutuhkan untuk melaksanakan perintah output dalam penjaga.





process Q;
const qsize = 10;
var head, tail : integer;
queue : array[0..qsize-1] of integer;
begin
head,tail := 0,0;
*[ head != tail, C?X --> C!queue[head]; head := (head +
1) mod qsize
[] head != (tail+1) mod qsize, P?X --> queue[tail],
tail := X, (tail + 1) mod qsize]
end;

n Nondeterministic
          Sebuah program dikatakan non-deterministic bila memiliki lebih dari satu evaluasi strategi yang memungkinkan dan berbeda, yang meberikan hasil-hasil yang berbeda.
Suatu program merupakan deterministik jika evaluasi terhadap input yang sama selalu menghasilkan output yang sama. strategi evaluasi mungkin tidak selalu menjadi unik.
Suatu program merupakan nondeterministic jika memiliki lebih dari satu strategi evaluasi diizinkan dan berbeda
strategi evaluasi mengakibatkan hasil yang berbeda. Sebuah konsep yang berhubungan dengan nondeterminism adalah evaluasi evaluasi paralel Paralel yang tidak melibatkan interaksi pada bagian dari subparts yang disebut noninterfering paralelisme. Proses yang telah menguraikan ruang alamat tidak dapat mengganggu satu sama lain dan dengan demikian dapat beroperasi tanpa takut merusak masing-masing lainnya. Sebagai contoh, dua proses di [| | I: = 1, j: = 2]
tidak berbagi ruang alamat oleh karena itu, tugas dapat dilakukan secara paralel.
Contoh lain dari proses-campur tidak ditemukan dalam perkalian matriks. Ketika dua matriks dikalikan, setiap entri dalam produk matriks adalah hasil perkalian kolom kali berturut-turut dan menjumlahkan produk. Ini disebut hasil kali dalam. E
n Mutual exlusion
          Sebuah proses kadang membutuhkan akses yang exclusif terhadap sumber daya. Misalnya ketika sebuah proses memperbaiki struktur data, tidak ada proses lain yang mengakses data yang sama.
Seringkali proses harus mempunyai akses eksklusif ke sumber daya. Sebagai contoh, ketika suatu proses memperbarui struktur data, ada proses lainnya harus memiliki akses ke struktur data yang sama dinyatakan keakuratan data dapat diragukan. Tuntutan untuk membatasi akses disebut saling eksklusi dan melibatkan
berikut:
Ø Paling banyak satu proses memiliki akses
l Jika ada beberapa permintaan untuk sumber daya, itu harus diberikan kepada salah satu proses dalam terbatas
waktu.
Ø  Ketika suatu proses yang memiliki akses eksklusif untuk berbagi sumber daya rilis dalam waktu terbatas.
Ø  Ketika sebuah proses meminta sumber daya harus mendapatkan sumber daya dalam waktu terbatas.
Ø  Sebuah proses tidak boleh mengkonsumsi waktu proses sambil menunggu sumberdaya.

Concurrency in Programming Languages
bahasa adalah concurrent jika menggunakan paralelisme mengganggu.
Sequential program hampir selalu deterministik. Sebuah program deterministik mengikuti urutan
langkah yang dapat diprediksi sebelumnya. perilaku adalah direproduksi dan dengan demikian, program deterministik adalah diuji. Bersamaan program kemungkinan akan nondeterministic karena urutan dan kecepatan eksekusi dari proses tidak dapat diprediksi. Hal ini membuat pengujian program bersamaan tugas yang sulit.
Persyaratan untuk ruang alamat menguraikan mungkin terlalu berat persyaratan. Apa yang diperlukan adalah bahwa
sumber daya bersama mungkin perlu dilindungi sehingga hanya satu proses yang diijinkan akses ke Sumber Daya di
waktu. Hal ini memungkinkan proses untuk bekerja sama, berbagi sumber daya tetapi menjaga integritas dari
sumber daya.
Eksekusi konkuren:
 Sebuah notasi yang menunjukkan operasi yang bisa, tapi perlu, dieksekusi secara paralel.

PCN              Occam
[|| P1, P2, ..., Pn] PAR
P1
...
Pn


Komunikasi:
 Sebuah notasi yang memungkinkan proses pertukaran informasi baik trhrough variabel bersama (dapat dilihat setiap proses) atau mekanisme message passing.

Shared Memory
Assignment: X := E
Message Passing
Synchronous Pi!E, Pj?X
Asynchronous Pi!E, Pj?X
Remote procedure call

Sinkronisasi:
notasi A memerlukan proses untuk menunggu sinyal dari proses lain.
Reksa pengecualian: notasi A untuk menyinkronkan akses ke sumber daya bersama.



REKAYASA CONCURRENT  PROGRMING
Lingkungan pemrograman paralel harus mendukung tiga tahap berikut perilaku system spesifikasi.
·      Pemrograman Perilaku proses dan interkoneksi Prosesor 
·      deskripsi Jaringan dan interkoneksi
·       Pemetaan Konfigurasi perangkat lunak ke perangkat keras Pemrograman
Cara merancang perangkat lunak paralel adalah untuk mulai dengan algoritma yang paling mungkin paralel
dan kemudian secara bertahap membuat lebih berurutan ... sampai itu sesuai mesin yang itu adalah untukjalankan. Timur (1995)

Chandy dan Taylor (1992)
mendefinisikan bahasa pemrograman paralel PCN elegan (Program Komposisi Notasi) berdasarkan:
Ø  definisi Shared variabel (tugas tunggal) - X = Exp,
Ø  Paralel komposisi - [| | P0 ,..., Pn],
Ø  Pilihan komposisi - [? G0 -> P0 ,..., Gn -] Pn>,
Ø  Sequential komposisi - [; S0 ,..., Sn], dan
Ø  Rekursi - nama (parameter) komposisi ekspresi Concurrent Programming

Variabel Definisi menghilangkan masalah ketidakpastian. Komunikasi adalah melalui berbagi variabel yang mungkin sungai. Sinkronisasi dicapai dengan proses yang memerlukan suatu referensi variabel terdefinisi untuk menunggu sampai didefinisikan oleh beberapa proses lain sebelum melanjutkan. Rekursi dengan komposisi paralel memungkinkan proses penciptaan dinamis. Jika sebuah program yang hanya menggunakan komposisi paralel dan pilihan dan variabel definisi tidak memiliki efisiensi yang memadai, ...
Kami menggunakan langkah-langkah berikut dalam pengenalan mutables dan sequencing menjadi parallel blok.

1. Kita urutan laporan dalam blok paralel sehingga semua variabel yang muncul pada sisi kanan laporan definisi mengurangi ke tanah nilai atau tuple, dan semua penjaga mengurangi ke tanah nilai-nilai benar atau salah, hanya memberikan definisi didirikan oleh pernyataan sebelumnya dalam pemesanan. Dengan kata lain, kita order pernyataan dalam arah aliran data, laporan yang menulis sebuah variabel muncul lebih awal dari pernyataan yang membaca variable tersebut. Kemudian kita mengubah paralel Blok menjadi sebuah blok berurut dengan mengganti "| |" dengan ";" mempertahankan urutan aliran data laporan.

2. Selanjutnya, kami memperkenalkan mutables, menambahkan laporan tugas untuk program kami, dan menunjukkan bahwa m bisa berubah memiliki nilai sama dengan definisi variabel x itu adalah untuk mengganti, di
setiap titik dalam program di mana x dibaca - yaitu, di mana x muncul di tangan kanan yang sisi pernyataan definisi atau tugas atau penjaga.
3.        Akhirnya, kami keluarkan variabel definisi yang digantikan oleh mutables, aman dalam pengetahuan bahwa mutables memiliki nilai sama dengan variabel definisi dalam laporan di mana mereka baca. Kita harus, tentu saja, pastikan bahwa mutable bersama oleh blok konstituen dari sebuah blok paralel tidak diubah dalam parallel blok.

Lewis (1993) mengembangkan teori kebenaran program yang disebut aliran-benar.Lewis membutuhkan untuk masing-masingberbagi variabel:

1.        itu harus didefinisikan sebelum dirujuk,
2.        harus dirujuk sebelum update, dan
3.        hanya satu proses pada suatu waktu dapat (kembali) mendefinisikannya.

Aturan-aturan ini hanya berlaku untuk ketergantungan antar variabel dan tidak mencakup baik kebenaran total Concurrent Programming (Terminasi) atau kebenaran logis (kepuasan spesifikasi). isu Kebenaran dalam desain program bersamaan jatuh di salah satu dari dua kategori: keselamatan dan liveness.
 Keamanan: tidak ada yang buruk akan terjadi. Sebagai contoh, akses ke sumber yang dipakai bersama seperti printer membutuhkan bahwa proses pengguna memiliki akses eksklusif ke sumber daya. Jadi harus ada mekanisme untukmemberikan pengecualian bersama.
·      Liveness: sesuatu yang baik akan terjadi. Di sisi lain, proses tidak harus mencegah lain
akhirnya proses dari akses ke printer. Jadi setiap proses yang ingin printer harus memiliki akses ke printer.
Keselamatan berhubungan dengan konsep loop. Sebuah program harus menghasilkan hak ``''menjawab.  Liveness berkaitan dengan konsep varian loop. Sebuah program diharapkan dapat membuat kemajuan. Penghentian adalah contoh dari properti liveness ketika sebuah program diharapkan untuk mengakhiri.









Daftar Pustaka
..

Tidak ada komentar:

Posting Komentar