Dokumen tersebut membahas tentang konsep-konsep sinkronisasi proses konkuren, meliputi:
1. Masalah race condition yang terjadi ketika proses-proses mengakses dan memodifikasi data bersama secara bersamaan.
2. Permasalahan critical section, yaitu bagian kode yang hanya boleh dieksekusi satu proses pada satu waktu.
3. Algoritma dan perangkat keras yang digunakan untuk menyelesaikan masalah critical section dan menjamin konsist
2. 5.1 Latar Belakang
Proses yang konkuren adalah proses yang lebih
dari satu berada pada saat yang sama. Proses ini tak
sepenuhnya bergantung dengan lain nya dapat juga
berinteraksi,proses konkuren yang dilakukan bersama
dapat membuat data tidak konsisten,agar data
konsisten di butuhkan mekanisme untuk menjamin
eksekusi yang beruutan pada proses yang bekerja
sama.
3. Pada model shared memory,permasalahan bounded-buffer paling
banyak menyimpan n-1 pada saat yang sama. Modifikasi kode producer
consumer menambahkan variable counter diinisiali 0 dan setiap 1 item baru
di tambahkan ke buffer,definisi data yang digunakan bersama:
#define BUFFER_SIZE 10
typedef struct
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0
int counter = 0;
Proses pada producer akan menambahkan satu nilai variable counter sebagai
berikut:
4. item nextPruduced;
while (1) {
while (counter == BUFFER_SIZE)
; /* do nothing */
buffer[in] = nextProduced;
in = (in +1 ) % BUFFER_SIZE;
counter++;
}
Sebaliknya,pada proses consumer akan menurunkan satu nilai variabel
counter sbb:
item nextConsumed;
while (1) {
while (counter == 0)
; /* do nothing */
nextConsumed = buffer[out];
out = (out +1 ) % BUFFER_SIZE;
counter--;
}
5. Pernyataan counter++ dan counter– harus dilakukan secara
Automatik,yaitu oprasi yang harus menyelesaikan seluruh pernyataan
tanpa interupsi. Pernyataan counter++ diimplementasikan dalam bahasa
mesin seperti berikut:
register1 = counter
register1 = registe1 + 1
counter = registe1
Sedangkan counter– diimplementasikan seperti berikut:
register1 = counter
register1 = registe1 + 1
counter = registe1
jika mengubah secara terpisah,maka pernyataan yang dijalankan
adalah:
prodecer: register1 = counter (register1 = 5)
prodecer: register1 = register1 + 1 (register1 = 6)
consumer: register2 = counter (register2 = 5)
consumer: register2 – 1 (registe2 = 4)
producer: counter = register1 (counter = 6)
consumer: counter = register2(counter = 4)
6. Nilai counter kemungkinan bernilai 4 atau 6,sedangkan yang benar
5,situasi ini dimaksud dengan data tidak konsisten. Situasi mengakses
data secara konkuren disebut race condition,dan untuk mencegahnya
proses konkuren harus dilaksanakan sinkronasi.
5.2 Permasalahan Critical-Section
Suatu sistem terdiri dari n proses dimana semua berkompetisi
menggunakan data yang sama,masing-masing proses mempunyai kode
yang disebut critical section dimana memungkinkan mengubah variabel
umum,sebuah tabel menulis file dan sebagainya.
permasalahan critical section digunakan untuk mendesain protokol
dimana proses dapat bekerja sama,dan harus meminta ijin untuk
memasuki critical section-nya. Daerah kode untuk
mengimplementasikan nya di sebut dengan entry dan critical section
biasanya diikuti daerah exit,sedangkan kode pengingat terletak pada
daerah remainder.
Solusi untuk permasalahan critical section harus memenuhi 3 syarat:
7. 1. Mutual Exclusion : apanila proses Pi menjalankan critical section-nya,maka
tidak ada proses lain yang dapat menjalankan nya.
2. Progress : apabila tidak ada proses yang menjalankan critical section-nya dan
terdapat beberapa proses yang akan memasuki critical section-nya,maka
hanya peroses itu yang tidak diprosess dalam daerah pengingat.
3. BoundedWaiting : terdapat batasan jumlah waktu yang diijinkan oleh proses
lain untuk memasuki critical section setelah sebuah proses membuat
permintaan untuk memasuki critical section-nya dan sebelum permintaan
dikabulkan.
Ketika mengimplementasikan suatu algoritma,kita tentukan dahulu
variabel yang digunakan untuk sinkronasi dan menggambarkan hanya proses
P,entry section dan exit section menunnjukan segmen kode yang penting.
do {
critical section
remainder section
} while (1)
gbr 5.1
entry section
exit section
8. 5.2.1 Pemecahan Dua Proses
Pada algoritma terdapat dua proses pada satu waktu yang diberi nama P0
dan P1,agar jelas ketika menyatakan Pi kita gunakan Pj dmana j=1 – i.
5.2.1.1 Algoritma 1
Pertama,semua proses menggunakan variabel integer turn diinisialisasi ke
0 (atau 1)
int turn;
Apabila turn = i,maka proses Pi diijinkan menjalankan critical section
structur dari proses Pi:
do {
while (turn != 1) ;
critical section
turn = j;
reminder section
} while (1) ;
9. Apabila turn=0 dan Pi siap untuk memasuki critical,P1 tidak dapat
melakukannya meskipun P0 mungkin didalam remainder sectionnya.
kelemahan nya adalah tidak ada informasi yang cukup tentang state dari
masing masing proses,maka variabel turn diganti dengan array.
5.2.1.2 Algoritma 2
Boolean flag[2] ;
Awwal flag [0] = flag [1] = false,jika flag[i] bernilai true,Pi siap memasuki
critical section,strukturnya adalah:
do {
flag[i] := true;
while (flag[j]) ;
critical section
flag [i] = false;
reminder section
} while (1);
Pemecahan ini memenuhi mutual exclusion tetapi belum memenuhi progres.
10. 5.2.1.3 Algoritma 3
Menggunakan dua variabel:
Int turn;
Boolean flag[2];
Flag [0] = flag[1] = false dan nilai turn bernilai 0 atau 1,proses Pi:
do {
flag [i]:= true;
turn = j;
while (flag [j] and turn = j) ;
critical section
flag [i] = false;
remainder section
} while (1);
Algoritma ini memenuhi ketiga syarat critical section dan memecahkan
masalah untuk dua proses.
11. 5.2.2 Algoritma Bakery
Digunakan pemecahan permasalahan critical section pada n proses.
Proses yang mempunyai nomor terkecil yang mampu memasuki critical
sectionpada proses Pi dan Pj,jika i<j maka Pi dilayani lebih
dahulu,skema pemberian nomor menaikan nomor urut misal
1,2,3,3,3,3,3,4,5...dst. Pada algoritma bakery terdapat notasi <= untuk
urutan nomor (ticked #,process id #)sbb:
(a,b) < (c,d)if a <c or if a = c and b < d
Mac (a0,..., an-1)is a number,k such that k> ai for i – 0,...,n-1
Variabel umum yang digunakan:
boolean choosing[n];
int number[n];
Struktur data diatas diinisialisasi false dan 0,dari proses Pi:
Do {
choosing[i] = true;
number[i] = max (number[0], number[1] , ..., number [n – 1]) +1;
choosing [i] = false;
for (j = 0; j < n; j++ {
12. while (choosing [j] ) ;
while ((number [j] != 0) && (number [j],j < number [i],i)) ;
}
critical section
number [i] = 0;
remainder section
} while (1);
5.3 Perangkat Keras Sinkronasi
pada sistem multiprosesor,prosesor pemroses bertindak independe.
Interupsi disatu pemroses tidak mempengaruhi pemrosesan yang lain.
Pemrosesan yang memakai memori bersama maka pengaksesan
terhadap suatu memori dijaga pada tingkat perangkat keras agar tidak
boleh pemrosesan lain tidak dapat mengakses suatu lokasi yang sama
disaat yang sama. Perancang perangkat keras menyediakan berbagai
macam interuksi mesin diantaranya:
13. tsl (test and set lock)
tas atau ts (test and set), digunakan ibm s/360, keluarga motorola m68000,
dan lain-lain.
cs (compare and set), digunakan ibm 370 series
exchange (xchg), digunakan intel x68, dsb.
5.3.1 Metode Test and Set
Melakukan testing dan modifikasi isi memori secara atonomik.
5.3.2 Metode Swap
Menggunakan prosedur swap untuk menukar dua variable secara atomic.
5.4 Semaphore
Adalah pendekatan yang dikemukakan Dijkstria. Semaphore adalah alat
untuk sinkronasi yang tidak membutuhkan busy waiting, dan hanya dapat
diaksess melalui operasi atomic yang tak dapat diinterupsi sampai kode
selesai.
14. Terdapat dua bentuk semaphre,yaitu counting semaphore dan
binary semaphore. Counting semaphore menggunakan nilai
integer yang mempunyai jangkauan tak terbatas,sedangkat
Binary semaphre menggunakan nilai integer dengan jangkauan
0 dan 1 sehingga implementasinya lebih sederhana.
5.5 Masalah Klasik Informasi
5.5.1 Bounded-Buffer
Produsen menghasilkan barang dan konsumen akan
menggunakannya. Ada beberapa batasan yang harus
dipenuhi,yaitu:
Barang yang dihasilkan oleh prdusen terbatas
Barang yang dipakai konsumen terbatas
Konsumen hanya boleh menggunakan barang yang dimaksud
setelah prdusen menghasilkan barang dalam jumlah tertentu
Produsen hanya boleh memproduksi barang jika konsumen
sudah kehabisan barang.
15. 5.2.2 Reader and Writer Problem
Terdapat dua variasi masalah yaitu:
Seorang reader tidak perlu menunggu reader lain untuk selesai hanya
karena ada writer menunggu(prioritas reader lebih tinggi)
Jika ada writer yang sedang menunggu, maka tidak boleh ada reader
lain yang bekerja(prioritas writer lebih tinggi).
5.3.3 Dining-Philosophers Problem
adalah dimana terdapat 5 filosof yang akan makan. Disana disediakan 5
sumpit,jika filosof lapar ia akan mengambil 2 sumpit yaitu ditangan
kanan dan kiri. Adakalanya hanya diambil satusumpit saja. Jika ada
filosof yang mengambil 2 sumpit,maka ada filsf yang harus menunggu
sampai sumpit diletakkan.