P. 1
Sinkronisasi Dan Deadlock Sistem Operasi

Sinkronisasi Dan Deadlock Sistem Operasi

|Views: 729|Likes:

More info:

Published by: Muhammad Iqbal KoeCoer on Jun 07, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

08/10/2013

pdf

text

original

Sinkronisasi dan Deadlock Sistem Operasi

Muhammad Iqbal Jurusan Sistem Komputer Fakultas Ilmu Komputer Universitas Sriwijaya Email:qiodaimi@gmail.com

ABSTRAK
Saat menggunakan komputer, notebook, netbook dan barang yang sejenisnya saat menjalankan suatu program sering kita dapati kejadian "not responding" hal tersbut merupakan masalah yang tak jarang terjadi saat kita menggunakan komputer. Sinkronisasi dan deadlock merupakan hal penting dalam pencegahan terjadinya hal-hal diatas. Sinkronisasi 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. Prosesproses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar. Dan deadlock adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Kata Kunci : Sinkronisasi, Deadlock, Race Condition, Critical Section, Resouce Allocation Graph

Pendahuluan
Sinkronisasi dan deadlock merupakan permasalahan sistem operasi. Dimana jika sinkronisasi dibutuhkan 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. Prosesproses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar. Dan sedangkan deadlock suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu.

Pembahasan
1. Sinkronisasi 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. Prosesproses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar.

maka tidak ada proses-proses lain yang dapat menjalankan critical section dari prosesproses tersebut. Biasanya sebuah proses sibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju ke race condition pada sebagian besar waktu.2 Critical Section Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersamasama yang dapat membawa proses itu ke bahaya race condition. do { i. } while (1). a. biasanya setiap proses memiliki segmen kode dimana proses itu dapat mengubah variabel. Dengan kata lain. dan sumber daya lain yang digunakan secara bersama-sama adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses melakukan proses tulis dan baca kepada data yang sama pada saat yang sama.1 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. maka proses lain tidak boleh masuk ke dalam critical section tersebut. Akan tetapi. Mutual Exclusion. Jika tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical . tidak ada dua proses yang berada di critical section pada saat yang bersamaan.3 Prasyarat Solusi Critical Section 1. 1. Misal proses Pi sedang menjalankan critical section (dari proses Pi). dapat kita lihat bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section.1. Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan memori bersama. proses lain akan dikeluarkan dari pekerjaan yang sama. critical section iii. Mutual Exclusion merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersamasama. Cara untuk menghindari race condition adalah kita harus dapat menjamin bahwa jika suatu proses sedang menjalankan critical section. Setiap proses harus meminta izin untuk memasuki critical sectionnya. dan lain-lainnya. exit section iv. berkas bersama. Dengan kata lain. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. 1. Dari kode di atas. sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama. 2. proses lain akan dikeluarkan dari pekerjaan yang sama. kita membutuhkan mutual exclusion. meng-update suatu tabel. entry section ii. remainder section b. yang dapat membawa proses itu ke bahaya race condition. Bagian kode selanjutnya disebut remainder section. Terjadi kemajuan (progress). menulis ke suatu file. Akhir dari critical section itu disebut exit section.

2. maka hanya prosesproses yang tidak sedang menjalankan remainder sectionnya yang dapat berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section. Kondisi seperti rantai. Sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. tak mungkin . dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock). Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi diatas. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Ketiga kondisi pertama merupakan syarat perlu (necessary conditions) bagi terjadinya deadlock. yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya. hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama.  Circular wait.  No preemption. menunggu request akses ke critical section diperbolehkan). Ada batas waktu tunggu (bounded waiting). 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. bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. namun saling mendukung.  Hold and wait. maka terdapat batasan waktu berapa lama suatu proses lain harus menunggu giliran untuk mengakses critical section. kita juga perlu tahu tentang jenis sumber daya. Kejadian deadlock selalu tidak lepas dari sumber daya. proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Deadlock Deadlock dalam arti sebenarnya adalah kebuntuan. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain.section. Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-olah berhenti. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. yaitu: sumber daya dapat digunakan lagi berulangulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai.1 Faktor Penyebab Terjadinya Deadlock Ada empat kondisi yang dapat menyebabkan terjadinya deadlock. Oleh karena itu. Keempat kondisi tersebut tidak dapat berdiri sendiri. maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya. Jadi deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. 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. 3. Jika seandainya ada proses yang sedang menjalankan critical section. Hanya ada satu proses yang boleh memakai sumber daya. Untuk mendapatkan sumber daya tersebut.  Mutual exclusion. 2. selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan.

Untuk mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat perlu sebagai berikut : a. Deadlock baru benar-benar terjadi bila kondisi keempat terpenuhi. .2 Metode Menangani Deadlock Terdapat tiga metode untuk menangani permasalahan deadlock yaitu : 1. maka semua sumber daya yang sedang dibawa proses tersebut harus dibebaskan. Deadlock terjadi berarti terdapat ketiga kondisi itu. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain. Mencegah Hold and Wait Untuk mencegah hold and wait. sistem harus menjamin bila suatu proses meminta sumber daya. 3. maka reboot sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersamasama. b.1 Strategi Burung Onta Strategi ini mengasumsikan kejadian deadlock jarang terjadi. Metode ini sering menghasilkan utilisasi sumber daya yang buruk. tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock. 2. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama.2. sehingga mengabaikan kemungkinan deadlock. Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya. maka proses tersebut tidak sedang memegang sumber daya yang lain. Strategi ini berarti sama sekali tidak berusaha mengatasi deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. c. Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock. 2. 2. Cara mencegah kondisi non preemption :  Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut. Jika terjadi deadlock.2. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Mencegah Mutual Exclusion Mutual exclusion benar-benar tak dapat dihindari. Bila salah satu saja dari kondisi tidak terpenuhi maka deadlock tidak terjadi. Pencegahan deadlock merupakan metode yang banyak dipakai. Mencegah Non Preemption Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption.2Mencegah Deadlock (Deadlock Prevention) Metode ini berkaitan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. 2.terjadi deadlock bila tidak ada ketiga kondisi itu. sehingga tidak ada tunggu menunggu.

d. maka terjadi deadlock. Mendeteksi Deadlock Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock. Mencegah Kondisi Menunggu Sirkular Sistem mempunyai total permintaan global untuk semua tipe sumber daya.5 Pemulihan Deadlock Terdapat dua pilihan untuk membebaskan deadlock. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock. Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses.  Algoritma untuk memperbaiki dari deadlock. 2. dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak.2. Cara ini tidak akan menimbulkan siklus. sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan. Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Proses dapat meminta proses kapanpun menginginkan. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh prosesproses. Misalnya pada sistem dengan satu tape drive dan satu printer.2. Sebaliknya proses Q pertama meminta printer kemudian tape drive.2. tapi permintaan harus dibuat terurut secara numerik. Satu solusi sederhana adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular.  Proses akan di-restart hanya jika dapat memperoleh sumber daya yang lama dan sumber daya baru yang diminta.3Menghindari Deadlock (Deadlock Avoidance) Metode alternatif untuk menghindari deadlock adalah digunakan informasi tambahan tentang bagaimana sumber daya diminta. 2. 2. proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya.4.  .Proses yang sedang dalam keadaan menunggu. Pada lingkungan ini sistem harus menyediakan :  Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.

Hartono. Mendeteksi deadlock Namun pada sebagian besar Sistem Operasi dewasa ini mereka lebih cenderung menggunakan pendekatan untuk mengabaikan semua deadlock yang terjadi. Second Edition. Second Edition.S. Peter and Gagne. Kondisi deadlock akan dapat terjadi jika terdapat dua atau lebih proses yang akan mengakses sumber daya yang sedang dipakai oleh proses yang lainnya. Avi and Galvin. Menghindari deadlock c. 2. E. Operating Systems Concepts.Operating Systems Design and Implementation . Untuk mengatasi masalah critical section ini. Mengabaikan apa pun deadlock yang terjadi Dari ketiga pendekatan diatas. Tanenbaum. John and Loftus.. B. 2005. Prentice-Hall.KESIMPULAN Suatu proses yang bekerja bersama-sama dan saling berbagi data dapat mengakibatkan race condition atau pengaksesan data secara bersamasama. Albert S. Prentice-Hall. E. Wibowo. Seventh Edition. Tanenbaum. Andrew S and Woodhull.Java Software Solutions Foundation Of Program Design. Dharma Oetomo. Memastikan bahwa tidak pernah dicapai kondisi deadlock b. Daftar pustaka: 1. 4. Grag. John Wiley & Sons. suatu data yang sedang diproses tidak boleh diganggu proses lain. dapat diturunkan menjadi tiga buah metode untuk mengatasi deadlock. Addison Wesley. Critical section adalah suatu segmen kode dari proses-proses itu yang yang memungkinkan terjadinya race condition. Silberschatz.. Membiarkan deadlock untuk terjadi dan memulihkannya c. Pencegahan deadlock b. Lewis. (2006) Konsep & Aplikasi Pemrograman Client Server dan Sistem Terdistribusi. 1998 .Modern Operating Systems. 3. 2001 .. yaitu: a. Penerbit ANDI : Yogyakarta . William. 5. S. First Edition. yaitu: a. & Prakoso. 1997 . Andrew S. Pendekatan untuk mengatasi deadlock dipakai tiga buah pendekatan.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->