Hubungan Algoritma Ostrich dengan Deadlock
Pengertian Algoritma Ostrich
Algoritma ostrich adalah strategi mengabaikan masalah yang mungkin terjadi atas dasar bahwa masalah itu mungkin sangat jarang terjadi - "menempel kepala di pasir dan berpura-pura bahwa tidak ada masalah". Dengan mengasumsikan bahwa lebih efektif untuk memungkinkan masalah itu terjadi dibandingkan upaya pencegahannya. Pendekatan ini dapat digunakan dalam menangani deadlock pada pemrograman concurrent jika deadlock diyakini sangat jarang terjadi, dan jika biaya untuk mendeteksi atau pencegahan lebih tinggi.
Beberapa algoritma dengan kinerja yang buruk banyak digunakan karena mereka hanya menunjukkan kinerja yang buruk pada kasus yang sengaja dibuat dan jarang terjadi dalam praktik sesungguhnya, contoh-contoh yang khas adalah algoritma simplex dan algoritma pengecekan tipe Standard ML. Masalah seperti integer overflow dalam bahasa pemrograman tetap juga sering diabaikan karena mereka hanya terjadi dalam kasus luar biasa yang tidak muncul untuk input sederhana.
Pendekatan Hybrid menggunakan algoritma Ostrich adalah menentukan bahwa kasus sangat jarang tidak terjadi, dan kemudian beralih dari algoritma lain yang lebih kompleks. Trade-off di sini adalah bahwa jika keadaan berubah atau belum ditemukan, masalah langka dapat kembali terjadi.
Pengertian Deadlock
Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut. Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Deadlock adalah masalah yang biasa terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu. Jadi deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses.
Salah satu contoh sebuah deadlock:
- Proses A menggunakan CD-ROM.
- Proses B menggunakan Scanner.
- Proses A meminta Scanner (tanpa melepas CD-ROM) → menunggu.
- Proses B meminta CD-ROM (tanpa melepas Scanner) → menunggu.
- Menunggu… menunggu… DEADLOCK.
Model Sistem Deadlock
Untuk memodelkan kondisi deadlock, maka bayangkan sebuah sistem dengan:
- Sekumpulan proses, P = {P1, P2, …, Pn}
- Sekumpulan tipe sumber daya yang berbeda, R = {R1, R2, …, Rm}
- Sumber daya Ri memiliki n bagian (instans) yang identik dan masing-masing digunakan.
Pada model operasi normal, sebuah proses menggunakan sumber daya dengan urutan sebagai berikut:
·
Mengajukan
permohonan (request)
Bila permohonan tidak dapat dikabulkan dengan segera (misal karena sumber daya
sedang digunakan proses lain), maka proses itu harus menunggu sampai sumber
daya yang dimintanya tersedia.
·
Menggunakan sumber
daya (use)
Proses dapat menggunakan sumber daya, misalnya printer untuk mencetak, disk
drive untuk melakukan operasi I/O, dan sebagainya.
·
Melepaskan sumber
daya (relase)
Setelah proses menyelesaikan penggunaan sumber daya, maka sumber daya harus
dilepaskan sehingga dapat digunakan oleh proses lain.
Penyebab Deadlock
Setelah kita melihat beberapa illustrasi di atas, mungkin kita sekarang mulai bisa membayangkan apa itu deadlock. Sebenarnya deadlock itu akan terjadi apabila syarat-syarat dari deadlock tersebut terpenuhi. Adapun 4 kondisi penyebab deadlock adalah sebagai berikut:
·
Mutual Exclusion
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.
·
Hold and Wait
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.
·
No 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.
Penanganan dan Masalah Deadlock
Penanganan Deadlock
Terdapat beberapa cara dalam menangani deadlock, yang secara umumnya ada 4 cara untuk menanganinya, yaitu:
- Mengabaikan masalah.
- Mendeteksi dan memperbaiki.
- Penghindaran.
- Pencegahan.
Mengabaikan Masalah Deadlock
Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak.
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.
Sumber :
https://docplayer.info/60750429-Deadlock-algoritma-ostrich.html
https://www.gurupendidikan.co.id/deadlock-dan-starvation/
Komentar
Posting Komentar