1 Bab 6: Sinkronisasi Proses Latar Belakang Permasalahan Critical-Section Hardware Sinkronisasi Hardware Sinkronisasi Semaphores Permasalahan Klasik Sinkronisasi Sinkronisasi pada Solaris 2 dan Windows 2000 7.1 Latar Belakang Akses yang konkuren pada shared data kemungkinan menghasilkan inkonsistensi Mempertahankan konsistensi data membutuhkan Mempertahankan konsistensi data membutuhkan mekanisme untuk mejamin eksekusi yang teratur pada proses yang saling bekerjasama (cooperating processes). Solusi Shared-memory untuk permasalahan bounded- buffer memungkinkan terdapat n – 1 item dalam buffer pada waktu yang sama. Sebuah solusi, dimana semua buffer N digunakan bukan sesuatu yang sederhana 7.2 Misalnya kita memodifikasi kode program produsen- konsumen dengan menambahkan variabel counter, diinisialisasi ke 0 dan bertambah setiap kali item baru ditambahkan ke buffer
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Bab 6: Sinkronisasi Proses
� Latar Belakang� Permasalahan Critical-Section� Hardware Sinkronisasi� Hardware Sinkronisasi� Semaphores� Permasalahan Klasik Sinkronisasi� Sinkronisasi pada Solaris 2 dan Windows 2000
7.1
Latar Belakang
� Akses yang konkuren pada shared data kemungkinan menghasilkan inkonsistensi
� Mempertahankan konsistensi data membutuhkan � Mempertahankan konsistensi data membutuhkan mekanisme untuk mejamin eksekusi yang teratur pada proses yang saling bekerjasama (cooperating processes).
� Solusi Shared-memory untuk permasalahan bounded-buffer memungkinkan terdapat n – 1 item dalam buffer pada waktu yang sama. Sebuah solusi, dimana semua buffer N digunakan bukan sesuatu yang sederhana
7.2
� Misalnya kita memodifikasi kode program produsen-konsumen dengan menambahkan variabel counter, diinisialisasi ke 0 dan bertambah setiap kali item baru ditambahkan ke buffer
� Nilai counter dapat bernilai 4 atau 6, dimana hasil yang
7.9
� Nilai counter dapat bernilai 4 atau 6, dimana hasil yang benar seharusnya 5.
Race Condition
� Race condition: Situasi dimana beberapa proses mengakses dan memanipulasi shared data secara bersamaan. Nilai akhir dari shared data tergantung proses yang diselesaikan paling akhir.
� Untuk mencegah race condition, proses konkuren harus di- sinkronisasi
7.10
6
Permasalahan Critical-Section
� n proses semua berkompetisi menggunakan shared data� Setiap proses mempunyai segmen kode yang disebut
critical section, dimana shared data diakses.critical section, dimana shared data diakses.� Permasalahan – menjamin ketika satu proses
menjalankan critical section nya, tidak ada proses lain yang mengeksekusi critical section nya.
7.11
Solusi Permasalahan Critical-Section
1. Mutual Exclusion. Jika proses Pi mengekseskusi critical section nya, maka tidak ada proses lain yang dapat mengeksekusi critical section nya.
2. Progress. Jika tidak ada proses yang mengeksekusi 2. Progress. Jika tidak ada proses yang mengeksekusi critical section nya dan terdapat beberapa proses yang akan memasuki critical section, maka pemilihan proses yang akan memasuki critical section berikutnya tidak dapat ditunda tanpa batas
3. 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.
7.12
section dan sebelum permintaan yang diberikan. � Diasumsikan setiap proses dieksekusi dengan kecepatan
lebih dari 0� Tidak ada asumsi mengenai kecepatan relatif proses n.
7
Cara Penyelesaian
� Hanya ada 2 proses, P0 dan P1
� Struktur umum dari proses Pi (proses lain Pj)do {do {
entry sectioncritical section
exit sectionreminder section
} while (1);� Proses mungkin menggunakan variabel umum yang
7.13
� Proses mungkin menggunakan variabel umum yang sama untuk sinkronisasi aksinya
Algoritma 1
� Shared variable: � int turn;
initially turn = 0initially turn = 0� turn = i � Pi can enter its critical section
� Proses Pi
do {while (turn != i) ;
critical sectionturn = j;
reminder section
7.14
reminder section} while (1);
� Memenuhi mutual exclusion, tetapi tidak memenuhiprogress
8
Algoritma 2
� Shared variable:� boolean flag[2];
initially flag [0] = flag [1] = false.flag [i] = true � P ready to enter its critical section� flag [i] = true � Pi ready to enter its critical section
� Proses Pi
do {flag[i] := true;while (flag[j]) ;
critical sectionflag [i] = false;
remainder section
7.15
remainder section} while (1);
� Memenuhi mutual exclusion, tetapi tidak memenuhi progress.
Algoritma 3 (Peterson)
� Mengkombinasikan shared variable dari algoritma 1 dan2.
� Proses Pi
do {do {flag [i]:= true;turn = j;while (flag [j] and turn = j) ;
critical sectionflag [i] = false;
remainder section} while (1);
7.16
} while (1);� Memenuhi tiga hal untuk pemecahan permasalahan
critical-section untuk 2 proses.
9
Algoritma Bakery
� Sebelum masuk ke critical section, proses menerima
Critical section untuk n proses
� Sebelum masuk ke critical section, proses menerima nomor. Pemegang nomor terkecil memasuki critical section.
� Jika proses Pi dan Pj menerima nomor yang sama, jika i < j, maka Pi dilayani dahulu; apabila sebaliknya Pj dilayani dahulu.
� Skema penomoran menggunakan nomor urut; misalnya 1,2,3,3,3,3,4,5...
7.17
1,2,3,3,3,3,4,5...
Algoritma Bakery
� Notasi <≡ lexicographical order (ticket #, process id #)� (a,b) < (c,d) jika a < c atau jika a = c dan b < d� max (a0,…, an-1) adalah sebuah nilai, k, dimana k ≥ ai for i -� max (a0,…, an-1) adalah sebuah nilai, k, dimana k ≥ ai for i -
� Diasumsikan 2 operasi sederhana:� block menghentikan sementara (suspend) proses yang
memanggil� wakeup(P) melanjutkan (resume) eksekusi dari proses P
7.26
� wakeup(P) melanjutkan (resume) eksekusi dari proses P yang di-blok
14
Implementasi
� Operasi Semaphore didefinisikanwait(S):
S.value--;if (S.value < 0) { if (S.value < 0) {
tambah proses ke S.L;block;
}
signal(S): S.value++;if (S.value <= 0) {
menghapus proses P dari S.L;
7.27
menghapus proses P dari S.L;wakeup(P);
}
Semaphore sebagai PerangkatSinkronisasi Umum
� Eksekusi B oleh Pj hanya setelah A dieksekusi pada Pi
� Gunakan semaphore flag yang diinisialisasi 0� Kode:� Kode:
Pi Pj
� �
A wait(flag)signal(flag) B
7.28
15
Deadlock dan Starvation
� Deadlock – dua atau lebih proses menunggu tanpa kepastiansuatu event yang dapat disebabkan oleh satu proses yang sedang menunggu.Misalnya S dan Q adalah 2 semaphores yang diinisialisasi 1� Misalnya S dan Q adalah 2 semaphores yang diinisialisasi 1
P0 P1
wait(S); wait(Q);wait(Q); wait(S);
� �
signal(S); signal(Q);signal(Q) signal(S);
Starvation – blok yang tidak pasti. Sebuah proses mungkin
7.29
� Starvation – blok yang tidak pasti. Sebuah proses mungkintidak pernah dihapus dari antrian semaphore yang dihentikansementara (suspend)
Dua Jenis Semaphores
� Counting semaphore – nilai integer dapat berkisar melalui domain tak terbatas.
� Binary semaphore – nilai integer dapat mempunyai � Binary semaphore – nilai integer dapat mempunyai jangkauan 0 dan 1; lebih sederhana untuk diimplementasikan
� Dapat mengimplementasikan counting semaphore Ssebagai binary semaphore.
7.30
16
Implementasi S sebagai Binary Semaphore
� Struktur Data:binary-semaphore S1, S2;int C: int C:
� Inisialisasi:S1 = 1S2 = 0C = nilai awal dari semaphore S
7.31
Implementasi S� Operasi wait
wait(S1);C--;if (C < 0) {
signal(S1);signal(S1);wait(S2);
}signal(S1);
� Operasi signalwait(S1);C ++;if (C <= 0)
7.32
if (C <= 0)signal(S2);
elsesignal(S1);
17
Permasalahan Klasik Sinkronisasi
� Permasalahan Bounded-Buffer
� Permasalahan Readers and Writers� Permasalahan Readers and Writers
� Permasalahan Dining-Philosophers
7.33
Permasalahan Bounded-Buffer
� Shared data
semaphore full, empty, mutex;
Inisialisasi:
full = 0, empty = n, mutex = 1
7.34
18
Permasalahan Bounded-Buffer Proses Produser
do { …
memproduksi item pada nextpmemproduksi item pada nextp…