tugas sistem terdistribusi race condition
TRANSCRIPT
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
1/7
Tugas Sistem Terdistribusi
NAMA : Roy Martin Sitepu
NPM : 141 09 833
KELAS : 4 KA29
JURUSAN/JENJANG : Sistem Informasi /S1
UNIVERSITAS GUNADARMA 2013
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
2/7
Race Condition
Race condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared
memory/sumber daya pada saat yang bersamaan dan hasil akhir dari data tersebut tergantung dari
proses mana yang terakhir selesai dieksekusi sehingga hasil akhirnya terkadang tidak sesuai dengan
yang dikehendaki.
Contoh Race Condition
1. int counter = 0;
2. //Proses yang dilakukan oleh produsen
3. item nextProduced;
4. while (1) {
5. while (counter == BUFFER_SIZE) { ... do nothing ... }
6. buffer[in] = nextProduced;
7. in = (in + 1) % BUFFER_SIZE;8. counter++;
9. }
10. //Proses yang dilakukan oleh konsumen
11. item nextConsumed;
12. while (1) {
13. while (counter == 0) { ... do nothing ... }
14. nextConsumed = buffer[out] ;
15. out = (out + 1) % BUFFER_SIZE;
16. counter--;
17. }
Critical Section
Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersama-
sama yang dapat membawa proses itu ke bahaya race condition. Biasanya sebuah proses sibuk
melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju ke racecondition pada sebagian besar waktu. Akan tetapi, biasanya setiap proses memiliki segmen kode
dimana proses itu dapat mengubah variabel, meng- update suatu tabel, menulis ke suatu file, dan
lain-lainnya, yang dapat membawa proses itu ke bahaya race condition.
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
3/7
Prasyarat Solusi Critical Section
Solusi dari masalah critical section harus memenuhi tiga syarat berikut:
1. Mutual Exclusion . Mutual Exclusion merupakan sebuah jalan yang menjamin jika sebuahproses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain akan
dikeluarkan dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical section (dari
proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan critical section dari proses-proses tersebut. Dengan kata lain, tidak ada dua proses yang berada di critical section pada saat
yang bersamaan. Setiap proses harus meminta izin untuk memasuki critical section-nya. Bagian dari
kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut
exit section. Bagian kode selanjutnya disebut remainder section. Dari kode di atas, dapat kita lihat
bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section.
2. Terjadi kemajuan (progress). Jika tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka hanya
proses-proses yang tidak sedang menjalankan remainder section-nya yang dapat berpartisipasi
dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section, dan pemilihan siapa
yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak
terjadi deadlock).
3. Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yang sedangmenjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus
menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan
menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-
olah berhenti, menunggu request akses ke critical section diperbolehkan).
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
4/7
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
5/7
orang filosof mengambil garpu kirinya secara bersamaan. Tidak akan mungkin mereka
mengambil garpu kanan mereka, dan akan terjadi deadlock.
Kita dapat memodifikasi program sehingga setelah mengambil garpu kiri, program
memeriksa apakah garpu kanan meungkinkan untuk diambil. Jika garpu kanan tidak
mungkin diambil, filosof tersebut meletakkan kembali garpu kirinya, menunggu untuk
beberapa waktu, kemudia mengulangi proses yang sama. Usulan tersebut juga salah, walau
pun dengan alasan yang berbeda. Dengan sedikit nasib buruk, semua filosof dapat memulaialgoritma secara bersamaan, mengambil garpu kiri mereka, melihat garpu kanan mereka
yang tidak mungkin untuk diambil, meletakkan kembali garpu kiri mereka, menunggu,
mengambil garpu kiri mereka lagi secara bersamaan, dan begitu seterusnya. Situasi seperti
ini dimana semua program terus berjalan secara tidak terbatas tetapi tidak ada
perubahan/kemajuan yang dihasilkan disebut starvation.
Sekarang anda dapat berpikir "jika filosof dapat saja menunggu sebuah waktu acak
sebagai pengganti waktu yang sama setelah tidak dapat mengambil garpu kiri dan kanan,
kesempatan bahwa segala sesuatau akan berlanjut dalam kemandegan untuk beberapa jam
adalah sangat kecil." Pemikiran seperti itu adalah benar,tapi beberapa aplikasi mengirimkan
sebuah solusi yang selalu bekerja dan tidak ada kesalahan tidak seperti hsk nomor acak yang
selalu berubah.Sebelum mulai mengambil garpu, seorang filosof melakukan DOWN di mutex.
Setelah menggantikan garpu dia harus melakukan UP di mutex. Dari segi teori, solusi ini
cukup memadai. Dari segi praktek, solusi ini tetap memiliki masalah. Hanya ada satu filosof
yang dapat makan spageti dalam berbagai kesempatan. Dengan lima buah garpu, seharusnya
kita bisa menyaksikan dua orang filosof makan spageti pada saat bersamaan.
Solusi yang diberikan diatas benar dan juga mengizinkan jumlah maksimum
kegiatan paralel untuk sebuah jumlah filosf yang berubah-ubah ini menggunakan sebuah
array, state, untuk merekam status seorang filosof apakah sedang makan (eating), berpikir
(think), atau sedang lapar (hungry) karena sedang berusaha mengambil garpu. Seorang
filosof hanya dapat berstatus makan (eating) jika tidak ada tetangganya yang sedang makan
juga. Tetangga seorang filosof didefinisikan ole LEFT dan RIGHT.Dengan kata lain, jika i = 2, maka tetangga kirinya (LEFT) = 1 dan tetangga
kanannya (RIGHT) = 3. Program ini menggunakan sebuah array dari semaphore yang lapar
(hungry) dapat ditahan jika garpu kiri atau kanannya sedang dipakai tetangganya. Catatan
bahwa masing-masing proses menjalankan prosedur filosof sebagai kode utama, tetapi
prosedur yang lain seperti take-forks, dan test adalah prosedur biasa dan bukan proses-
proses yang terpisah
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
6/7
Bounded-buffer
bounded-buffer adalah sebuah tempat penampungan data, yang ukurannya terbatas.
Bounded-buffer digambarkan sebagai array yang melingkar.
Ilustrasi dari bounded-buffer
Penunjuk masuk menunjuk pada posisi kosong selanjutnya pada array. Data yang
baru dihasilkan akan dimasukkan ke dalam array yang ditunjuk oleh masuk. Sedangkan
penunjuk keluar menunjuk pada posisi penuh pertama pada array. Jika ada data yang akan
dikeluarkan dari buffer, maka data yang akan dikeluarkan itu merupakan isi dari array yang
ditunjuk oleh keluar.
-
7/22/2019 Tugas Sistem Terdistribusi Race Condition
7/7
Multicast
Multicast atau multicasting adalah sebuah teknik di mana sebuah data dikirimkan
melalui jaringan ke sekumpulan komputer yang tergabung ke dalam sebuah grup tertentu,
yang disebut sebagai multicast group. Multicasting merupakan sebuah cara pentransmisian
data secara connectionless (komunikasi dapat terjadi tanpa adanya negosiasi pembuatan
koneksi), dan klien dapat menerima transmisi multicast dengan mencari di mana lokasinya,
seperti halnya ketika kita membuka sebuah stasiun radio untuk mendengarkan siaran radio.
Multicast sebenarnya merupakan mekanisme komunikasi one-to-many, atau point-to-
multipoint, dan berbeda dengan cara transmisi unicast.
Sebuah multicast group memiliki sebuah alamat multicast, yaitu kelas D dalam
alamat IP versi 4 atau memang alamat multicast dalam alamat IP versi 6 . Pada kelas D
alamat IP versi 4, alamat yang direservasikan untuk sebuah multicast group adalah 224.0.0.0
hingga 239.255.255.255.