Konkurensi SISTEM OPERASI Slide perkuliahan Sumber : - Modern Operating System, Tanenbaum Operating System, Internal and Design Principles, William Stallings Modul SO, Johni S. Pasaribu Ken Kinanti Purnamasari
KONKURENSI Keadaan dimana terdapat lebih dari satu proses yang dieksekusi pada suatu waktu. Interaksi antar proses : Persaingan (untuk mendapatkan resources) Kerjasama (komunikasi & sinkronisasi)
INTERAKSI PROSES Kompetisi : Tidak saling tahu Kooperasi Bagi-Pakai : Saling tahu tidak langsung Kooperasi Komunikasi : Saling tahu langsung
MASALAH KONKURENSI Mutual Exclusion : satu proses, di suatu waktu Deadlock : proses saling menunggu Starvation : satu proses selalu menunggu
RACE CONDITION Kondisi dimana beberapa proses dapat mengakses (read & write) data / variabel yang sama. Masalah Data yang digunakan suatu proses, dapat diubah (diganggu) oleh proses lain.
CRITICAL Critical Resource : sumber daya yang tidak dapat dipakai bersama pada suatu waktu. contoh : printer, disk Critical Section : bagian program/proses yang mengakses Critical Resource.
MUTUAL EXCLUSION Hanya ada satu proses yang dikerjakan di suatu waktu. Pelanggaran Mutex menyebabkan : Deadlock Starvation
SYARAT MUTEX Hanya ada 1 proses dalam CS dalam suatu waktu. Suatu proses yang tidak berhenti di CS-nya, tidak boleh mengganggu proses lain. Waktu tunggu suatu proses ditentukan di awal. Jika tidak ada proses di CS, proses baru boleh masuk. Tidak ada perkiraan kecepatan eksekusi & jumlah pemroses Suatu proses berada di CS untuk waktu yang terbatas.
PENDUKUNG MUTEX Algoritma yang digunakan untuk mendukung terjadinya Mutual Exclusion dengan busy waiting adalah : Dekker untuk kasus 2 buah proses Peterson dapat digeneralisasi untuk n-buah proses Busy waiting = sibuk menunggu tanpa aktivitas lain, sampai diijinkan masuk oleh CS
Program Dekker; const N = 2; var turn : integer; flag : array[0..N-1] of boolean; procedure MasukCriticalSection; begin {mengerjakan kode-kode critical} end; procedure KeluarCriticalSection; {mengerjakan kode-kode yang tidak critical}
procedure Proses0; begin repeat flag[0] := true; turn := 1; while flag[1] do if turn = 1 then flag[0] := false; while turn = 1 do begin end; end; MasukCriticalSection; KeluarCriticalSection; until false
procedure Proses1; begin repeat flag[1] := true; turn := 0; while flag[0] do if turn = 0 then flag[1] := false; while turn = 0 do begin end; end; MasukCriticalSection; KeluarCriticalSection; until false
begin flag[0] := false; flag[1] := false; parbegin proses0; proses1; parend; end;
Program Peterson; const N = 2; var turn : integer; flag : array[0..N-1] of boolean; procedure MasukCriticalSection; begin {mengerjakan kode-kode critical} end; procedure KeluarCriticalSection; {mengerjakan kode-kode yang tidak critical}
procedure Proses0; begin repeat flag[0] := true; turn := 1; while (flag[1] and turn = 1) do begin end; MasukCriticalSection; flag[0] := false; KeluarCriticalSection; until false end; Procedure Proses1; flag[1] := true; turn := 0; while (flag[0] and turn = 0) do begin end; flag[1] := false;
begin flag[0] := false; flag[1] := false; parbegin proses0; proses1; parend; end;
SEMAPHORE Variabel khusus yang digunakan untuk menandai. Semaphore tidak dapat di-interupsi sampai kode program tertentu selesai dikerjakan. Semaphore tidak membutuhkan busy waiting. Memakai konsep wait dan signal.
SEMAPHORE Counting Semaphore nilai bertambah terus Binary Semaphore nilai hanya berupa 0 atau 1
SEMAPHORE Beberapa proses yang berkaitan, menentukan proses lainnya dengan signal-signal. Sebuah proses akan dihentikan proses lainnya ketika mendapatkan signal tertentu. Semaphore merupakan variabel integer yang diakses operasi atomik standar (wait & signal). Terdapat 2 operasi terhadap Semaphore (Blocked & Wake up)
SEMAPHORE do wait (mutex); //critical_section signal (mutex); //remainder section while true
Semaphore, Deadlock & Starvation NEXT … MORE DETAIL ABOUT Semaphore, Deadlock & Starvation