Concurrent programming 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.
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.
DEFINISI CONCURRENT PROGRAMMING
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 CONCURRENT PROGRAMMING BAGI PEMROGRAM
n Lebih memahami tentang arsitektur komputer
n Design compiler
n Beberapa permasalahan sebagian besar dipecahkan dengan menggunakan co-operating proses
n Mengurangi waktu pengerjaan/ pelaksanaan proses
SIFAT-SIFAT CONCURRENT PROGRAMMING
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.
BAHASA CONCURRENT PROGRAMMING
n Java
n C#
n Erlang
n Occam
n Limbo
n SR
n Ada
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.
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 .
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.
KEUNTUNGAN DARI CONCURRENT PROGRAMMING
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.