tugas sistem terdistribusi race condition

Upload: roymartinsitepu

Post on 08-Feb-2018

225 views

Category:

Documents


0 download

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.