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.pdf yang menyajikan arsitektur konkurensi, analisis kemungkinan kebuntuan (deadlock), dan hasil logging simulasi runtime.

Attachments