Modul 4: Manajemen Proses: Synchronization dan Scheduling
by Fauzi
rangkumanut.my.id
TIPS: Rangkuman ini hanya sebagai pemahaman secara umum. Pastikan Anda juga membaca BMP (Buku Materi Pokok) versi cetak atau digital di Ruang Baca Virtual (RBV) untuk pemahaman lebih mendalam.
DILARANG: Memperjualbelikan seluruh konten atau latihan soal yang terdapat di portal ini. Pelanggaran akan dikenakan sanksi sesuai ketentuan yang berlaku.
Modul 4: Manajemen Proses: Synchronization dan Scheduling
Kegiatan Belajar 1: Sinkronisasi Sistem Operasi
Akses data oleh beberapa proses secara bersamaan (concurrent) dapat menyebabkan inkonsistensi data. Untuk menjaga konsistensi, diperlukan mekanisme sinkronisasi.
A. Konsep Dasar
Race Condition: Situasi di mana beberapa proses mengakses dan memanipulasi data bersama secara konkuren, sehingga nilai akhir bergantung pada proses mana yang terakhir selesai.
Atomic Process: Bagian kode yang mengubah data bersama dan dijamin sebagai satu kesatuan yang tidak dapat disela.
B. Permasalahan Critical Section
Critical Section adalah segmen kode dalam sebuah proses yang mengubah variabel umum, tabel, atau file. Sistem harus memastikan tidak ada proses lain yang masuk ke critical section saat ada satu proses yang sedang mengeksekusinya.
Syarat Solusi Critical Section:
Mutual Exclusion: Jika satu proses sedang di critical section, tidak boleh ada proses lain di sana.
Progress: Jika critical section kosong dan ada yang ingin masuk, pemilihan proses selanjutnya tidak boleh ditunda tanpa batas (hanya melibatkan proses yang tidak di remainder section).
Bounded Waiting: Harus ada batasan waktu tunggu bagi proses untuk masuk ke critical section setelah mengajukan permintaan, guna mencegah starvation.
Metode Mengatasi Masalah:
Solusi Peterson: Solusi perangkat lunak klasik (untuk 2 proses) menggunakan variabel turn dan flag.
Penggunaan Kunci (Lock): Proses harus mendapatkan kunci (acquire lock) sebelum masuk dan melepasnya (release lock) setelah keluar.
Sinkronisasi Perangkat Keras: Menggunakan instruksi mesin atomic (tidak dapat diinterupsi), seperti test_and_set() dan compare_and_swap().
Instruksi TestAndSet: Membaca nilai variabel, menetapkannya ke TRUE, dan mengembalikan nilai lama secara atomic.
C. Semaphore
Semaphore adalah variabel integer untuk sinkronisasi tanpa busy waiting. Diakses melalui dua operasi atomic:
wait(S): Mengurangi nilai S. Jika negatif, proses diblokir.
signal(S): Menambah nilai S. Jika ada yang diblokir, salah satu dibangunkan (wakeup).
Jenis Semaphore:
Counting Semaphore: Nilai tidak terbatas.
Binary Semaphore (Mutex Locks): Nilai hanya 0 atau 1.
D. Deadlock dan Starvation
Deadlock (Jalan Buntu): Dua atau lebih proses saling menunggu tanpa batas waktu untuk sumber daya yang dipegang proses lain.
Starvation (Kelaparan): Proses diblokir tanpa batas (misal karena prioritas rendah) dan tidak pernah dieksekusi.
4 Karakteristik Deadlock (Harus terpenuhi semua):
Mutual Exclusion: Satu sumber daya hanya untuk satu proses pada satu waktu.
Hold and Wait: Proses memegang sumber daya sambil menunggu sumber daya lain.
No Preemption: Sumber daya tidak bisa diambil paksa.
Circular Wait: Terdapat rantai proses (P0 menunggu P1, P1 menunggu P2, ..., Pn menunggu P0).
Cara Menangani Deadlock:
Pencegahan (Prevention): Menghilangkan salah satu dari 4 karakteristik deadlock.
Penghindaran (Avoidance): Mengizinkan potensi deadlock tapi menghindarinya dengan alokasi cermat (contoh: Algoritma Banker).
Deteksi dan Pemulihan: Membiarkan terjadi, mendeteksi, lalu memulihkan.
Mengabaikan Masalah: Diasumsikan deadlock jarang terjadi (digunakan oleh UNIX dan Windows).
E. Masalah Klasik Sinkronisasi
Bounded-Buffer (Producer-Consumer): Produsen menaruh item, konsumen mengambil item dari buffer terbatas.
Readers and Writers: Banyak pembaca boleh akses bersamaan, tapi penulis harus akses tunggal (eksklusif).