tugas
Simulasi Algoritma Sinkronisasi Reader-Writer Problem (Python)
Simulasi Algoritma Konkurensi Sistem Operasi: Reader-Writer Problem Menggunakan Python
Laporan proyek implementasi komputasi konkurensi sistem operasi yang mensimulasikan pemecahan masalah klasik sinkronisasi proses multi-threading: First Readers-Writers Problem (prioritas pembaca) dan pencegahan race conditions serta starvation.
1. Masalah Sinkronisasi Reader-Writer
Skenario di mana suatu struktur data atau basis data bersama diakses oleh banyak proses konkuren:
- Readers (Pembaca): Hanya membaca isi data tanpa melakukan modifikasi. Banyak proses pembaca diizinkan mengakses data secara simultan.
- Writers (Penulis): Membaca dan memodifikasi data. Penulis mensyaratkan akses eksklusif mutlak (mutual exclusion); tidak boleh ada proses lain (pembaca maupun penulis lain) yang mengakses data selama proses penulisan berlangsung.
2. Implementasi Primitif Sinkronisasi (Semaphore & Mutex)
Simulasi dibangun menggunakan pustaka threading Python (threading.Thread, threading.Semaphore, threading.Lock):
python
# Logika Kontrol Readers-Writers dengan Mutex
import threading
mutex = threading.Lock()
rw_mutex = threading.Semaphore(1)
read_count = 0
def reader(reader_id):
global read_count
with mutex:
read_count += 1
if read_count == 1:
rw_mutex.acquire() # Reader pertama mengunci penulis
# Critical Section: Membaca data
print(f"Reader {reader_id} sedang membaca data...")
with mutex:
read_count -= 1
if read_count == 0:
rw_mutex.release() # Reader terakhir membuka kunci bagi penulis
3. Berkas Laporan Terlampir
- Laporan komprehensif:
Laporan So_kelompok 7.pdfyang menyajikan arsitektur konkurensi, analisis kemungkinan kebuntuan (deadlock), dan hasil logging simulasi runtime.