Anda di halaman 1dari 11

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

 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;

Ø      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

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

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

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

Anda mungkin juga menyukai