KONGKURENSI Kongkurensi merupakan landasan umum perancangan sistem operasi. Proses-prose disebut kongkurensi jika proses-proses(lebih dari satu proses) berada pada saat yang sama. Prosose-proses kongkurensi dapat sepenuhnya tak bergantung dengan lainnya tapi dapat juga saling berinteraksi. Prosesproses yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik. Pada proses kongkurensi ini yang berinteraksi mempunyai beberapa masalah yang harus diselesaikan, yaitu : 1. mutual exclusion 2. deadlock 3. starvation 4. sinkronisasi Penyelesaian terhadap masalah-masalah ini sangat penting karena perkembangan tehnologi sistem komputer menuju ke sistem multiprocessing, terdistribusi dan paralel yang mengharuskan adanya proses kongkurensi. PRINSIP-PRONSIP KONGKURENSI meliputi halhal berikut : 1. alokasi waktu pemrosesan untuk prosesproses 2. pemakaian bersama dan persaingan untuk mendapatkan sumber daya 3. komunikasi antar proses 4. sinkronisasi aktivitas banyak proses Hal-hal tersebut tidak hanya muncul dilingkungan komputasi multiprocessing dan tersebar tapi juga pada sistem multiprogramming/multithreading pada pemrosesan tunggal Kongkurensi dapat muncul pada konteks yang berbeda, yaitu : 1. untuk banyak aplikasi 2. untuk strukturisasi dari aplikasi 3. untuk strukturisasi dari satu proses 4. untuk strukturisasi sistem operasi UNTUK BANYAK APLIKASI MULTIPROGRAMMING memungkinkan banyak proses sekaligus dijalankan CONTOH : Eksekusi banyak aplikasi untuk suatu tujuan komputasi tertentu adalah implementasi perangkat lunak sistem jaringan komputer TCP/IP. Implementasi TCP/IP dikomputer umumnya (terutaa UNIX) dipecah menjadi banyak aplikasi yang saling bekerjasama; •Aplikasi pppd-daemon yang bertugas menjaga transfer data lewat kanal point to point protokol. Aplikasi ini bertugas sebagai arah bawah untuk komunikasi lewat saluran serial (modem) dengan ujung satunya (biasanya ISP – internet service provider) •Aplikasi dial-daemon yang bertugas secara otomatis menghidup matikan modem atau saluran serial sehingga seolah-olah pemakai terhubung terus ke ISP •Aplikasi finger, ping, pine, netscape dan aplikasi jaringan lainnya yang bekerjasama dengan pppd dan dial sehingga dapat terjadi pertukaran dengan komputer remote •Aplikasi ifwadm yang selalu waspada memeriksa setiap paket yang keluar dan/atau masuk jaringan yang berasal atau menuju aplikasi tertentu sehingga keamanan jaringan lebih terjaga. Kinerja multiprogramming ini juga sangat berguna untuk sistem komputer satu pemakai tunggal(single user) karena sambil menunggu selesainya layanan (misal: transfer berkas oleh modem / pencetakan oleh printer) pemakai dapat berinteraksi dengan aplikasi lain seperti aplikasi permainan (game) atau mengetik pada text editor UNTUK STRUKTURISASI APLIKASI Perluasan prinsip perancangan modular dan pemrograman terstrukrur 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 Saat ini untuk peningkatan kinerja maka suatu proses dapat memiliki banyak thread yang independen. Thread-thread tersebut harus dapat bekerjasama untuk mencapai tujuan proses. Strukturisasi satu aplikasi dapat dilakukan dengan banyak proses atau banyak thread. Sistem operasi modern telah mendukung banyak thread yang berkinerja lebih bagus dibanding proses dalam kondisi/lingkungan yang lebih terkendali. CONTOH : suatu word processor antara lain menpunyai kemampuan berikut : a. menerima masukan dari keyboard b. menerima masukan dari mouse/perangkat penunjuk yang lain c. pemisahan kata-kata d. memformat baris menjadi rata kanan, kiri atau kanan-kiri UNTUK STRUKTURISASI SISTEM OPERASI Keunggulan strukturisasi dapat juga diterapkan ke pemrograman sistem. Beberapa sistem operasi aktual yang dipasarkan dan yang sedang dalam riset telah diimplemtasikan sebagai sekumpulan proses (misal sistem operasi yang bermodelkan client/server) KESULITAN-KESULITAN YANG DITIMBULKAN KONGKURENSI Masalah yang dihadapi proses-proses kongkuren pada multiprogramming dam multiprocessing serupa, yaitu kecepatan eksekusi proses-proses disistem tidak dapat diprediksi. Beragam kemungkinan yang terjadi tidak dapat diprediksi. Kecepatan proses pada sistem bergantung beragam hal diantaranya : 1. aktivitas proses lain 2. cara sistem operasi menangani interupsi 3. kebijaksanaan penjadwalan yang dilakukan oleh sistem operasi Beberapa kesulitan dapat muncul diantaranya : 1. pemakaian bersama sumber daya global Jika 2 proses menggunakan variabel global yang sama, serta keduanya membaca dan menulis variabel itu maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis 2. pengelolaan alokasi sumber daya agar optimal Jika proses A meminta suatu kanal masukan/keluaran tertentu dan dapat terjadi kemudian proses A di suspend sebelum menggunakan kanal itu. Jika sistem operasi mengunci kanal (tidak membolehkan pemakaian oleh lainnya) dan mencegah proses lain menggunakan kanal itu, maka tindakan ini jelas hanya menghasilkan inefisiensi 3. pencarian kesalahan pemrograman Pencarian kesalahan pada pemrograman kongkuren lebih sulit dibandingkan pencarian kesalahan pada program-program sekuen.