π― Capaian Pembelajaran
Setelah mempelajari materi ini, mahasiswa diharapkan mampu:
- Memahami konsep sinkronisasi proses
- Mengidentifikasi race condition dan critical section
- Menjelaskan mekanisme sinkronisasi (mutex, semaphore, monitor)
- Menganalisis masalah klasik sinkronisasi
- Menerapkan konsep sinkronisasi dalam pemrograman
1. π§ Konsep Dasar Sinkronisasi Proses
1.1 Pengertian
Sinkronisasi proses adalah mekanisme untuk mengatur eksekusi proses/thread agar tidak terjadi konflik saat mengakses sumber daya bersama (shared resource).
π Narasi:
Dalam sistem multitasking, banyak proses berjalan bersamaan. Jika dua proses mengakses data yang sama tanpa aturan, hasilnya bisa tidak konsisten.
πΌοΈ Ilustrasi Shared Resource
7
π Contoh:
- Dua thread mengubah variabel yang sama
- Hasil akhir menjadi tidak terduga
2. β οΈ Race Condition
2.1 Pengertian
Race condition terjadi ketika hasil eksekusi bergantung pada urutan eksekusi proses/thread.
πΌοΈ Diagram Race Condition
8
π§ Narasi:
Misal:
x = 5
Thread A: x = x + 1
Thread B: x = x + 1
Hasil seharusnya = 7
Tetapi bisa menjadi = 6 karena eksekusi tidak sinkron
3. π Critical Section Problem
3.1 Pengertian
Critical Section adalah bagian kode yang mengakses resource bersama.
πΌοΈ Diagram Critical Section
7
3.2 Syarat Solusi:
- Mutual Exclusion β hanya satu proses
- Progress β tidak deadlock
- Bounded Waiting β tidak starvation
4. π Solusi Sinkronisasi
4.1 Mutex (Mutual Exclusion)
π§ Pengertian:
Lock untuk memastikan hanya satu proses masuk critical section
πΌοΈ Mutex Diagram
7
π Cara kerja:
- Lock β masuk
- Unlock β keluar
β Kelebihan:
- Sederhana
β Kekurangan:
- Bisa menyebabkan deadlock
4.2 Semaphore
π§ Pengertian:
Variabel yang mengontrol akses ke resource
πΌοΈ Semaphore Diagram
7
Jenis:
- Binary Semaphore (0/1)
- Counting Semaphore
Operasi:
- wait()
- signal()
π Contoh:
wait(S)
critical section
signal(S)
4.3 Monitor
π§ Pengertian:
Struktur tingkat tinggi untuk sinkronisasi
πΌοΈ Monitor Diagram
7
Keunggulan:
- Lebih aman
- Otomatis mengatur akses
5. π Masalah Klasik Sinkronisasi
5.1 Producer-Consumer Problem
πΌοΈ Producer Consumer
7
π§ Narasi:
- Producer menghasilkan data
- Consumer mengkonsumsi data
- Buffer harus diatur
5.2 Dining Philosophers Problem
πΌοΈ Dining Philosophers
5
π§ Narasi:
- 5 filsuf makan
- Butuh 2 garpu
- Bisa terjadi deadlock
5.3 Readers-Writers Problem
πΌοΈ Readers Writers
7
π§ Narasi:
- Reader bisa banyak
- Writer harus eksklusif
6. β οΈ Masalah dalam Sinkronisasi
6.1 Deadlock
Proses saling menunggu
6.2 Starvation
Proses tidak mendapat giliran
6.3 Livelock
Proses terus berubah tapi tidak selesai
7. π» Implementasi Sederhana (Python)
import threadinglock = threading.Lock()def critical():
lock.acquire()
print("Critical section")
lock.release()t1 = threading.Thread(target=critical)
t1.start()
8. π§ Studi Kasus Nyata
Kasus:
Aplikasi bank
π Analisis:
- Banyak user akses saldo
- Harus sinkron
- Gunakan mutex/semaphore
9. π Perbandingan Mekanisme Sinkronisasi
| Mekanisme | Kelebihan | Kekurangan |
|---|---|---|
| Mutex | Sederhana | Deadlock |
| Semaphore | Fleksibel | Kompleks |
| Monitor | Aman | Overhead |
10. π Latihan
- Apa itu race condition?
- Jelaskan critical section!
- Apa perbedaan mutex dan semaphore?
- Jelaskan masalah dining philosophers!
π― Kesimpulan
- Sinkronisasi penting dalam sistem multitasking
- Race condition harus dihindari
- Banyak solusi dengan kelebihan masing-masing
- Sinkronisasi meningkatkan keandalan sistem
π Pengembangan Materi Selanjutnya
β‘ Deadlock (lebih mendalam)
β‘ Manajemen Memori
β‘ Virtual Memory