Koordinasi Antar Proses DI DALAM SISTEM TERDISTRIBUSI Oleh : Rahmat Robi Waliyansyah, M.Kom.
EVENT ORDERING (Pengurutan Event) Pengurutan event sangat diperlukan, untuk alokasi resources. Pada DS tidak ada memori dan clock milik bersama, pengurutan event bersifat relatif terhadap waktu (relasi happened before). EVENT ORDERING (Pengurutan Event)
Relasi Happened Before Aturan : Jika A dan B adalah event pada proses yang sama, dan A dieksekusi sebelum B, maka A ke B. Jika A adalah event pengiriman pesan oleh satu proses dan B adalah event penerimaan pesan oleh proses lain, maka A ke B. Jika A ke B dan B ke C, maka A ke C. Jika A ke B, mungkin A dan B saling mempengaruhi. Jika event A dan B tidak terkait dengan relasi, maka ke A dan B konkuren (saling tidak mempengaruhi).
Implementasi Idealnya, diperlukan satu clock milik bersama atau kumpulan clock yang disinkronisasikan. Global ordering menggunakan timestamp : – untuk tiap pasang A dan B, jika A ke B maka timestamp A < timestamp B Clock Lojik, dapat diimplementasikan sebagai counter yang diinkremen setiap eksekusi event berurutan pada satu proses. – Tiap proses Pi memiliki clock lojik Lci – Pada proses Pi , jika A terjadi sebelum B maka LCi (A) < LCi (B) – Antar proses, jika proses Pi menerima pesan (event B) dengan timestamp t, sedangkan LCi (B) < t, maka Pi harus memajukan clocknya sehingga LCi (B) = t + 1
Mutual Exclusion Mutual Exclusion adalah suatu cara yang menjamin jika ada sebuah proses yang menggunakan variabel atau berkas yang sama (digunakan juga oleh proses lain), maka proses lain akan dikeluarkan dari pekerjaan yang sama. Jadi, Mutual Exclusive terjadi ketika hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut.
Mutual Exclusion Pengertian lain Mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu, sedangkan proses lain dilarang mengerjakan hal yang sama.
Contoh : Sumber daya printer hanya bisa diakses 1 proses, tidak bisa bersamaan. Sumber daya ini disebut sumber daya kritis dan bagian program yang menggunakan sumber daya kritis disebut critical region / section.
Hanya satu program pada satu saat yang diijinkan masuk ke critical region. System Operasi menyediakan layanan (system call) yang bertujuan untuk mencegah proses lain masuk ke critical section yang sedang digunakan proses tertentu. Mutual Exclusion
Mutual Exclusion Pentingnya mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu. Pemaksaan atau pelanggaran mutual exclusion menimbulkan : Starvation Deadlock (buntu) Sinkronisasi
Dead Lock Suatu kondisi dimana 2 proses/lebih tidak dapat meneruskan eksekusinya. Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebuntukan sumber daya yang ada. Jadi deadlock berhubungan erat dengan tersedianya sumber daya dari komputer
STARTVATION Starvation itu adalah situasi dimana 1 proses menunggu terlalu lama buat memakai 1 resource/eksekusi tertentu. Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan).
Sinkronisasi Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock dan starvation. Penyelesaian terhadap masalah ini sangat penting karena perkembangan teknologi sistem komputer menuju ke sistem multiprocessing, terdistribusi dan paralel yang mengharuskan adanya proses-proses kongkuren.
Proses-Proses (Masuk) Ke Daerah Critical Section Tidak Boleh Saling Memblok Jika proses-proses saling memblok ketika akan masuk ke critical section maka akan terjadi pula deadlock. Ini salah satu penyebab lain deadlock. Karena jika proses-proses saling memblok maka selamanya proses-proses tersebut tidak akan masuk ke critical section. Oleh karena itu akan terjadi deadlock atau buntu dan proses-proses yang telah berjalan tidak akan selesai dengan sempurna.
Ketika Tidak Ada Proses Di Critical Section Maka Proses Yang Ingin Masuk Ke Critical Section Harus Diijinkan Tanpa Waktu Tunda Fungsi seperti itu mutlak harus ada dalam system operasi. Hal ini berfungsi untuk mencegah adanya deadlock. Ketika critical section kosong maka proses selanjutnya harus masuk dan menyelesaikan prosesnya sampai selesai. Jika tidak berarti tidak ada kejelasan waktu tunggu atau tidak ada kejelasanan waktu proses dan hal ini akan menyebabkan deadlock.
Metode-metode dan Algoritma untuk Menjamin Mutual Exclusion DISABLING INTERRUPT / MEMATIKAN INTERUPSI Dengan cara mematikan interupsi yang masuk pada saat proses sedang berada pada critical section-nya. Cara ini kadang cukup berguna untuk kernel tetapi tidak untuk user. Dan cara inipun tidak terlalu baik untuk CPU yang jumlahnya lebih dari satu, dimana disable interrupt hanya mengenai CPU yang sedang menjalankan proses itu dan tidak berpengaruh terhadap CPU lain
Metode-metode dan Algoritma untuk Menjamin Mutual Exclusion LOCK VARIABLES Dengan metode ini, kita menggunakan suatu variable yang berperan sebagai kunci (lock). Variable ini diinisialisasi dengan nilai 0. Jika lock = 0, maka proses boleh memasuki critical section, lalu nilai lock diubah menjadi 1. Setelah proses keluar, maka lock akan kembali diberi nilai 0. Jika ada proses yang ingin masuk tapi nilai lock = 1, maka proses itu harus menunggu samapi lock = 0. Permasalahan yang bisa timbul dari metode ini adalah race condition, dimana 2 proses mencapai critical section pada waktu yang hampir bersamaan.
KONTROL KONKURENSI Ketika multiple user mengakses multiple objek basis data yang berada pada multiple site di sistem basis data terdistribusi, maka permasalahan kontrol konkurensi akan terjadi. Konflik terjadi apabila sekumpulan read dari satu transaksi berpotongan dengan sekumpulan read dari transaksi lainnya, dan/atau sekumpulan write dari satu transaksi berpotongan dengan sekumpulan write dari transaksi lainnya. Transaksi T1 dan T2 dikatakan konflik jika kedua-duanya dieksekusi pada waktu yang bersamaan. Bila T1 telah selesai sebelum T2 dikirim ke sistem, dalam kasus ini sekumpulan read dan write saling memotong, tidak dianggap konflik. Konflik diperhatikan pada sekumpulan write yang saling memotong di antara dua transaksi.
Ada tiga pendekatan secara umum untuk mendesain algoritma kontrol konkurensi : Wait Timestamp Rollback
WAIT Wait. Jika dua transaksi konflik, transaksi yang konflik harus menunggu sampai transaksi lainnya selesai.
TIMESTAMP Urutan eksekusi transaksi berdasarkan timestamp. Setiap transaksi memiliki timestamp yang unik dan dua transaksi yang konflik diselesaikan berdasarkan urutan timestamp. Timestamp dapat diletakkan di awal, tengah, atau akhir eksekusi.
Rollback Dua transaksi yang konflik, salah satu transaksinya diulang kembali pengerjaannya. Disebut juga optimistic, karena bila terjadi konflik maka beberapa transaksi akan di-rollback.
Komunikasi Antar Proses Problem dalam interaksi antar proses : Race condition: 2 proses menggunakan resource yang sama, hasil akhirnya tergantung pada eksekusi dilakukan. Deadlock: 2 proses saling menunggu akibat masing-masing memerlukan resource yang dikuasai oleh proses satunya.
Deadlock Handling Empat kondisi pemicu deadlock : Kondisi mutual exclusion. Sebuah resource sedang digunakan oleh 1 proses, atau sedang bebas. Kondisi hold and wait. Proses-proses yang sedang memakai resources diijinkan meminta resources baru. Kondisi non-preemptive. Resource yang sedang digunakan hanya bisa dilepaskan oleh proses yang memakainya (pelepas-an tidak bisa dipaksa oleh pihak lain). Kondisi circular wait. Ada rantai dari 2 atau lebih proses, masing-masing menunggu resource yang dikuasai proses berikutnya dalam rantai tersebut.
Deadlock Handling Pemodelan penggunaan resource Menggunakan graf alokasi resource A menguasai resource R A R A meminta resource R A R Dapat digunakan untuk analisis deadlock Strategi dalam menghadapi deadlock Abaikan saja algoritma “onta” (prinsip pragmatisme) Pendeteksian dan pemulihan Pencegahan, dengan cara menegasikan kondisi-kondisi pemicu Menghindari, dengan cara alokasi resource secara hati-hati Algoritma onta (Ostrich algorithm) Pragmatisme, perbandingan antara usaha untuk menghilangkan deadlock dengan akibat yang ditimbulkannya Monitoring request dan release dari resources, menganalisis graf alokasi resources untuk mendeteksi deadlock Rantai deadlock diputus dengan mengorbankan 1 atau lebih proses
Deadlock Handling Pencegahan deadlock : Kondisi mutual exclusion ? Resource bisa digunakan oleh lebih dari satu proses Kondisi hold and wait ? Proses yang sedang menguasai sebuah resource tidak diijinkan untuk meminta resource yang lain Kebutuhan resource sering bersifat dinamis Menyebabkan alokasi resource tidak efisien
Deadlock Handling Pencegahan deadlock : Kondisi non-preemptive ? Memungkinkan resource dilepas secara paksa Dapat mengacaukan operasi (e.g., printing) Kondisi rantai tunggu (circular wait) ? Alternatif yang paling mungkin ditempuh Dengan penomoran resource, akses diijinkan dengan mengikuti urutan tertentu
Deadlock Handling Menghindari deadlock : Alokasi resource secara hati-hati Algoritma banker Alokasi resource selalu memperhatikan kemungkinan ke depan (next state). Kebutuhan ke depan satu atau lebih proses harus selalu dapat dipenuhi oleh resource yang tersedia saat ini.