Kongkurensi
Proses-proses disebut kongkuren jika proses-proses berada pada saat yang sama. Proses dapat tak tergantung juga bisa tergantung dengan lainnya.
Proses kongkuren yang berinteraksi mempunyai masalah Mutual exclusion Deadlock Starvation Sinkronisasi
Prinsip-prinsip kongkurensi Alokasi waktu pemroses untuk proses-proses Pemakaian bersama dan persaingan untuk mendapatkan sumber daya Komunikasi antar proses Sinkronisasi aktivitas banyak proses
Kongkurensi Dapat muncul pada 4 konteks berbeda Untuk banyak aplikasi Untuk strukturisasi dari aplikasi Untuk strukturisasi dari satu proses Untuk strukturisasi sistem operasi
Untuk Banyak Aplikasi Multiprograming memungkinkan banyak proses dijalankan sekaligus Proses-proses dapat berasal dari aplikasi yg berbeda Contoh waktu kita berinternet, banyak aplikasi yg kita pakai, mulai dari koneksi, browser,antivirus, dll
Untuk Strukturisasi aplikasi Pengembangan dari prinsip perancangan modular dan pemrograman terstruktur adalah suatu aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan proses. Dengan sekumpulan proses, maka tiap proses menyediakan satu layanan spesifik tertentu
Untuk Strukturisasi Satu Proses Untuk peningkatan kinerja, maka satu proses dapat memiliki banyak thread yang independen. Thread-thread tersebut harus dapat bekerjasama untuk mencapai tujuan proses Contoh Word Processor : menerima masukan dari keyboard, mouse, pemisahan kata-kata, memformat baris menjadi rata kanan, kiri, dll
Untuk Strukturisasi Sistem Operasi Keunggulan strukturisasi juga diterapkan ke pemrograman sistem. Beberapa sistem operasi aktual yang dipasarkan dan yang sedang dalam riset telah diimplementasikan sebagai sekumpulan proses Contoh : sistem operasi client server
Kesulitan-kesulitan yang ditimbulkan Kongkurensi Masalah yang dihadapi proses-proses kongkuren pada multiprograming dan multiprocessing serupa, yaitu kecepatan eksekusi proses-proses di sistem tidak dapat diprediksi
Kecepatan proses sistem bergantung Aktivitas-aktivitas proses-proses lain Cara sistem operasi menangani interupsi Kebijaksanaan penjadwalan yang dilakukan sistem operasi
Kesulitan yang ditimbulkan kongkurensi Pemakaian bersama sumber daya global Pengelolaan alokasi sumber daya agar optimal Pencarian kesalahan pemrograman
Proses-proses kongkurensi mengharuskan hal-hal berikut Mengetahui proses-proses yang aktif Alokasi dan dealokasi beragam sumber daya untuk tiap proses aktif Proteksi data dan sumber daya fisik Hasil-hasil proses harus independen
Mutual Exclusion Terdapat sumber daya yang tak dapat dipakai bersama pada saat bersamaan, seperti printer. Sumber daya macam ini disebut sumber daya kritis. Bagian program yang menggunakan sumber daya kritis disebut memasuki critical region/section. Hanya satu program pada satu saat yang diijinkan masuk critical region
Sistem operasi hanya menyediakan layanan (system call) untuk mencegah proses masuk critical region yang sedang dimasuki proses lain. Pemrogram harus menspesifikasikan bagian-bagian critical region sehingga sistem operasi akan menjaganya dengan suatu mekanisme untuk mencegah proses lain masuk critical region yang sedang dipakai proses lain
Banyak mekanisme yang diusulkan untuk menjamin mutual exlusion. Pemaksaan adanya mutual exclusion menimbulkan dua masalah, yaitu : Deadlock Startvation
Deadlock Tidak ada proses yang dapat melepaskan sumber daya yang telah diperolehnya karena menunggu sumber daya lain yang tidak pernah diperolehnya Kondisi deadlock merupakan kondisi terparah karena banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar
Startvation Kondisi dimana suatu proses tidak pernah memperoleh sumber daya,karena selalu dipakai yang lain.
Interaksi Antar Proses Saling tidak tergantung (independen) Saling tergantung secara tidak langsung Saling tergantung secara langsung
Saling tidak tergantung Proses-proses ini tidak dimaksudkan untuk bekerja bersama untuk mencapai tujuan tertentu. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif atau campuran keduanya Contoh antrian printer
Saling tergantung secara tidak langsung Proses-proses tidak perlu saling tergantung pada identitas proses-proses lain tapi sama-sama mengakses objek tertentu, seperti buffer masukan/keluaran. Proses-proses itu perlu bekerja sama dalam memakai bersama objek tertentu
Saling tergantung secara langsung Proses-proses dapat saling berkomunikasi dan dirancang bekerja sama untuk suatu aktivitas