Kongkurensi (Concurrency)
• Proses-proses disebut mengalami kongkurensi jika proses-proses (lebih
dari satu proses) berada pada saat yang sama
• Kongkurensi dapat terjadi pada single processor (melalui
multiprogramming) maupun multiple processor (melalui multiprocessing
atau distributed processing)
Kongkurensi dapat timbul pada tiga kasus berikut
• Multiple application : Terjadi pergantian sejumlah job atau aplikasi secara
dinamik
• Structured application : sebagai penerapan disain modular, beberapa
aplikasi dapat diterapkan sebagai kumpulan dari proses-proses kongkuren
• Operating-system structure: sistem operasi diterapkan sebagai kumpulan
dari proses-proses kongkuren
Proses Kongkurensi
• Pada single processor proses-
proses dieksekusi secara
interleaved untuk
mewujudkan eksekusi yang
simultan
• Sedangkan pada multiple
processor proses-proses dapat
dieksekusi selain secara
interleaved juga dapat secara
overlap
3
Prinsip-prinsip Kongkurensi
Kongkurensi meliputi
• Alokasi waktu prosesor untuk proses-proses
• Pemakaian bersama (sharing) dan persaingan (competition) untuk mendapatkan
sumber daya
• Komunikasi antar proses
• Sinkronisasi aktivitas banyak proses
9
Masalah critical section
• Critical section adalah suatu bagian yang berisi sejumlah variabel yang akan
dipakai bersama (sharing)
• Secara umum, penyelesaian critical section harus memenuhi 3 syarat
1. Mutual exclusion. Jika suatu proses sedang mengerjakan critical section,
maka tidak boleh ada proses lain yang masuk critical section tersebut
2. Progress. Jika tidak ada suatu proses yang mengerjakan critical section dan
ada beberapa proses yang akan masuk ke critical section, maka hanya proses
yang sedang berada pada entry-section saja yang boleh berkompetisi untuk
mengerjakan critical section
3. Busy waiting. Besarnya waktu tunggu dari suatu proses yang akan
memasuki critical section sejak proses itu meminta ijin untuk mengerjakan
critical section, hingga permintaan itu dipenuhi
Interaksi proses
• Telah ditunjukkan bahwa kongkurensi terjadi karena hasil aplikasi
independen dari multiprogramming, dari aplikasi multiple-process dan dari
penggunaan stuktur multiple-process pada sistem operasinya. Maka interaksi
antar proses akan dikelompokkan berdasarkan derajat kepedulian (degree of
awareness) suatu proses terhadap proses lain. Terdapat 3 derajat kepedulian
yaitu
1. Process unaware of each other :
Proses-proses independen yang tidak berniat untuk bekerja sama. Contohnya
multiprogramming dari beberapa proses independen bisa berupa batch job
atau bagian interaktif atau campurannya.
Meski proses-proses ini tidak bekerja sama tapi sistem operasi tetap
memperhatikan kompetisi sumber daya. Misal dua aplikasi ingin
mengakases file atau printer
yang sama maka sistem operasi harus mengaturnya
2. Processes indirectly aware of each other :
Proses-proses yang sebenarnya tidak perlu peduli dengan proses
lain tapi berbagi (sharing) akses untuk beberap obyek tertentu
seperti I/O buffer
3. Processes directly aware of each other
Proses-proses yang dapat berkomunikasi dengan proses yang lain.
Proses ini menampilkan kerja sama bukan kompetisi