SINKRONISASI DAN DEADLOCK
Proses-proses konkuren SIKRONISASI Proses-proses konkuren Proses berinteraksi Sinkronisasi
akses secara konkuren pada data bersamaan Data tidak konsisten (inconsistence). mekanisme untuk menjamin eksekusi yang berurutan pada proses yang bekerja sama race condition = akses dan manipulasi data yang digunakan bersama secara konkuren Untuk mencegah rece condition diperlukan Sikronisasi
Critical Condition Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data.
Kita butuh 4 kondisi agar menghasilkan solusi yang baik: Tidak ada dua proses secara bersamaan masuk ke dalam citical section. Tidak ada asumsi mengenai kecepatan atau jumlah cpu. Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain. Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Entry Section kode yang digunakan untuk masuk ke dalam critical section Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu Exit Section: akhir dari critical section, mengizinkan proses lain Remainder Section: kode istirahat setelah masuk ke critical section
Critical Condition Solusi Piranti lunak (Software solution) Solusi yang diberikan harus memuaskan permintaaan berikut: Mutual exclution Deadlock free Starvation free Pendekatan yang mungkin untuk solusi proses sinkronisasi Solusi Piranti lunak (Software solution) Tanpa Sinkronisasi. Dengan Sinkronisasi. Low-level primitives: semaphore High-level primitives: monitors Solusi Piranti Keras (Hardware solution)
Critical Condition Mutual Exclusion Tiga kondisi untuk menentukan mutual Exclusion Tidak ada dua proses yang pada saat bersamaan berada di critical region. Tidak ada proses yang berjalan diluar critical region yang bisa menghambat proses lain Tidak ada proses yang tidak bisa masuk ke critical region
Critical Condition Solusi Cara-cara memecahkan masalah Hanya dua proses, Po dan P1 Struktur umum dari proses adalah Pi (proses lain Pj)
Semaphore Semaphore adalah pendekatan yang dikemukakan Dijkstra. Prinsip semaphore adalah: Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses dipaksa berhenti sampai proses memperoleh penanda tertentu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan strukstur penanda yang sesuai kebutuhannya. Variabel khusus untuk penandaan ini disebut semaphore.
Pada semaphore terdapat dua operasi sederhana yaitu block untuk menghentikan sementara proses yang menggunakan semaphoredan wake up (P) untuk melanjutkan eksekusi proses P yang di-blok, Apabila suatu proses tidak pernah dihapus dari antrian semaphore setelah suatu semaphore dihentikan sementara, maka terjadi bloking yang tak terbatas. Keadaan ini disebut starvation.
Keadaan starvation digambarkan sebagai berikut Keadaan starvation digambarkan sebagai berikut. Misalnya terdapat tiga proses P1, P2 dan P3 yang memerlukan pengaksesan sumber daya R secara periodik. Skenario yang bisa terjadi : P1sedang diberi sumber daya R, P2dan P3blocked menunggu sumber daya R. Ketika P1 keluar dari critical section, P2dan P3diijinkan mengakses R. Asumsi P3diberi hak akses. Kemudian setelah selesai, hak akses kembali diberikan ke P1yang saat itu kembali membutuhkan sumber daya R. Jika pemberian hak akses bergantian terus-menerus antara P1dan P3, maka P2tidak pernah memperoleh pengaksesan sumber daya R, meski tidak ada deadlock. Pada situasi ini, P2 mengalami yang disebut Starvation.
Permasalahan Klasik pada Sinkronisasi . Problem Readers-Writers Problem Dining Philosopers
DEADLOCK
DEADLOCK deadlock terjadi karena sekumpulan proses-proses yang di-blokdimana setiap proses membawa sebuah sumber daya dan menunggu mendapatkan sumber daya yang dibawa oleh proses lain. Misalnya sistem mempunyai 2 tape drive dan terdapat dua proses P1 dan P2 yang masing masing membawa satu tape drive dan masing-masing memerlukan tapedrive yang dibawa proses lain sehingga terjadi keadaan saling menunggu resource dansistem di-blok.
ILUSTRASI DEADLOCK
Model Sistem Pada sistem terdapat beberapa sumber daya (resource) yang digunakan untuk proses-proses untuk menyelesaikan task. Sumber daya yang pada sistem terdiri dari tipe resource CPU cycle, ruang memori, perangkat I/O yang disebut dengan tipe sumber daya R1, R2, . . ., Rm. Setiap tipe sumber daya Ri mempunyai beberapa anggota Wi.
Setiap proses yang menggunakan sumber daya menjalankan urutan operasi sebagai berikut : meminta (request) : meminta sumber daya memakai (use) : memakai sumber daya melepaskan (release) : melepaskan sumber daya
Karakteristik Deadlock Deadlock terjadi bila terdapat empat kondisi berikut ini secara simultan. Mutual Exclusion : hanya satu proses pada satu waktu yang dapat menggunakansumber daya. Genggam dan Tunggu (Hold and Wait) : suatu proses membawa sedikitnya satusumber daya menunggu mendapatkan tambahan sumber daya baru yang dibawaoleh proses. Non-Preemption : sebuah sumber daya dapat dibebaskan dengan sukarela olehproses yang memegangnya setelah proses menyelesaikan task. Menunggu Secara Sirkuler (Circular Wait) :
Metode untuk Menangani Deadlock Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki statusdeadlock Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya. Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX
Mencegah Deadlock Metode ini berkaitan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Metode ini sering menghasilkan utilisasi sumber daya yang buruk. Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat perlu sebagai berikut :
Mencegah Mutual Exclusion Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak adasumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawasumber daya yang tidak dapat digunakan bersama-sama. Mencegah Hold and Wait Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses memintasumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukansebelum proses memulai eksekusi atau mengijinkan proses meminta sumber dayahanya jika proses tidak membawa sumber daya lain.
Mencegah Non Preemption Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu. Cara mencegahkondisi non preemption : Jika suatu proses yang membawa beberapa sumber daya meminta sumber dayalain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut,maka semua sumber daya yang sedang dibawa proses tersebut harusdibebaskan. Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanyaditunda dan ditambahkan pada daftar sumber daya. Proses akan di restart hanya jika dapat memperoleh sumber daya yang lama dansumber daya baru yang diminta.
Mencegah Kondisi Menunggu Sirkular Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Prosesdapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurutsecara numerik. Setiap proses yang membutuhkan sumber daya dan memintanyamaka nomor urut akan dinaikkan. Cara ini tidak akan menimbulkan siklus. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yangmemuaskan semua pihak.
Menghindari Deadlock Metode alternatif untuk menghindari deadlock adalah digunakan informasitambahan tentang bagaimana sumber daya diminta. Misalnya pada sistem dengan satu tape drive dan satu printer, proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive. Dengan mengetahui urutan permintaan danpelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Untuk penghindaran deadlock diperlukan pengertian mengenai state aman (safe state) dan state tak aman (unsafe state).
State Aman (Safe State) Ketika suatu proses meminta sumber daya yang tersedia, sistem harus menentukan apakah alokasi sumber daya pada proses mengakibatkan sistem dalam state aman. Sistem dikatakan dalam state aman jika sistem dapat mengalokasikan sumber daya untuk setiap proses secara berurutan dan menghindari deadlock. Jika sistem dalam state aman maka tidak terjadi deadlock, sedangkan jika system dalam state tidak aman (unsafe state) maka kemungkinan terjadi deadlock
Mendeteksi Deadlock Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan : Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi. Algoritma untuk memperbaiki dari deadlock.
Perbaikan dari Deadlock 1 Terminasi Proses Untuk memperbaiki deadlock dengan terminasi proses, dapat diguankan salahsatu dari dua metode di bawah ini : Menghentikan (abort) semua proses yang deadlock Menghentikan satu proses setiap waktu sampai siklus deadlock hilang. Untuk menentukan urutan proses yang harus dihentikan ada beberapa faktor yang harusdiperhatikan : Prioritas proses. Berapa lama proses dijalankan dan berapa lama lagi selesai. Sumber daya yang digunakan proses. Sumber daya proses yang diperlukan untuk menyelesaikan task. Berapa proses yang perlu diterminasi. Apakah proses interaktif atau batch.
Perbaikan dari Deadlock 2 Menunda Sumber Daya Untuk menghilangkan deadlock dengan menunda sumber daya, sumber dayadari proses harus ditunda dan memberikan sumber daya tersebut ke proses lain sampai siklus deadlock hilang. Jika penundaan dibutuhkan untuk menghilangkan deadlock, terdapat tiga hal yang perlu diperhatikan : Pilihlah korban (sumber daya) yang mempunyai biaya minimal. Lakukan rollback yaitu memulai kembali (restart) proses pada state yang aman. Harus dijamin starvation tidak akan terjadi karena kemungkinan beberapa proses selalu terpilih sebagai korban termasuk jumlah rollback sebagai faktor biaya.
Kombinasi Penanganan Deadlock Untuk menangani deadlock dilakukan kombinasi dari tiga algoritma dasar yaitu mencegah deadlock, menghindari deadlock dan mendeteksi deadlock. Kombinasi ketiga algoritma ini memungkinkan penggunaan yang optimal untuk setiap sumber daya pada sistem.