Concurrent Programming

15
Concurrent Programming Pemrograman Konkurensi Pemrograman Konkuren 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: - Ada (multi-purpose language ) - Concurrent Pascal (dikembangkan oleh Brinch-Hansen) - Erlang - Join-calculusTerjadi bersama-sama. pengertian concurent Dua proses/program atau lebih mempunyai akses ke microprocessor dan dilaksanakan pada waktu yang sama dalam bahasa pemograman Analisa

Transcript of Concurrent Programming

Page 1: Concurrent Programming

Concurrent Programming

Pemrograman Konkurensi

Pemrograman Konkuren

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:

- Ada (multi-purpose language)

- Concurrent Pascal (dikembangkan oleh Brinch-Hansen)

- Erlang

- Join-calculusTerjadi bersama-sama.

pengertian concurent

Dua proses/program atau lebih mempunyai akses ke microprocessor 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.

Page 2: Concurrent Programming

-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.

Alasan Pemilihan Pemrograman Konkuren bagi Pemrogram

Lebih memahami tentang arsitektur komputer

Design compiler

Beberapa permasalahan sebagian besar dipecahkan dengan menggunakan co-

operating proses

Mengurangi waktu pengerjaan/ pelaksanaan proses

Perbedaan Operasi Secara Sekuensial dan Konkuren

Operasi Sekuensial

-- O – O – O – O

X = 5

Page 3: Concurrent Programming

Y = 3 * X + 4

Operasi Konkuren

- O – O -

-- | | -- >

- O – O –

X = A * B + C

Y = 3 * A + 7

Bahasa Pemrograman Konkuren

Java

C#

Erlang

Occam

Limbo

SR

Ada

Sifat – Sifat Konkurensi

Sinkronisasi

Dua buah proses dikatakan berkomunikasijika aksi dari sebuah proses sepenuhnya

mendahului proses berikutnya. Sinktonisasi berhubungan dengan komunikasi.

Nondeterministic

Sebuah program dikatakan non-deterministic bila memiliki lebih dari satu evaluasi

strategi yang memungkinkan dan berbeda, yang meberikan hasil-hasil yang berbeda.

Page 4: Concurrent Programming

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.

Concurrency in Programming Languages

Concurrent execution : A notation that denotes operations that could be, but need tobe,

executed in parallel.

Communication : A notation that permits processes to exchange information either

trhrough shared variables (visible to each process) or a message passing mechanism.

Synchronization : A notation to require a process to wait for a signal from another

process.

Mutual exclusion : A notation to synchronize access to shared resources.

Concurrent Programming

 

Sistem operasi saat ini hampir selalu memberi kemajuan, suatu pelaksanaan sistem

bahasa atau suatu bahasa tingkat yang lebih tinggi. Sistem ini meningkatkan implementasi

sistem, pemeliharaan, dan portabilitas. Di dalam bab ini, kita akan mengetahui tentang evolusi

bahasa tingkat yang lebih tinggi dan membangun untuk meningkatkan sebuah memprogram.

 

10.1 Motivasi

Suatu sistem operasi terdiri dari suatu program besar untuk memenuhi tugas sistem operasi.

Yang secara kebiasaan, program ini ditulis dalam bahasa assembly. Untuk mengetahui tiga

pertimbangan sebagai berikut;

 

Page 5: Concurrent Programming

Ø      Higher-Level bahasa tidak menyediakan mekanisme untuk menulis machine-dependent

kode ( seperti pengarah alat).

Ø       Higher-Level bahasa tidak menyediakan perkakas sesuai untuk penulisan program

berbarengan.

Ø       Higher-Level bahasa untuk program berbarengan tidaklah efisien.

 

Baru-Baru ini, kita sudah menyaksikan definisi dari  bahasa baru yang mendukung

concurrency dan secara relatif efisien. Lebih dari itu, banyak dari argumentasi terhadap

penggunaan bahasa tingkat yang lebih tinggi telah didasarkan pada suatu asumsi bahwa bahasa

yang dimasalahkan diharapkan untuk digunakan di dalam memprogram fungsi yang pusat dari

suatu sistem operasi: manajemen penyimpanan phisik, manajemen proses, dan inti perlindungan,

sebagai contoh. Bagaimanapun, kebanyakan dari kode dari suatu sistem operasi tidaklah terkait

dengan menyediakan tingkat sistem operasi berfungsi. Oleh karena itu, hal yang kecil bahasa

tingkat yang lebih tinggi yang sesuai, kode ini tidak perlu ditulis dalam bahasa assembler/

assembly.

Ada keuntungan untuk menggunakan suatu bahasa program tingkat yang lebih tinggi,

sebagai ganti bahasa asembler. Higher-Level bahasa program adalah lebih sederhana dan lebih

mudah untuk menguji dan memverifikasi, untuk memodifikasi, dan ke pembalik nama satu

mesin bagi yang lain. Sebagai konsekwensi, programmer membelanjakan lebih sedikit waktu

mengembang;kan dan menguji program.

 

Di dalam bab ini sebagian besar terkait dengan bahasa tingkat yang lebih tinggi yang

diharapkan untuk digunakan di dalam menulis program berbarengan. Bahasa seperti itu  harus

menyediakan fasilitas untuk modularisasi dan sinkronisasi.

 

 

10.2 Modularisasi

 

Page 6: Concurrent Programming

Modularisasi  istilah dulu menguraikan penyekatan program besar tunggal ke dalam satu

set modul lebih kecil. Di dalam bagian ini yang akan kita survei jenis modul yang kita harapkan

untuk melihat suatu sistem operasi menulis dalam beberapa bahasa tingkat yang lebih tinggi.

 

10.2.1 Proses

Ketika kita melihat di bab 4 dan 9, proses adalah pokok yang membangun blok di dalam

perancangan sejumlah proses tak serempak yang harus komunikasi dan mensinkronkan tindakan

mereka.

Di dalam kasus yang paling toleran, proses dapat berbagi semua variabel. Dalam hal ini,

untuk menjaga dari time-dependent kesalahan, para programmer harus membangun rencana

sinkronisasi mereka sendiri. Compiler tidak bisa menopang programmer di dalam tugas ini. di

dalam kasus yang paling bersifat membatasi, proses tidak membagi manapun variabel.

Suatu proses begitu terdiri dari beberapa data lokal, dan suatu program percontohan yang

dapat membedah/beroperasi pada data. Data yang lokal hanya dapat diakses oleh program

percontohan yang encapsulated di dalam proses yang sama . Itu adalah, proses tidak bisa secara

langsung mengakses data yang lokal proses yang lain .

 

10.2.2 Prosedur

Unit modularisasi yang lain   menjadi prosedur atau berfungsi bahwa kita harapkan untuk

temukan di dalam manapun bahasa tingkat yang lebih tinggi. Jika suatu prosedur dapat meliputi

variabel gigih sendiri ( variabel yang tidak menghilang lenyap antar panggilan prosedur),

kemudian beberapa data global dapat encapsulated di dalam suatu prosedur. Begitu suatu proses

tidak bisa mengakses data ini secara langsung; harus memohon prosedur untuk tujuan ini.

 

 

10.2.3 Abstrak Data Mengetik

Suatu prosedur menyediakan dengan suatu mekanisme terbatas untuk informasi. Untuk

menyembunyikan metoda data penjelasan dengan sepenuhnya, kita harus memohon pertolongan

Page 7: Concurrent Programming

suatu satuan mekanisme. Kita memerlukan suatu fasilitas yang mengijinkan. Seorang

programmer bagi suatu kelas object abstrak yang tidaklah dengan tegas diantisipasi di disain

bahasa program.

Concurrent Programming

Fenomena, yang dikenal sebagai konkurensi, muncul di berbagai tingkatan dari sebuah sistem

komputer. Perangkat keras

kecuali penangan, proses, dan signal handlers Unix adalah contoh akrab.

Sejauh ini, kita telah memperlakukan concurrency terutama sebagai mekanisme yang kernel

sistem operasi digunakan untuk menjalankan

beberapa program aplikasi. Tetapi concurrency tidak hanya terbatas pada kernel. Hal ini dapat

memainkan peran penting

dalam program aplikasi juga. Sebagai contoh, kita telah melihat bagaimana Unix penangan

sinyal memungkinkan aplikasi

untuk merespon kejadian yang asinkronus seperti pengguna mengetik ctrl-c atau mengakses

suatu program terdefinisi

area memori virtual. Application-level concurrency berguna dengan cara lain juga:

• Mengakses lambat I / O device. Ketika aplikasi sedang menunggu data datang dari yang saya

lambat / O device

seperti disk, kernel menjaga CPU sibuk dengan menjalankan proses lainnya. Masing-masing

aplikasi dapat

concurrency mengeksploitasi dengan cara yang sama dengan tumpang tindih pekerjaan yang

berguna dengan I / O permintaan.

• Berinteraksi dengan manusia. Orang yang berinteraksi dengan komputer tuntutan kemampuan

untuk melakukan beberapa

Page 8: Concurrent Programming

tugas pada waktu yang sama. Misalnya, mereka mungkin ingin mengubah ukuran jendela

sementara mereka mencetak

dokumen. sistem windowing modern menggunakan concurrency untuk menyediakan

kemampuan ini. Setiap kali

permintaan pengguna beberapa tindakan (misalnya, dengan mengklik mouse), alur logis yang

terpisah bersamaan dibuat

untuk melakukan tindakan.

• Mengurangi latency dengan menunda pekerjaan. Kadang-kadang, aplikasi dapat menggunakan

concurrency untuk mengurangi

latency operasi tertentu dengan menunda operasi lain dan melakukan mereka secara bersamaan.

Untuk

Misalnya, pengalokasi penyimpanan dinamis dapat mengurangi latensi operasi bebas individu

dengan

menunda penggabungan dengan aliran berbarengan "penggabungan" yang berjalan pada prioritas

yang lebih rendah, menyerap cadang

siklus CPU saat tersedia.

• Pelayanan beberapa jaringan klien. Server jaringan iteratif yang kita pelajari dalam Bab 11

adalah

realistis karena mereka hanya dapat melayani satu klien pada suatu waktu. Dengan demikian,

klien lambat tunggal dapat menyangkal

pelayanan kepada setiap klien yang lain. Untuk server nyata yang mungkin diharapkan untuk

layanan ratusan atau ribuan

klien per detik, itu tidak bisa diterima untuk mengizinkan satu klien lambat untuk menolak

layanan kepada orang lain. A lebih baik

Page 9: Concurrent Programming

pendekatan adalah untuk membangun sebuah server konkuren yang menciptakan aliran logis

terpisah untuk setiap klien.

Concurrent Programming

 

Sistem operasi saat ini hampir selalu memberi kemajuan, suatu pelaksanaan sistem

bahasa atau suatu bahasa tingkat yang lebih tinggi. Sistem ini meningkatkan implementasi

sistem, pemeliharaan, dan portabilitas. Di dalam bab ini, kita akan mengetahui tentang evolusi

bahasa tingkat yang lebih tinggi dan membangun untuk meningkatkan sebuah memprogram.

 

10.1 Motivasi

Suatu sistem operasi terdiri dari suatu program besar untuk memenuhi tugas sistem operasi.

Yang secara kebiasaan, program ini ditulis dalam bahasa assembly. Untuk mengetahui tiga

pertimbangan sebagai berikut;

 

Ø      Higher-Level bahasa tidak menyediakan mekanisme untuk menulis machine-dependent

kode ( seperti pengarah alat).

Ø       Higher-Level bahasa tidak menyediakan perkakas sesuai untuk penulisan program

berbarengan.

Ø       Higher-Level bahasa untuk program berbarengan tidaklah efisien.

 

Baru-Baru ini, kita sudah menyaksikan definisi dari  bahasa baru yang mendukung

concurrency dan secara relatif efisien. Lebih dari itu, banyak dari argumentasi terhadap

penggunaan bahasa tingkat yang lebih tinggi telah didasarkan pada suatu asumsi bahwa bahasa

yang dimasalahkan diharapkan untuk digunakan di dalam memprogram fungsi yang pusat dari

suatu sistem operasi: manajemen penyimpanan phisik, manajemen proses, dan inti perlindungan,

sebagai contoh. Bagaimanapun, kebanyakan dari kode dari suatu sistem operasi tidaklah terkait

dengan menyediakan tingkat sistem operasi berfungsi. Oleh karena itu, hal yang kecil bahasa

Page 10: Concurrent Programming

tingkat yang lebih tinggi yang sesuai, kode ini tidak perlu ditulis dalam bahasa assembler/

assembly.

Ada keuntungan untuk menggunakan suatu bahasa program tingkat yang lebih tinggi,

sebagai ganti bahasa asembler. Higher-Level bahasa program adalah lebih sederhana dan lebih

mudah untuk menguji dan memverifikasi, untuk memodifikasi, dan ke pembalik nama satu

mesin bagi yang lain. Sebagai konsekwensi, programmer membelanjakan lebih sedikit waktu

mengembang;kan dan menguji program.

 

Di dalam bab ini sebagian besar terkait dengan bahasa tingkat yang lebih tinggi yang

diharapkan untuk digunakan di dalam menulis program berbarengan. Bahasa seperti itu  harus

menyediakan fasilitas untuk modularisasi dan sinkronisasi.

 

 

10.2 Modularisasi

 

Modularisasi  istilah dulu menguraikan penyekatan program besar tunggal ke dalam satu

set modul lebih kecil. Di dalam bagian ini yang akan kita survei jenis modul yang kita harapkan

untuk melihat suatu sistem operasi menulis dalam beberapa bahasa tingkat yang lebih tinggi.

 

10.2.1 Proses

Ketika kita melihat di bab 4 dan 9, proses adalah pokok yang membangun blok di dalam

perancangan sejumlah proses tak serempak yang harus komunikasi dan mensinkronkan tindakan

mereka.

Di dalam kasus yang paling toleran, proses dapat berbagi semua variabel. Dalam hal ini,

untuk menjaga dari time-dependent kesalahan, para programmer harus membangun rencana

sinkronisasi mereka sendiri. Compiler tidak bisa menopang programmer di dalam tugas ini. di

dalam kasus yang paling bersifat membatasi, proses tidak membagi manapun variabel.

Page 11: Concurrent Programming

Suatu proses begitu terdiri dari beberapa data lokal, dan suatu program percontohan yang

dapat membedah/beroperasi pada data. Data yang lokal hanya dapat diakses oleh program

percontohan yang encapsulated di dalam proses yang sama . Itu adalah, proses tidak bisa secara

langsung mengakses data yang lokal proses yang lain .

 

10.2.2 Prosedur

Unit modularisasi yang lain   menjadi prosedur atau berfungsi bahwa kita harapkan untuk

temukan di dalam manapun bahasa tingkat yang lebih tinggi. Jika suatu prosedur dapat meliputi

variabel gigih sendiri ( variabel yang tidak menghilang lenyap antar panggilan prosedur),

kemudian beberapa data global dapat encapsulated di dalam suatu prosedur. Begitu suatu proses

tidak bisa mengakses data ini secara langsung; harus memohon prosedur untuk tujuan ini.

 

 

10.2.3 Abstrak Data Mengetik

Suatu prosedur menyediakan dengan suatu mekanisme terbatas untuk informasi. Untuk

menyembunyikan metoda data penjelasan dengan sepenuhnya, kita harus memohon pertolongan

suatu satuan mekanisme. Kita memerlukan suatu fasilitas yang mengijinkan. Seorang

programmer bagi suatu kelas object abstrak yang tidaklah dengan tegas diantisipasi di disain

bahasa program.