Sinkronisasi dan Deadlock Proses MATERI 6 SISTEM OPERASI Sinkronisasi dan Deadlock Proses Oleh : Mufadhol, S.Kom Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Konsep Interaksi Proses yang dijalankan pada suatu sistem operasi dapat bekerja secara sendiri atau pun bekerja secara bersama-sama dengan proses yang lain, kerja sama antar proses membutuhkan suatu mekanisme yang memperbolehkan proses mengkomunikasikan data dengan yang lain. Disini kita akan melihat bagaimana proses itu berhubungan dengan proses-proses yang lain dalam sistem operasi. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Proses yang Kooperatif Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakan menjadi 2 yaitu proses independen dan proses kooperatif. Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/tetap) dengan proses lain adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Alasan terjadinya Proses Kooperatif Pembagian informasi: Beberapa proses dapat mengakses beberapa data yang sama. Kecepatan komputasi: Tugas yang dijalankan dapat berjalan dengan lebih cepat jika tugas tersebut dipecah-pecah menjadi beberapa sub bagian dan dieksekusi secara paralel dengan sub bagian yang lain. Peningkatan kecepatan ini dapat dilakukan jika komputer tersebut mempunyai beberapa elemen pemrosesan, seperti CPU atau jalur M/K. Modularitas: Akan lebih mudah untuk mengatur tugas yang kompleks jika tugas tersebut dipecah menjadi beberapa sub bagian, kemudian mempunyai proses atau thread yang berbeda untuk menjalankan setiap sub bagian. Kenyamanan: User dapat dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama. Contohnya satu user dapat mengetik, mengedit, dan mencetak suatu halaman tertentu secara bersamaan. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Komunikasi Proses Komunikasi Langsung Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit, baik pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, Kerugian dari cara ini adalah adanya keterbatasan modularitas, merubah nama proses mungkin mengharuskan kita untuk merubah semua definisi proses yang lain, dan semua referensi kepada nama proses yang lama harus ditemukan. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Komunikasi Proses Komunikasi Tidak Langsung Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/melalui mailbox (Kotak Surat) atau terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah obyek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bisa dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Buffering Baik komunikasi itu langsung atau tidak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya terdapat tiga pilihan dimana antrian tersebut diimplementasikan : Kapasitas nol : antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan. Kapasitas terbatas : antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian. Kapasitas tak terbatas : antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Sinkronisasi Seperti yang telah kita ketahui bahwa proses dapat bekerja sendiri (independent process) dan juga dapat bekerja bersama proses-proses yang lain (cooperating process). Pada umumnya ketika proses saling bekerjasama (cooperating process) maka proses-proses tersebut akan saling berbagi data. Pada saat proses-proses berbagi data, ada kemungkinan bahwa data yang dibagi secara bersama itu akan menjadi tidak konsisten dikarenakan adanya kemungkinan proses-proses tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut berubah, hal ini dikenal dengan istilah Race Condition. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Critical Section Biasanya sebuah proses akan sibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju ke race condition pada sebagian besar waktu. Akan tetapi, beberapa 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. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Mutual Exclusion Maka bagaimana cara menghindari race condition ini serta situasi-situasi lain yang melibatkan memori bersama, berkas bersama atau sumber daya yang digunakan bersama-sama?, Kuncinya adalah menemukan jalan untuk mencegah lebih dari satu proses melakukan proses tulis atau baca kepada data atau berkas pada saat yang bersamaan. 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. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Persyaratan Solusi untuk memecahkan masalah critical section adalah dengan mendesain sebuah protokol di mana proses-proses dapat menggunakannya secara bersama-sama. Setiap proses harus 'meminta ijin' untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan ijin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Solusi Masalah Critical Section 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. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Solusi Masalah Critical Section 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- roses yang yang sedang berada dalam entry section saja yang dapat berkompetisi untuk mengerjakan critical section. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Solusi Masalah 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 sampai diperbolehkan). Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com 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. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Copyright © Mufadhol masyong2mail@yahoo.com Contoh Deadlock Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Menanggulangi Deadlock Mengabaikan Masalah Deadlock Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-pura bahwa tidak ada masalah apa pun. Hal ini seakan-akan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangi Deadlock dengan cara ini dengan tidak mendeteksi Deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apa pun. Jadi jika terjadi Deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertentu dan mencoba lagi. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Menanggulangi Deadlock Mendeteksi dan Memperbaiki Caranya ialah dengan cara mendeteksi jika terjadi Deadlock pada suatu proses maka dideteksi sistem mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Menanggulangi Deadlock Menghindari Deadlock Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudah harus dapat mengenali bahwa sumber daya itu aman atau tidak (dalam arti tidak terkena Deadlock), setelah itu baru dialokasikan. Ada dua cara yaitu: Jangan memulai proses apa pun jika proses tersebut akan membawa kita pada kondisi Deadlock, sehingga tidak mungkin terjadi Deadlock karena ketika akan menuju Deadlock sudah dicegah. Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu keadaan Deadlock. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com
Kriteria Proses yang dimatikan Yang paling jarang memakai prosesor Yang paling sedikit hasil programnya Yang paling banyak memakai sumber daya sampai saat ini Yang alokasi sumber daya totalnya tersedkit Yang memiliki prioritas terkecil. Operating System ma5yong@plasa.com Copyright © Mufadhol masyong2mail@yahoo.com