NAMA : ANTHONY PEDRO NPM : 2022210123
TUGAS PERT 7 SISTEM OPERASI
1. Apa yang Dimaksud dengan Race Condition?
Race condition adalah kondisi yang terjadi ketika dua atau lebih proses atau thread mengakses data atau sumber daya bersama pada waktu yang sama dan hasil akhirnya bergantung pada urutan atau jadwal pelaksanaan proses tersebut. Kondisi ini dapat menyebabkan perilaku tak terduga atau error, terutama bila proses-proses ini melakukan operasi write atau update pada data bersama.
Untuk mengatasi race condition, diperlukan mekanisme sinkronisasi untuk mengatur akses ke sumber daya bersama.
2. Apa yang Dimaksud dengan Critical Section?
Critical section adalah bagian dari kode dalam proses atau thread di mana terdapat akses ke sumber daya atau data bersama yang harus diproteksi agar tidak diakses secara bersamaan oleh lebih dari satu proses atau thread. Masalah critical section ini umumnya dihadapi dalam pemrograman concurrent dan multiprogramming, di mana beberapa proses berjalan pada waktu yang sama.
Untuk menyelesaikan masalah critical section, terdapat tiga syarat utama yang harus dipenuhi:
Mutual Exclusion: Hanya satu proses yang dapat berada di dalam critical section pada satu waktu. Ini untuk mencegah race condition.
Progress: Jika tidak ada proses dalam critical section, dan terdapat satu atau lebih proses yang ingin masuk, maka salah satu proses tersebut harus diizinkan untuk masuk tanpa adanya penundaan yang tidak diperlukan.
Bounded Waiting: Terdapat batas maksimal waktu bagi proses untuk menunggu masuk ke dalam critical section sehingga tidak ada proses yang harus menunggu selamanya (starvation).
3. Bagaimana Algoritma Bakery untuk Sinkronisasi Banyak Proses (n Proses)?
Algoritma Bakery adalah algoritma untuk sinkronisasi proses pada critical section yang dirancang oleh Leslie Lamport untuk menghindari race condition. Algoritma ini bekerja dengan prinsip yang mirip dengan antrian pada toko roti: setiap proses diberi nomor yang menunjukkan giliran mereka.
Berikut langkah-langkahnya:
Setiap proses yang ingin memasuki critical section mengambil "nomor tiket" yang lebih besar dari semua nomor yang saat ini aktif.
Setelah mendapat nomor, proses akan menunggu sampai nomor mereka adalah yang paling kecil dibandingkan proses lain yang juga ingin memasuki critical section.
Proses dapat memasuki critical section hanya jika nomor mereka lebih kecil dari proses lain yang ingin masuk.
Setelah keluar dari critical section, proses melepaskan nomor tersebut sehingga proses lain dapat melanjutkan.
Algoritma ini efektif untuk sinkronisasi banyak proses karena memastikan bahwa hanya satu proses yang bisa masuk ke critical section, dan setiap proses mendapat giliran.
4. Apa yang Dimaksud dengan Semaphore dan Sebutkan Operasi pada Semaphore
Semaphore adalah variabel atau struktur data yang digunakan untuk mengelola akses ke sumber daya bersama dalam lingkungan concurrent. Semaphore memiliki dua operasi utama, yaitu wait (P) dan signal (V):
Wait (P): Operasi ini mengurangi nilai semaphore. Jika nilai semaphore kurang dari nol, proses akan diblokir atau menunggu.
Signal (V): Operasi ini menambah nilai semaphore. Jika ada proses yang sedang menunggu (karena nilai semaphore negatif), operasi ini akan membangunkan salah satu proses yang menunggu.
Semaphore dapat digunakan dalam berbagai bentuk sinkronisasi proses, terutama untuk memastikan mutual exclusion dan mencegah race condition.
5. Bagaimana Struktur Semaphore yang Digunakan untuk Menyelesaikan Permasalahan?
a. Bounded Buffer Problem
Dalam bounded buffer problem (masalah produsen-konsumen), terdapat sebuah buffer berukuran tetap, dan dua tipe proses: produsen (yang menambahkan data ke buffer) dan konsumen (yang mengambil data dari buffer). Untuk menyelesaikan masalah ini, digunakan tiga semaphore:
Mutex: Menjaga agar hanya satu proses yang dapat mengakses buffer pada suatu waktu (mutual exclusion).
Empty: Menghitung jumlah ruang kosong dalam buffer. Hanya produsen yang dapat mengurangi nilai empty.
Full: Menghitung jumlah item yang ada dalam buffer. Hanya konsumen yang dapat mengurangi nilai full.
b. Reader and Writer Problem
Dalam reader and writer problem, terdapat beberapa proses yang membaca dan menulis ke data bersama. Pembaca bisa membaca bersama-sama, tetapi penulis harus mengakses data secara eksklusif. Struktur semaphore yang digunakan adalah:
Mutex: Mengontrol akses ke counter pembaca sehingga hanya satu pembaca yang dapat memperbarui counter pada suatu waktu.
Write: Memastikan bahwa hanya satu penulis yang dapat mengakses data, dan tidak ada pembaca saat proses menulis berlangsung.
c. Dining Philosopher Problem
Dalam dining philosopher problem, beberapa filsuf duduk di meja bundar dengan satu garpu di antara masing-masing dari mereka. Untuk makan, seorang filsuf memerlukan dua garpu (di kiri dan kanan). Semaphore yang digunakan:
Semaphore untuk setiap garpu: Setiap garpu diwakili oleh sebuah semaphore, di mana setiap filsuf harus mendapatkan dua semaphore (garpu) sebelum dapat makan.
Semaphore tambahan: Beberapa implementasi menambahkan semaphore tambahan untuk mengatur jumlah filsuf yang dapat mengambil garpu pada saat yang sama, menghindari situasi deadlock di mana setiap filsuf hanya memegang satu garpu.