Sinkronisasi dan Deadlock Pendahuluan Sinkronisasi diperlukan untuk menghindari

  • Slides: 33
Download presentation
Sinkronisasi dan Deadlock

Sinkronisasi dan Deadlock

Pendahuluan Sinkronisasi diperlukan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara konkuren.

Pendahuluan Sinkronisasi diperlukan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat independen atau bisa juga saling berinteraksi. Proses-proses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar.

Race Condition Race condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared

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.

Solusi Race Condition Cara untuk menghindari race condition adalah kita harus dapat menjamin bahwa

Solusi Race Condition Cara untuk menghindari race condition adalah kita harus dapat menjamin bahwa jika suatu proses sedang menjalankan critical section, maka proses lain tidak boleh masuk ke dalam critical section tersebut.

Critical Section Critical section adalah segmen kode yang mengakses data yang digunakan proses secara

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 race condition 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.

Ilustrasi Critical Section

Ilustrasi Critical Section

Syarat Solusi Masalah Critical Section • Mutual Exclusion • Progress • Bounded Waiting

Syarat Solusi Masalah Critical Section • Mutual Exclusion • Progress • Bounded Waiting

Mutual Exclusion • Merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel

Mutual Exclusion • Merupakan sebuah jalan yang menjamin jika sebuah proses 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.

Mutual Exclusion • Setiap proses harus meminta izin untuk memasuki critical section-nya. Bagian dari

Mutual Exclusion • 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.

Terjadi Kemajuan (Progress) • Jika tidak ada proses yang sedang menjalankan critical section-nya dan

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).

Ada batas waktu tunggu (bouded time) • Jika seandainya ada proses yang sedang menjalankan

Ada batas waktu tunggu (bouded time) • Jika seandainya ada proses yang sedang menjalankan 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).

Solusi Untuk Memecahkan Critical Section • Solusi Perangkat Lunak. Solusi ini menggunakan algoritma-algoritma untuk

Solusi Untuk Memecahkan Critical Section • Solusi Perangkat Lunak. Solusi ini menggunakan algoritma-algoritma untuk mengatasi masalah critical section. • Solusi Perangkat Keras. Solusi ini tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan instruksi level mesin seperti tes dan set.

Semaphore • Adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses

Semaphore • Adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses melalui dua operasi standar, yaitu increment dan decrement. • • Semafor digunakan untuk menyelesaikan masalah sinkronisasi secara umum. • Konsep semafor pertama kali diajukan idenya oleh Edsger Dijkstra pada tahun 1967. Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau lebih dari sama dengan 0.

Jenis Semaphore • Binary semaphore. Semafor ini hanya memiliki nilai 1 atau 0. Sering

Jenis Semaphore • Binary semaphore. Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif • Counting semaphore. Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan memanfaatkan binary semaphore

Fungsi Semaphore • Mutual Exclusion • Resource Controller • Sinkronisasi antar proses

Fungsi Semaphore • Mutual Exclusion • Resource Controller • Sinkronisasi antar proses

Keuntungan Semaphore • dari segi programming, penanganan masalah sinkronisasi dengan semafor umumnya rapi dan

Keuntungan Semaphore • dari segi programming, penanganan masalah sinkronisasi dengan semafor umumnya rapi dan teratur, sehingga mudah untuk dibuktikan kebenarannya • semafor diimplementasikan dalam hard code sehingga penggunaannya bersifat portabel.

Deadlock • Deadlock secara bahasa berarti buntu atau kebuntuan. • Dalam definisi lebih lengkap,

Deadlock • Deadlock secara bahasa berarti buntu atau kebuntuan. • Dalam definisi lebih lengkap, deadlock berarti suatu keadaan dimana sistem seperti terhenti dikarenakan setiap proses memiliki sumber daya yang tidak bisa dibagi dan menunggu untuk mendapatkan sumber daya yang sedang dimiliki oleh proses lain. • Keadaan seperti ini hanya dapat terjadi pada akses terhadap sumber daya yang tidak bisa dibagi atau non-sharable.

Starvation adalah keadaan dimana satu atau beberapa proses 'kelaparan' karena terus dan terus menunggu

Starvation adalah keadaan dimana satu atau beberapa proses 'kelaparan' karena terus dan terus menunggu kebutuhan sumber dayanya dipenuhi. Namun, karena sumber daya tersebut tidak tersedia atau dialokasikan untuk proses lain, akhirnya proses yang membutuhkan tidak bisa memilikinya. Kondisi seperti ini merupakan akibat dari keadaan menunggu yang berkepanjangan.

Penanganan Deadlock • Pengabaian • Pencegahan • Penghindaran • Pendeteksian dan Pemulihan

Penanganan Deadlock • Pengabaian • Pencegahan • Penghindaran • Pendeteksian dan Pemulihan

Pengabaian Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura tidak

Pengabaian Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock. Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penanganan dengan mengabaikan deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restartterhadap komputer.

Pencegahan Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan

Pencegahan Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

Penghindaran Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan

Penghindaran Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

Pendeteksian dan Pemulihan Pada sistem yang sedang berada pada kondisi deadlock, tindakan yang harus

Pendeteksian dan Pemulihan Pada sistem yang sedang berada pada kondisi deadlock, tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian memulihkan kembali sistem. Proses pendeteksian akan menghasilkan informasi apakah sistem sedang deadlock atau tidak serta proses mana yang mengalami deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

Pencegahan Deadlock • Mutual Exclusion • Hold and Wait • No Preemption • Circular

Pencegahan Deadlock • Mutual Exclusion • Hold and Wait • No Preemption • Circular Wait

Pencegahan Kondisi Mutual Exclusion Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar

Pencegahan Kondisi Mutual Exclusion Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi (non-sharable). Sedangkan pada sumber daya yang bisa dibagi tidak ada istilah mutual exclusive. Jadi, pencegahan kondisi yang pertama ini sulit karena memang sifat dasar dari sumber daya yang tidak dapat dibagi.

Pencegahan Kondisi Hold and Wait Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap

Pencegahan Kondisi Hold and Wait Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses meminta sumber daya, ia tidak sedang memiliki sumber daya lain. Atau bisa dengan proses meminta dan mendapatkan sumber daya yang dimilikinya sebelum melakukan eksekusi, sehingga tidak perlu menunggu.

Pencegahan Kondisi No Preemption Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila

Pencegahan Kondisi No Preemption Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila ada proses yang sedang memiliki sumber daya dan ingin mendapatkan sumber daya tambahan, namun tidak bisa langsung dialokasikan, maka akan preempted. Sumber daya yang dimiliki proses tadi akan diberikan pada proses lain yang membutuhkan dan sedang menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan semua sumber daya yang dibutuhkannya, termasuk sumber daya yang dimintanya terakhir.

Pencegahan Kondisi Circular Wait Kondisi 'lingkaran setan' ini dapat 'diputus' dengan jalan menentukan total

Pencegahan Kondisi Circular Wait Kondisi 'lingkaran setan' ini dapat 'diputus' dengan jalan menentukan total kebutuhan terhadap semua tipe sumber daya yang ada. Selain itu, digunakan pula mekanisme enumerasi terhadap tipe-tipe sumber daya yang ada. Setiap proses yang akan meminta sumber daya harus meminta sumber daya dengan urutan yang menaik. Misalkan sumber daya printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak boleh sebaliknya.

Penghindaran Deaclock • Tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya

Penghindaran Deaclock • Tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada. • Terdapat deadlock-avoidance algorithm yang secara rutin memeriksa state dari sistem untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada kondisi safe state. Safe state adalah suatu kondisi dimana semua proses mendapatkan sumber daya yang dimintanya dengan sumber daya yang tersedia. Apabila tidak bisa langsung, ia harus menunggu selama waktu tertentu, kemudian mendapatkan sumber daya yang diinginkan, melakukan eksekusi, dan terakhir melepas kembali sumber daya tersebut. • Terdapat dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single instances resources serta banker's algorithm untukmultiple instances resources.

Pendeteksian Deadlock Mekanisme pendeteksian adalah dengan menggunakan detection algorithm yang akan memberitahu sistem mengenai

Pendeteksian Deadlock Mekanisme pendeteksian adalah dengan menggunakan detection algorithm yang akan memberitahu sistem mengenai proses mana saja yang terkena deadlock. Setelah diketahui proses mana saja yang terlibat dalam deadlock, selanjutnya adalah dengan menjalankan mekanisme pemulihan sistem yang akan dibahas pada bagian selanjutnya.

Pemulihan Deadlock • Terminasi Proses • Rollback and Restart

Pemulihan Deadlock • Terminasi Proses • Rollback and Restart

Terminasi Proses Pemulihan sistem dapat dilakukan dengan cara melalukan terminasi terhadap semua proses yang

Terminasi Proses Pemulihan sistem dapat dilakukan dengan cara melalukan terminasi terhadap semua proses yang terlibat dalam deadlock. Dapat pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock secara satu per satu sampai 'lingkaran setan' atau circular wait hilang. Seperti diketahui bahwa circular wait adalah satu karakteristik terjadinya deadlock dan merupakan kesatuan dengan tiga karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi circular wait dapat memulihkan sistem dari deadlock. Dalam melakukan terminasi terhadap proses yang deadlock, terdapat beberapa faktor yang menentukan proses mana yang akan diterminasi. Faktor pertama adalah prioritas dari proses-proses yang terlibat deadlock. Faktor kedua adalah berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses menunggu sumber daya. Faktor ketiga adalah berapa banyak sumber daya yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, faktor utilitas dari proses pun menjadi pertimbangan sistem untuk melakukan terminasi pada suatu proses.

Rollback and Restart Dalam memulihkan keadaan sistem yang deadlock, dapat dilakukan dengan cara sistem

Rollback and Restart Dalam memulihkan keadaan sistem yang deadlock, dapat dilakukan dengan cara sistem melakukan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan normal, sehingga sistem dapat memulai proses dari posisi aman tersebut. Untuk menentukan pada saat apa proses akan rollback, tentunya ada faktor yang menentukan. Diusahakan untuk meminimalisasi kerugian yang timbul akibat memilih suatu proses menjadi korban. Harus pula dihindari keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut tidak akan pernah sukses menjalankan eksekusi.