Konkurensi: Mutual Exclusion dan Sikronisasi
Dasar Proses yang berhubungan dengan thread merupakan konsep utama untuk dasar sistem operasi moderen Dasar disain sistem operasi moderen manajemen proses: Multiprogramming Multiprocessing Distributed processing
Kurensi Komunikasi antar proses Pemakaian sumber daya bersama Sinkronisasi multiproses Alokasi waktu prosesor
Kokurensi Aplikasi – aplikasi yang banyak Struktur aplikasi Multiprogramming Struktur aplikasi Aplikasi dapat merupakan suatu kesatuan proses-proses yang serempak (concurrent) Struktur Sistem Operasi Sistem operasi merupakan sebuah kesatuan proses atau thread
Kesulitan Konkurensi Berbagi sumber daya yang global Manajemen alokasi sumberdaya Kesukaran untuk menempatkan program – program yang salah
Contoh Sederhana void echo() { chin = getchar(); chout = chin; putchar(chout); }
Contoh Sederhana Process P1 Process P2 . . in = getchar(); . . . in = getchar(); . . in = getchar(); chout = chin; chout = chin; putchar(chout); . . putchar(chout);
Yang Berhubungan Sistem Operasi Menempati track proses yang aktif Keberhasilan penempatan dan alokasi sumber daya Waktu prosesor Memori File – file Perangkat I/O Melindungi data dan sumber daya Hasil proses harus dapat tidak terikat pada kecepatan eksekusi dari proses konkuren (serempak / bersamaan) yang lain
Interaksi Proses Proses mengabaikan proses yang lain Proses yang secara tidak lansung mempedulikan proses yang lain Proses secara lansung memperhatikan proses yang lain
Pengaruh terhadap proses lain Masalah pengendalian potensial Tingkat kepedulian Hubungan Pengaruh terhadap proses lain Masalah pengendalian potensial Proses mengabaikan proses yang lain Kompetisi Hasil sebuah proses tidak tergantung pada aksi proses yang lain Timing proses mungkin dapat terpengaruhi Mutual Exclusion Deadlock Starvation Proses yang secara tidak lansung mempedulikan proses yang lain Kerjasama melalui “sharing” Hasil suatu proses dapat tergantung pada informasi yang diperoleh dari proses lain Data coherence Proses secara lansung memperhatikan proses yang lain Kerjasama melalui komunikasi
Kompetisi antar Proses umtuk Sumberdaya Mutual Exclusion Critical section Hanya satu program pada saat bersamaan yang diperbolehkan dalam critical section Sebagai contoh hanya satu proses pada satu waktu yang diizinkan mengirimkan perintah ke printer Deadlock Starvation
Kerjasama antar proses melalui Sharing Penulisan harus dapata ekslusif satu sama lain Bagian kritis digunakan untuk menyediakan integritas data
Kerjasama antar proses melalui Komunikasi Message yang lewat Mutual exclusion bukanlah sebuah kebutuhan kontrol untuk kerjasama kekurangan yang terjadi Kemungkinan untuk menemui deadlock Masing-masing proses menunggu message dari proses lain Kemungkinan menemui starvation Dua proses mengirimkan message untuk satu sama lainnya sambil menunggu mesaage yang lain
Kebutuhan untuk Mutual Exclusion Hanya satu proses pada waktu yang sama diizinkan kedalam critical section untuk mendapatkan sumber daya Sebuah proses yang dihentikan (halt) dalam kondisi non-critical section harus melakukan tanpa interfensi proses yang lain Tidak terjadi deadlock atau starvation
Kebutuhan untuk Mutual Exclusion Sebuah proses tidak harus tertunda aksesnya ke critical section walaupun tidak ada proses lain yang menggunakannya Tidak ada asumsi yang dibuat tentang proses kecepatan relatif atau jumlah proses Sebuah proses berada didalam critical section untuk waktu yang terbatas
Usaha Pertama Busy Waiting Proses selalu memeriksa untuk melihat jika ada suatu yang dapat masuk kedalam critical section Proses tidak dapat melakukan sesuatu yang produktif sampai mendapatkan izin untuk memasuki critical section
Coroutine Dirancang untuk dapat mengirimkan dan mengembalikan kembali kontrol eksekusi diantara dirinya sendiri Tidak cukup mendukung proses konkuren
Usaha Kedua Masing-masing proses dapat menguji status lain tetapi tidak dapat mengubahnya Ketika sebuah proses ingin masuk ke critical section terlebih dahulu memeriksa proses yang lain Jika tidak ada proses lain dalam critical section, maka mereka dapat menentukan status untuk critical section Metoda ini tidak menjamin mutual exclusion Masing-masing proses dapat memeriksa tanda flag dan kemudian mulai masuk kedalam critical section pada saat yang bersamaan
Usaha Ketiga Mengatur tanda flag untuk masuk kedalam critical section sebelum memeriksa proses lain Jika proses lain didalam critical section ketika sudah ditandai dengan flag, proses lainnya di- block sambil menunggu proses tersebut melepaskan critical section Deadlock memungkinkan untuk terjadi ketika dua prtoses saling berebut memberi tanda flag untuk masuk ke critical section. Sekarang, masing-masing proses harus menunggu proses lain untuk melepaskan critical section
Usaha Keempat Sebuah proses menentukan tanda flag untuk menandai keinginannya masuk ke critical section tetapi dipersiapkan untuk mereset tanda flag-nya Proses-proses lain diperiksa. Jika mereka berada didalam wilayah critical, tanda flag di reset dan kemudian menetapkan keinginannya masuk ke wilayah critical. Kemudian diulangi sampai proses dapat masuk ke wilayah critical.
Usaha Keempat Memungkinkan masing-masing proses untuk menentukan flag mereka sendiri, memeriksas proses yang lain, skenario ini tidak akan bertahan sangat panjang, bukan merupakan deadlock. Ini yang tidak diinginkan
Mengkoreksi Solusi Masing – masing mendapatkan giliran untuk critical section Jika suatu proses menginginkan critical section, mereka menetapkan flag-nya untuk menunggu gilirannya