SINKRONISASI & DEADLOCK LATAR BELAKANG • Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten. • Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan • pemintaan ekseskusi dari proses yang bekerja. • Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. • Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir. • Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan. • proses dapat bekerja sendiri (independent process) dan juga dapat bekerja bersama proses-proses yang lain (cooperating process). Ketika proses saling bekerjasama (cooperating process) maka prosestersebut akan saling berbagi data. Pada saat proses berbagi data, ada kemungkinan bahwa data yang dibagi menjadi tidak konsisten dikarenakan adanya kemungkinan proses tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut berubah, hal ini dikenal dengan istilah Race Condition. CRITICAL SECTION • Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama di akses. • Critical Section terdiri dari entry section, exit section dan remainder section. • Dalam critical section solusi yang diberikan harus memuaskan permintaaan berikut: - mutual exclution - deadlock free - starvation free RACE CONDITION • race condition sebagai masalah yang dapat terjadi pada beberapa proses yang memanipulasi suatu data secara konkruen, sehingga data tersebut tidak sinkron lagi. Nilai akhirnya akan tergantung pada proses mana yang terakhir dieksekusi. Cara menghindari race condition ini adalah menemukan jalan untuk mencegah lebih dari satu proses melakukan proses tulis atau baca kepada data atau berkas pada saat yang bersamaan. Dengan kata lain, kita membutuhkan 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. • Proses memiliki suatu segmen kode dimana jika segmen itu dieksekusi, maka proses-proses itu dapat saling mengubah variabel, mengupdate suatu tabel, menulis ke suatu file, dan lain sebagainya, dan hal ini dapat membawa proses tersebut ke dalam bahaya race condition. Segmen kode yang seperti inilah yang disebut Critical Section. • Solusi dari masalah critical section harus memenuhi tiga syarat berikut [Silbeschatz 2004]: • • • • Mutual Exclusion. Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses lain tidak dapat menjalankan critical section mereka. Dengan kata lain, tidak ada dua proses yang berada di critical section pada saat yang bersamaan. • • • • Terjadi kemajuan (progress). Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada proses-proses lain yang ingin masuk ke critical section, maka hanya proses-proses yang yang sedang berada dalam entry section saja yang dapat berkompetisi untuk mengerjakan critical section. • • • • • • Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yang sedang menjalankan critical section, maka proses lain memiliki waktu tunggu yang ada batasnya untuk menjalankan critical section-nya, sehingga dapat dipastikan bahwa proses tersebut dapat mengakses critical section-nya (tidak mengalami starvation: proses seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan). • Solusi untuk memecahkan masalah critical section adalah dengan mendesain sebuah protokol di mana proses-proses dapat menggunakannya secara bersamasama. 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. • Ada dua jenis solusi masalah critical section, yaitu: • Solusi perangkat lunak. • Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol. • Solusi perangkat keras. • Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi atau dengan mengunci suatu variabel tertentu • • Rangkuman Critical Region merupakan bagian kode yang selalu dilaksanakan dalam kondisi mutual eksklusif. Perbedaannya adalah bahwa yang mengkondisikan mutual eksklusif adalah kompiler dan bukan programer sehingga mengurangi resiko kesalahan programer. Monitor merupakan kumpulan dari prosedur, variabel, dan struktur data dalam satu modul. Dengan mempergunakan monitor, sebuah proses dapat memanggil prosedur di dalam monitor, tetapi tidak dapat mengakses struktur data (termasuk variabel- variabel) internal dalam monitor. Dengan karakteristik demikian, monitor dapat mengatasi manipulasi yang tidak sah terhadap variabel yang diakses bersama-sama karena variabel lokal hanya dapat diakses oleh prosedur lokal. Deadlock • Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. • Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set yang sedang menunggu. Proses P1 Proses P2 ..... ..... ..... ..... Receive (P2); Receive (P1); ..... ..... ..... ..... Send (P2, M1); Send (P1, M2); • Deadlock selalu tidak lepas dari sumber daya, seperti kita lihat dari contoh-contoh diatas, bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai. • • • empat kondisi yang dapat mengakibatkan terjadinya Deadlock, yaitu: Mutual Eksklusif: 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. Memegang dan menunggu: proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama • Tidak ada Preemption: sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan • Circular Wait: kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya • Banyak cara untuk menanggulangi Deadlock: • Mengabaikan masalah Deadlock. • • Mendeteksi dan memperbaiki Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protokol untuk memastikan sistem tidak pernah memasuki keadaan Deadlock. Yaitu dengan Deadlock avoidance sistem untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya. • Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya Deadlock dengan Deadlock prevention sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapat menunggu. • • • • • • • • • • • • Rangkuman Deadlock ialah suatu kondisi permanen dimana proses tidak berjalan lagi atau pun tidak berkomunikasi lagi antar proses. Perebutan sumber daya itu dapat dibagi dua yaitu sumber daya yang dapat dipakai berulang-ulang dan sumber daya yang sekali dibuat dan langsung dipakai. Sebenarnya deadlock dapat disebabkan oleh empat hal yaitu: 1. Proses Mutual Exclusion 2. Proses memegang dan menunggu 3. Proses Preemption 4. Proses Menunggu dengan siklus deadlock tertentu Penanganan deadlock Banyak cara untuk menanggulangi deadlock: 1. mengabaikan masalah deadlock. 2. mendeteksi dan memperbaiki 3. penghindaran yang terus menerus dan pengalokasian yang baik. 4. pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya deadlock