Anda di halaman 1dari 24

SINKRONISASI

PROSES
A DA M B AC H T I A R , S . KO M . , M . M T
OBJECTIVE

Memahami implementasi
sinkronisasi dengan
masalah-masalah klasik
Memahami konsep dalam sinkronisasi
semaphore untuk proses
sinkronisasi proses
Memahami algoritma
sinkronisasi

Memahami
permasalahan critical
section
LATAR BELAKANG

Beberapa proses/thread bekerjasama (cooperating) dan berbagi (sharing) data


Masalah : Akses yang konkuren pada shared data akan menghasilkan
inkonsistensi
• Producer : produksi data dan dimasukkan ke buffer
• Consumer : mengkonsumsi/mengambil data dari buffer
Contoh : bounded-
buffer pada konsep • Buffer dibatasi kapasitasnya
producer-consumer • Variabel counter berfungsi mencatat jumlah data saat ini.
Counter bernilai awal 0 dan bertambah ketika data
diproduksi dan berkurang ketika data dikonsumsi
LATAR BELAKANG
Shared Data
counter : variabel pencatat jumlah data sekarang
buffer[ ] : penampungan data
BUFFER_SIZE : jumlah maksimum buffer
Producer(P) Consumer(C)
while (true) {
While (true) {
// jika yang diproduksi = batas, do nothing
//Jika yang dikonsumsi = 0, do nothing
while(counter==BUFFER_SIZE); while (counter == 0);
//produksi data dan masukkan buffer // Konsumsi Data
buffer [in] = nextProduced; nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
in = (in+1)%BUFFER_SiZE; //Kurangi counter dengan 1
//tambahkan counter dengan 1 counter--;
counter++; }
}
LATAR BELAKANG
counter++ dapat diimplementasikan dalam bahasa mesin sbb :
• register1 = counter
• register1 = register1 + 1
• counter = register1
counter-- dapat diimplementasikan dalam bahasa mesin sbb :
• register2 = counter
• register2 = register2 - 1
• count = register2
Jika “counter = 5” dan producer-consumer dieksekusi secara concurrent maka urutan eksekusinya bisa jadi :
• Producer eksekusi : register1 = counter {register1 = 5}
• Producer eksekusi : register1 = register1 + 1 {register1 = 6}
• Consumer eksekusi : register2 = counter {register2 = 5}
• Consumer eksekusi : register2 = register2 - 1 {register2 = 4}
• Producer eksekusi : counter = register1 {counter = 6 }
• Consumer eksekusi : counter = register2 {counter = 4}
Nilai counter dapat bernilai 4 atau 6. Padahal seharusnya 5

Problem : race condition


LATAR BELAKANG

Race condition: Situasi dimana beberapa proses


mengakses dan memanipulasi shared data secara Untuk mencegah race condition, proses
bersamaan. Nilai akhir dari shared data konkuren harus di- sinkronisasi
tergantung proses yang diselesaikan paling akhir.
CRITICAL SECTION PROBLEM
Sebagai gambaran, sebuah sistem mempunyai n process yang
saling berbagi shared data

Setiap proses punya segmen kode yang disebut critical


section, dimana shared data diakses.
• Contoh : ketika producer/consumer mengakses variabel counter

Masalah : ketika satu process menjalankan critical section-


nya, di saat bersamaan process lain tidak boleh mengakses
critical-section-nya

Ada 3 syarat yang harus dipenuhi sebagai solusi penyelesaian


critical section
• Mutual Exclusion
• Progress
• Bounded Waiting
SOLUSI CRITICAL SECTION PROBLEM
Mutual Exclusion. Jika suatu proses sedang mengerjakan critical section, maka
tidak boleh ada proses lain yang masuk (mengerjakan) critical section

Progress. Jika tidak ada suatu proses yang mengerjakan critical section dan
ada beberapa proses yang akan masuk ke critical section, maka hanya proses-
proses yang ada di entry section yang bisa mengerjakan critical section

Bounded Waiting. Ada batasan waktu tunggu ketika proses diizinkan untuk memasuki critical section
setelah proses membuat permintaan untuk memasuki critical section dan sebelum permintaan yang
diberikan.
• Diasumsikan setiap proses dieksekusi dengan kecepatan lebih dari 0
• Tidak ada asumsi mengenai kecepatan relatif proses n
SOLUSI CRITICAL SECTION PROBLEM

repeat
entry section Proses meminta ijin masuk kedalam cirtical
section
cirtical section
exit section Entry section, adalah daerah tempat
proses menunggun masuk ke critical
remainder section section
Until false
Exit Section, adalah daerah dimana suatu
proses baru saja keluar dari critical section
SINKRONISASI SOFTWARE

Pembatasan pengaplikasian
hanya pada dua proses pada
satu waktu, yaitu Pi dan Pj.

Jika ada proses Pi, maka akan


digunakan Pj sebagai proses
yang lainnya, dengan j = 1- i
SINKRONISASI SOFTWARE

repeat Algoritma 1 Kedua proses berbagi


while turn ≠ 0 do no_op variable bertipe interger
yaitu turn yang
critical section diinisialisasikan dengan 0
turn = 1; (atau 1)
remainder section
Jika turn=0, maka proses P0
until false diijinkan untuk
mengekseskusi critical
section
SINKRONISASI SOFTWARE
Solusi tadi menunjukkan adanya mutual exclusion, karena hanya ada satu proses yang
masuk critical section pada suatu saat
Namun belum menunjukkan adanya progress dan bounded waiting
• Jika P0 keluar dari critical section, maka nilai turn=1 yang
berarti P1 siap masuk ke cirtical section
• P1 selesai menggunakan critical section, maka P1 dan P0
Contoh berada di remainder section dengan nilai turn=0
• P0 kembali menggunakan critical section dan masuk ke
remainder section dengan turn=1
• P0 kembali menggunakan critical section tetapi nilai turn=1
Terlihat P1 yang berada di remainder section memblok P0
Akibatnya P0 tidak bisa menggunakan critical section
Menentang progress, yaitu proses diblok oleh proses yang tidak berada di critical
section
SINKRONISASI SOFTWARE

• Algoritma II
repeat
• Variabel turn diganti variable flag
flag [0] = true;
– var flag : array[0..1] of bolean
while flag[1] do no_op
• P0 menetapkan flag[i] = true, P0 siap masuk
critical section critical section
flag[0] = false; • P0 cek apakah P1 tidak masuk critical section
remainder section • Jika P1 masuk critical section, maka P0
until false menunggu sampai flag[1] = false
• Pada saat exit section P0 mengeset flag[0]
menjadi false, sehingga proses lain bisa
menggunakan critical section
SINKRONISASI SOFTWARE

repeat • Algoritma III (Peterson)


flag[0] = true; • Kombinasi antara algoritma I dan II
turn = 1; • Membutuhkan 2 variable, yaitu :
while (flag[1] and turn=1) do no_op – var flag: array[0..1] of Boolean;
critical section turn : 0..1;

flag[0] = false; • Nilai awal flag[0]=flag[1]=false, dan nilai turn [0..1]


• P0 masuk critical section set flag[0] = true
remainder section
• Cek apakah proses lain masuk critical section turn =1
until false
SINKRONISASI HARDWARE

Sistem multiprosesor, proses-proses bertindak independen.


Pemroses yang memakai memori bersama, maka pengaksesan terhadap suatu memori
dijaga pada tingkat perangkat keras agar pemroses lain tidak dapat mengakses suatu
lokasi yang sama disaat yang sama
Perangkat keras menyediakan instruksi-instruksi atomik yang tidak dapat diinterupsi
• TSL (Test and Set Lock)
Intruksi-instruksi • TAS atau TS (Test and Set), digunakan IBM S/360, keluarga
tersebut diantaranya Motorola M68000, dll
adalah : • CS (Compare and Set), digunakan IBM 370 Series
• Exchange (xchg), digunakan Intel X86
SINKRONASI HARDWARE
• Metode Test and Set Procedure Tsl_In (var
flag:integer);
• Membaca isi memori ke register dan
var
menyimpan nila tidak nol ke alamat memori
r : Register;
tersebut
Begin
• Proses membaca dan menulis memori
repeat
bersifat atomic sehingga tidak terjadi
asm tsl r, flag
interupsi
until r = 1;
• Implementasi metode ini digunakan variable
End;
flag
Procedure Tsl_out (var
• Jika flag=1 maka P0 masuk critical section flag:integer);
• Jika keluar dari critical section, flag = 0 Begin
flag := 0;
End;
SEMAPHORE
• Sebuah cara/perangkat untuk menangani critical section
• Tidak membutuhkan busy waiting
• Prinsip dasarnya, dua proses atau lebih bekerjasama dengan menggunakan penanda-penanda
sederhana
• Proses dipaksa berhenti sampai proses memperoleh penanda tertentu.
• Contoh :
– Proses P1 :
• S1;
• Signal(synch);
– Proses P2 :
• wait(synch);
• S2;
MASALAH : DEADLOCK & STARVATION

• Deadlock, dua atau lebih proses menunggu tanpa kepastian suatu event yang dapat disebabkan
oleh satu proses yang sedang menunggun
• Misalnya S dan Q ada 2 semaphores yang diinisialisasi 1

• Stravation, Blocking terus menerus


MASALAH-MASALAH KLASIK
SINKRONISASI
• Untuk implementasi permasalahan sinkronisasi dapat menggunakan model yang digunakan
untuk permasalahan :
– Bounded buffer (producer-consumer) Problem
– Reader-Writer
– Dining Philosopher
BOUNDED BUFFER (PRODUCER-
CONSUMER) PROBLEM
Produsen menghasilkan barang, sementara konsumen yang akan
menggunakannnya

Ada beberapa kekangan yang harus dipenuhi antara lain :


• Barang yang dihasilkan oleh produsen terbatas
• Barang yang di pakai konsumen ternatas
• Konsumen hanya boleh menggunakan barang setelah produsen menghasilkan barang pada
jumlah tertentu
• Produsen hanya boleh memproduksi barang jika konsumen kehabisan barang
READER & WRITER PROBLEM

Ada dua Seorang reader tidak perlu menunggu reader lain


variasi untuk selesai hanya karena writer menunggun (reader
punya prioritas lebih tinggi disbanding dengan writer)
masalah
reader &
writer Jika ada writer menunggu, maka tidak boleh ada
reader lain yang bekerja (writer mempunyai prioritas
problem : lebih tinggi dari reader)
DINING PHILOSOPHER PROBLEM

Filosofer menghabiskan hidupnya hanya untuk makan dan befikir


Tidak ada interaksi dengan sebelahnya
Setiap filosofer mencoba mengambil dua supit untuk makan
Jika ada filosofer yang mengambil dua supit maka ada filosof yang harus
menunggun sampai supit tersebut ditaruh.
• Jika semua filosuf mengambil supit kiri maka, ketika ada
Mungkin terjadi
seorang filusuf mengambil supit kanan, maka akan
deadlock
terjadi deadlock, karena nilai supit = 0
DINING PHILOSOPHER PROBLEM

Ada 3 cara Hanya 4 filosof yang duduk bersama dalam satu meja
untuk
menghindari
deadlock, Mengijinkan seorang filusuf mengambil supit hanya jika kedua supit ada
yaitu

Menggunakan solusi asimetrik, yaitu filosof yang nomor ganjil mengambil


supit kanan dulu baru supit kiri, sedangkan filosof yang duduk di kursi
genap mengambik supit kanan dulu kemudian baru supit kiri
TUGAS

• Apa Manfaat utama adanya sinkronasi proses ?


• Dengan menghindari adanya mutual exlusion apakah menjamin bahwa deadlock tidak terjadi ?
• Bagaimana struktur semaphore untuk menyelesaikan masalah dining philosopher problem ?

• Kumpulan hari rabu, 15 Juni 2016 pkl. 08.00 WITA


• Subject TM-5 SO klas D
• Format file pdf : <nama>.<nim>.TM5

Anda mungkin juga menyukai