INTERPROCESS COMMUNICATION Permasalahan: Penyampaian informasi antar proses Pengaturan proses agar tidak saling menghalangi Proper sequencing bila terjadi dependencies RACE CONDITION dua proses mengakses shared memory pada saat yang bersamaan
Contoh: spooler directory pada printer
INTERPROCESS COMMUNICATION CRITICAL REGION Bagian program dimana shared memory diakses Mutual Exclusion: mekanisme untuk mencegah suatu proses mengakses resouce yang sedang dipakai oleh preses lain
INTERPROCESS COMMUNICATION Empat kondisi agar terjadi mutual exclusion: Tidak ada dua proses yang berada di critical region pada saat yang bersamaan Tidak ada asumsi mengenai kecepatan dan jumlah CPU Tidak ada proses yang berada di luar critical region menghalangi (blocking) proses yang lain Tidak ada proses yang menunggu selamanya untuk masuk critical region
Mutual exclusion using critical regions
MUTUAL EXCLUSION DENGAN BUSY WAITING Disabling Interrupt Proses mematikan (disable) semua interrupt setelah memasuki critical region dan menghidupkan kembali (re-enable) interrupt tersebut sebelum meninggalkannya disabling interrupt tidak sebaiknya dilakukan oleh user process Lock Variables Shared (lock) variables, awalnya diset 0 Jika lock = 0, set lock = 1, kemudian masuk critial region Jika lock = 1, tunggu sampai lock = 0 problem: race condition
MUTUAL EXCLUSION DENGAN BUSY WAITING Strict Alternation (a) Process 0. (b) Process 1.
MUTUAL EXCLUSION DENGAN BUSY WAITING Peterson’s Solution
MUTUAL EXCLUSION DENGAN BUSY WAITING TSL Instruction (Test and Set Lock)
Sleep and Wakeup Sleep: system call yang menyebabkan proses yang memanggil diblock, atau ditunda (suspended) Wakup: system call yang menyebabkan proses dibangunkan, atau menjadi ready
Producer-Consumer Problem (Bounded-Buffer Problem) with fatal race condition