1
1. Apakah yang di maksud dengan race condition?
Jawab:
Race Condition adalah suatu kondisi dimana beberapa proses
mengakses dan memanipulasi suatu data secara konkuren. Nilai akhir dari data
tersebut tergantung dari proses mana yang terakhir selesai dieksekusi.
2. Apakah yang dimaksud dengan critical section ? Untuk menyelesaikan masalah critical section , ada tiga hal yang harus dipenuhi, sebutkan dan jelaskan !
2. Apakah yang dimaksud dengan critical section ? Untuk menyelesaikan masalah critical section , ada tiga hal yang harus dipenuhi, sebutkan dan jelaskan !
Critical Section adalah bagian dari code proses yang berisi
code-code untuk memanipulasi suatu data.
Solusi yang baik harus memenuhi 3 syarat berikut:
-Mutual Exclution :Tidak ada proses yang menjalankan critical section bersamaan.
-Terjadi Kemajuan ( Progress ). Proses yang sedang menjalankan Remainder Sectionnya, tidak boleh menjalankan Critival Section berikutnya sebelum proses lain menyelesaikan Critical Sectionnya.
-Ada Batas Waktu ( Bounded Waiting ). Ada batas waktu suatu proses dapat menjalankan critical sectionnya
-Mutual Exclution :Tidak ada proses yang menjalankan critical section bersamaan.
-Terjadi Kemajuan ( Progress ). Proses yang sedang menjalankan Remainder Sectionnya, tidak boleh menjalankan Critival Section berikutnya sebelum proses lain menyelesaikan Critical Sectionnya.
-Ada Batas Waktu ( Bounded Waiting ). Ada batas waktu suatu proses dapat menjalankan critical sectionnya
3. Bagaimana algoritma Bakery untuk sinkronisasi banyak proses (n proses) ?
Jawab:
Algoritma
Bakery adalah algoritma yang digunakan untuk pemecahan permasalahan critical
section pada n proses. Sebelum memasuki critical section, proses menerima nomo.
Proses
yang mempunyai nomor terkecil dapat memasuki critical section. Jika proses Pi dan
Pj menerima nomor yang sama, jika i < j maka Pi dilayani lebih dahulu,
sebaliknya Pj akan dilayani lebih dahulu.
Skema
pemberian nomor selalu membangkitkan nomor dengan menaikkan nilai urut misalnya
1, 2, 3, 3, 3, 3, 4, 5, …..Pada algoritma bakery terdapat notasi <≡ untuk
urutan nomor (ticket #, process id #)
sebagai berikut :
(a,b) < (c,d) if a < c or if a = c and b < d
max (a0,…, an-1) is a number, k, such that k ≥ ai for i - 0,
…, n – 1
Variabel umum yang digunakan adalah :
boolean choosing[n];
int number[n];
Struktur data diatas diinisialisasi false dan 0. Struktur dari proses Pi adalah :
do {
choosing[i] = true;
number[i] = max(number[0], number[1], …, number [n – 1])+1;
choosing[i] = false;
for (j = 0; j < n; j++) {
while (choosing[j]) ;
while ((number[j] != 0) && (number[j],j < number[i],i)) ;
}
critical section
number[i] = 0;
remainder section
} while (1);
4. Apa yang dimaksud semaphore dan sebutkan operasi pada semaphore
sebagai berikut :
(a,b) < (c,d) if a < c or if a = c and b < d
max (a0,…, an-1) is a number, k, such that k ≥ ai for i - 0,
…, n – 1
Variabel umum yang digunakan adalah :
boolean choosing[n];
int number[n];
Struktur data diatas diinisialisasi false dan 0. Struktur dari proses Pi adalah :
do {
choosing[i] = true;
number[i] = max(number[0], number[1], …, number [n – 1])+1;
choosing[i] = false;
for (j = 0; j < n; j++) {
while (choosing[j]) ;
while ((number[j] != 0) && (number[j],j < number[i],i)) ;
}
critical section
number[i] = 0;
remainder section
} while (1);
4. Apa yang dimaksud semaphore dan sebutkan operasi pada semaphore
jawab
dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda tertentu. Variabel khusus untuk penandaan ini disebut semaphore.
dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda tertentu. Variabel khusus untuk penandaan ini disebut semaphore.
Semaphore
mempunyai dua property :
a. Semaphore dapat diinisialisasi dengan nilai bukan negative.
b. Ada dua operasi terhadap semaphore yaitu Operasi Up dan Operasi Down.
Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses selesai.
Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya. Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan satu proses ke senarai ready tidak dapat diinterupsi.
//operasi sederhana yaitu block untuk menghentikan
sementara proses yang menggunakan semaphore dan wakeup(P) untuk melanjutkan eksekusi proses P yang di-blok.
5. Bagaimana struktur semaphore yang digunakan untuk menyelesaikan
permasalahan :
a. bounded buffer problem.
b. reader and writer problem.
c. dining philosopher problem.
a. Semaphore dapat diinisialisasi dengan nilai bukan negative.
b. Ada dua operasi terhadap semaphore yaitu Operasi Up dan Operasi Down.
Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses selesai.
Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya. Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan satu proses ke senarai ready tidak dapat diinterupsi.
//operasi sederhana yaitu block untuk menghentikan
sementara proses yang menggunakan semaphore dan wakeup(P) untuk melanjutkan eksekusi proses P yang di-blok.
5. Bagaimana struktur semaphore yang digunakan untuk menyelesaikan
permasalahan :
a. bounded buffer problem.
b. reader and writer problem.
c. dining philosopher problem.
jawab
Untuk penyelesaian permasalahan bounded buffer menggunakan semaphore
menggunakan variabel umum berikut :
semaphore full, empty, mutex;
Inisialisasi untuk variable diatas, full = 0, empty = n, mutex = 1. Struktur
program untuk produsen adalah
do {
…
menghasilkan item pada nextp
…
wait(empty);
wait(mutex);
…
menambah nextp ke buffer
…
signal(mutex);
signal(full);
} while (1);
Sedangkan struktur program untuk konsumen adalah
do {
wait(full)
wait(mutex);
…
mengambil item dari buffer ke nextc
…
signal(mutex);
signal(empty);
…
menggunakan item pada nextc
…
} while (1);
B. Reader and writer pr0blem
Variabel umum yang digunakan
adalah
semaphore mutex, wrt;
Inisialisasi variable diatas adalah mutex = 1, wrt = 1, readcount = 0.
Struktur proses writer adalah
wait(wrt);
…
menulis
…
signal(wrt);
Sedangkan struktur proses reader adalah
wait(mutex);
readcount++;
if (readcount == 1)
wait(rt);
signal(mutex);
…
membaca
…
wait(mutex);
readcount--;
if (readcount == 0)
signal(wrt);
signal(mutex):
c. Dining phil0s0pher pr0blem
Struktur data yang digunakan untuk penyelesaian permasalahan ini dengan semaphore
adalah
semaphore chopstick[5];
Dimana semua nilai array dinisialisasi 1. Struktur program untuk filosof ke i adalah
do {
wait(chopstick[i])
wait(chopstick[(i+1) % 5])
…
makan
…
signal(chopstick[i]);
signal(chopstick[(i+1) % 5]);
…
berfikir
…
} while (1);
Untuk penyelesaian permasalahan bounded buffer menggunakan semaphore
menggunakan variabel umum berikut :
semaphore full, empty, mutex;
Inisialisasi untuk variable diatas, full = 0, empty = n, mutex = 1. Struktur
program untuk produsen adalah
do {
…
menghasilkan item pada nextp
…
wait(empty);
wait(mutex);
…
menambah nextp ke buffer
…
signal(mutex);
signal(full);
} while (1);
Sedangkan struktur program untuk konsumen adalah
do {
wait(full)
wait(mutex);
…
mengambil item dari buffer ke nextc
…
signal(mutex);
signal(empty);
…
menggunakan item pada nextc
…
} while (1);
B. Reader and writer pr0blem
Variabel umum yang digunakan
adalah
semaphore mutex, wrt;
Inisialisasi variable diatas adalah mutex = 1, wrt = 1, readcount = 0.
Struktur proses writer adalah
wait(wrt);
…
menulis
…
signal(wrt);
Sedangkan struktur proses reader adalah
wait(mutex);
readcount++;
if (readcount == 1)
wait(rt);
signal(mutex);
…
membaca
…
wait(mutex);
readcount--;
if (readcount == 0)
signal(wrt);
signal(mutex):
c. Dining phil0s0pher pr0blem
Struktur data yang digunakan untuk penyelesaian permasalahan ini dengan semaphore
adalah
semaphore chopstick[5];
Dimana semua nilai array dinisialisasi 1. Struktur program untuk filosof ke i adalah
do {
wait(chopstick[i])
wait(chopstick[(i+1) % 5])
…
makan
…
signal(chopstick[i]);
signal(chopstick[(i+1) % 5]);
…
berfikir
…
} while (1);
6.
sebutkan manfaat dari adanya sinkronisasi proses
Jawab
Sinkronisasi diperlukan untuk menghindari terjadinya
ketidakkonsistenan data akibat adanya akses data secara konkuren. Diperlukan
adanya suatu mekanisme untuk memastikan urutan / giliran pengaksesan suatu data
yang saling bekerjasama sehingga terjadi sinkronisasi
7.
sebutkan perbedaan antara bussywaiting dengan bloking
Jawab
Busy waiting adalah adanya proses yang sibuk
menunggu dan tidak mengerjakan apapun sampai mendapatkan ijin untuk masuk ke
critical section.
Sibuk menunggu disini berarti bahwa proses tersebut
sedang menunggu dan terus menerus sibuk memeriksa status ijinnya sehingga
memakan waktu prosesor.
Busy waiting lebih baik digunakan ketika:
·
Sumber daya prosessor tidak diperlukan
untuk tugas lainnya.
·
Blocking berbasis data tidak diperlukan
No comments:
Post a Comment