DEADLOCK & ALGORITMA OSTRICH DIAJUKAN UNTUK MEMENUHI TUGAS MATA KULIAH Sistem Operasi Dosen Pengampu Bapak Adi Sucipto, Ir., M.Kom. oleh : Damas Fahmi Assena NIM : 161240000500 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NAHDLATUL ULAMA JEPARA 2017
DEADLOCK Pendahuluan Dalam sistem komputer, terdapat banyak sumber daya yang hanya bisa dimanfaatkan oleh satu proses pada suatu waktu. Contohnya adalah penggunaan sumber daya seperti printer, tape drives dan CD-ROM drives. Dua buah proses yang menggunakan slot yang sama pada tabel proses dapat menyebabkan kerusakan pada sistem. Untuk itu, setiap sistem operasi memiliki mekanisme yang memberikan akses eksklusif pada sumber daya. Pada kenyataannya, proses membutuhkan akses eksklusif untuk beberapa sumber daya sekaligus. Bayangkan apabila sebuah proses, sebut saja proses A, meminta sumber daya X dan mendapatkannya. Kemudian ada proses B yang meminta sumber daya Y dan mendapatkannya juga. Setelah itu, proses A meminta sumber daya Y dan proses B meminta sumber daya X. Pada situasi tersebut, kedua proses harus ter- block dan menunggu secara terus-menerus. Keadaan seperti itu dinamakan 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. Gambar 23.1. Contoh kasus deadlock pada lalu lintas di jembatan Pada contoh di atas, digambarkan ilustrasi dari kejadian deadlock pada dunia nyata, yaitu pada lalu lintas di jembatan. Dapat dilihat bahwa kedua mobil yang berada di tengah-tengah jembatan tidak dapat maju dan hanya menunggu. Penyelesaian dari masalah tersebut adalah salah satu dari mobil tersebut mundur, sehingga mobil yang lain dapat maju. Mobil pada kasus ini adalah proses, sedangkan jembatan adalah sumber daya. Kedua mobil berebut untuk menggunakan sumber daya, namun karena sumber daya tersebut hanya dapat digunakan oleh satu proses saja, maka terjadilah deadlock. Kondisi tersebut bila terjadi dalam waktu yang lama dapat menyebabkan terjadinya starvation.
Gambar 23.2. Contoh kasus deadlock pada lalu lintas di persimpangan Gambar di atas adalah contoh lain terjadinya deadlock pada dunia nyata. Pada gambar jelas terlihat bahwa lalu lintas terhenti dan terjadi antrian pada empat arah datangnya mobil. Tidak ada mobil yang bisa melanjutkan perjalanan dan hanya menunggu saja. Permasalahan ini dapat dipecahkan dengan cara salah satu dari antrian tersebut mundur dan memberikan kesempatan antrian lain untuk berjalan terlebih dahulu. Kasus seperti ini sangat potensial untuk terjadinya starvation. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource (sumber daya) 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: a. Proses A menggunakan CD-ROM. b. Proses B menggunakan Scanner. c. Proses A meminta Scanner (tanpa melepas CD-ROM) menunggu. d. Proses B meminta CD-ROM (tanpa melepas Scanner) menunggu. e. Menunggu menunggu DEADLOCK.
Contohnya dapat dilihat dari kode berikut ini : //dari kelas proses kita tambahkan method yaitu meminta public void meminta (int banyaka) { //meminta dari sumber daya a if ( banyaka < banyak ) banyak = banyak - banyaka; else wait(); } //mengubah kode pada mainnya sebagai berikut public static void main ( String [] args ) { Proses P = new Proses(); Proses Q = new Proses(); P.meminta(80); Q.meminta(70); P.meminta(60); Q.meminta(80); } private int banyak = 200; private int banyaka; Setelah proses P dan Q telah melakukan fungsi meminta untuk pertama kali, maka sumber daya yang tersedia dalam banyak ialah 50 (200-70-80). Maka saat P menjalankan fungsi meminta lagi sebanyak 60, maka P tidak akan menemukan sumber daya dari banyak sebanyak 60, maka P akan menunggu hingga sumber daya yang diminta dipenuhi. Demikian juga dengan Q, akan menunggu hingga permintaannya dipenuhi, akhirnya terjadi deadlock. Cara mengatasinya dengan menggunakan memori maya.
Adapun 4 kondisi penyebab deadlock adalah sebagai berikut : a. 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. b. 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. c. 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. d. Circular Wait Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.
ALGORITMA OSTRICH Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-pura bahwa tidak ada masalah apa pun. Diibaratnya seperti burung unta yang menempelkan kepalanya di pasir dan berpura-pura tidak terjadi masalah apa pun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem operasi 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. 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. Algortima Ostrich di gunakan oleh dua metode sebagai berikut : 1. Trade-offs : merupakan metode penanganan deadlock dengan sistem dimana ada asumsi bahwa suatu masalah (dalam hal ini deadlock) jarang terjadi atau masalah tersebut belum tentu benar bisa saja sewaktu-waktu berubah atau bahkan akan kembali terjadi, sehingga jangan terlalu terpaku akan satu masalah yang ada. 2. Pendekatan Hybird : merupakan metode yang mengasumsikan masalah (dalam hal ini misal deadlock) sangat jarang terjadi atau bahkan tidak akan pernah terjadi sama sekali, dan biasanya bisa saja beralih pada algoritma yang lebih kompleks untuk mengetahui masalah tersebut benar-benar terjadi atau tidak.
Kesimpulan Dari uraian diatas, maka dapat ditarik kesimpulan yaitu: Deadlock adalah suatu kondisi dimana sekumpulan proses tidak dapat berjalan kembali akibat kompetisi memperebutkan sumber daya. Sebuah proses berada dalam keadaan deadlock apabila semua proses berada dalam keadaan menunggu (di dalam waiting queue) peristiwa yang hanya bisa dilakukan oleh proses yang berada dalam waiting queue tersebut. 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. Rujukan [Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons. [Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall. [WEBRpi2004] Computer Science RPI. 2004. Deadlock http://www.cs.rpi.edu/academics/courses/fall04/os/c10/index.html. Diakses 28 Maret 2007. [WEBWiki2006a] Wikipedia. 2006. Deadlock http://en.wikipedia.org/wiki/deadlock. Diakses 05 Februari 2007. [WEBWiki2006b] Wikipedia. 2006. Banker's Algorithm http://en.wikipedia.org/wiki/banker%27s_algorithm. Diakses 16 Februari 2007.