Sinkronisasi dan deadlock

1,996 views
1,857 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,996
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
68
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Sinkronisasi dan deadlock

  1. 1. Sinkronisasi dan DeadlockMakalah Sistem Operasi Kelompok Mafazan Sarip Husein Heru Hidayat Alvin Setiawan Wahyu Rezkianto Alif Nur Rachman Universitas Gunadarma
  2. 2. Daftar IsiA. Sinkronisasi ................................................................................................................ 3 1. Race Condition .......................................................................................................... 3 2. Masalah Critical Section ............................................................................................ 3 3. Solusi ke Masalah Critical-Section............................................................................. 4 Algoritma 1 .................................................................................................................................... 4 Algoritma 2 .................................................................................................................................... 5 Algoritma 3 .................................................................................................................................... 6 4. Semaphore ................................................................................................................ 7 1. Operasi Down .......................................................................................................................... 7 2. Operasi Up ............................................................................................................................... 7 5. Problem Klasik pada Sinkronisasi.............................................................................. 7 6. Monitors .................................................................................................................... 7B. Deadlock .................................................................................................................... 8 1. Peranan Deadlock ..................................................................................................... 8 2. Resources-Allocation Graph ...................................................................................... 9 3. Strategi menghadapi Deadlock .................................................................................. 9 4. Strategi Ostrich.......................................................................................................... 9 5. Mencegah Deadlock ................................................................................................ 10 6. Menghindari Deadlock ............................................................................................. 10 7. Kondisi Aman (Safe state) ....................................................................................... 11 8. Kondisi Tak Aman (Unsafe state) ............................................................................. 11 9. Algoritma Bankir ...................................................................................................... 11 10. Mendeteksi Deadlock dan Memulihkan Deadlock .................................................... 11
  3. 3. A. Sinkronisasi Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan tidak konsistennya data.Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proseskerjasama. Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyakn-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklahsederhana. Dimisalkan kita memdifikasi producer-consumer code dengan menambahkan suatu variablecounter, dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer. 1. Race Condition Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi databersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yangterakhir selesai. Untuk mencegahrace condition, proses-proses yang berjalan besamaan harus didisinkronisasi.Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagibeberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis(write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuahberkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yangmuncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contohsederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebutmemasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printerdaemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jikaada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori. 2. Masalah Critical Section Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori,shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegahlebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yangsama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuahproses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitanyang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikantugasnya.Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuahproses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi raceconditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas ataumelakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaedmemory diakses disebutCritical Section atau Critical Region.Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar prosessecara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agarmenghasilkan solusi yang baik: Tidak ada dua proses secara bersamaan masuk ke dalam citical section. Tidak ada asumsi mengenai kecepatan atau jumlah cpu. Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain. Tidak ada proses yang menunggu selamamya untuk masuk critical section.Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersamadiakses. Terdiri dari:Entry Section: kode yang digunakan untuk masuk ke dalam critical sectionCritical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
  4. 4. Exit Section: akhir dari critical section, mengizinkan proses lainRemainder Section: kode istirahat setelah masuk ke critical section. 3. Solusi ke Masalah Critical-Section Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu: Mutual exclutionJika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapatmengeksekusi dalam critical section mereka. ProgressJika tidak ada proses yang sedang dieksekusi dalam critical section dan ada beberapa proses yang inginmasuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnyatidak bias ditunda. Bounded WaitingSuatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelahadanya proses yang meminta masuk ke critical section dan sebelum permintaan itu diterima, Hal yang diperhatikan adalah 1. Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed. 2. Tidak ada asumsi mengenai kecepatan relative dan n proses.Algoritma 1Algoritma 1 mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkansistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua prosestersebut harus bergantian menggunakan critical section.Algoritma ini menggunakan variabel bernama turn, nilai turn menentukan proses mana yang bolehmemasuki critical section dan mengakses data yang di- sharing. Pada awalnya variabel turn diinisialisasi 0,artinya P0 yang boleh mengakses critical section. Jika turn= 0 dan P0 ingin menggunakan critical section,maka ia dapat mengakses critical section-nya. Setelah selesai mengeksekusi critical section, P0 akanmengubah turn menjadi 1, yang artinya giliran P1 tiba dan P1 diperbolehkan mengakses critical section.Ketika turn= 1 dan P0 ingin menggunakan critical section, maka P0 harus menunggu sampai P1 selesaimenggunakan critical section dan mengubah turn menjadi 0.Ketika suatu proses sedang menunggu, proses tersebut masuk ke dalam loop, dimana ia harus terus-menerus mengecek variabel turn sampai berubah menjadi gilirannya. Proses menunggu ini disebut busywaiting. Sebenarnya busy waiting mesti dihindari karena proses ini menggunakan CPU. Namun untukkasus ini, penggunaan busy waiting diijinkan karena biasanya proses menunggu hanya berlangsung dalamwaktu yang singkat.Pada algoritma ini masalah muncul ketika ada proses yang mendapat giliran memasuki critical section tapitidak menggunakan gilirannya sementara proses yang lain ingin mengakses critical section. Misalkanketika turn= 1 dan P1 tidak menggunakan gilirannya maka turn tidak berubah dan tetap 1. Kemudian P0
  5. 5. ingin menggunakan critical section, maka ia harus menunggu sampai P1 menggunakan critical section danmengubah turn menjadi 0. Kondisi ini tidak memenuhi syarat progress karena P0 tidak dapatmemasuki critical section padahal saat itu tidak ada yang menggunakan critical section dan ia harusmenunggu P1 mengeksekusi non- critical section-nya sampai kembali memasuki critical section. Kondisi inijuga tidak memenuhi syarat bounded waiting karena jika pada gilirannya P1 mengakses critical section tapiP1 selesai mengeksekusi semua kode dan terminate, maka tidak ada jaminan P0 dapat mengakses criticalsection dan P0-pun harus menunggu selamanya.Algoritma 2Algoritma 2 juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma inimengantisipasi masalah yang muncul pada algoritma 1 dengan mengubah penggunaanvariabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk criticalsection. Proses yang membutuhkan akses ke critical section akan memberikan nilai flag-nya true.Sedangkan proses yang tidak membutuhkan critical section akan men- set nilai flagnya bernilai false.Suatu proses diperbolehkan mengakses critical section apabila proses lain tidak membutuhkan criticalsection atau flag proses lain bernilai false. Tetapi apabila proses lain membutuhkan criticalsection(ditunjukkan dengan nilai flag-nya true), maka proses tersebut harus menunggu dan"mempersilakan" proses lain menggunakan critical section-nya. Disini terlihat bahwa sebelummemasuki critical sectionsuatu proses melihat proses lain terlebih dahulu (melalui flag-nya), apakah proseslain membutuhkan critical section atau tidak.Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidakmembutuhkan critical section. Jika P0 ingin mengakses critical section, ia akan mengubah flag[0]menjadi true. Kemudian P0 akan mengecek apakah P1 juga membutuhkan critical section, jika flag[1]bernilai false maka P0 akan menggunakan critical section. Namun jika flag[1] bernilai true maka P0 harusmenunggu P1 menggunakan critical section dan mengubah flag[1] menjadi false.Pada algoritma ini masalah muncul ketika kedua proses secara bersamaan menginginkan critical section,kedua proses tersebut akan men- set masing-masing flag-nya menjadi true. P0 men- set flag[0] =true, P1men- set flag[1] = true. Kemudian P0 akan mengecek apakah P1 membutuhkan critical section. P0 akanmelihat bahwa flag[1] = true, maka P0 akan menunggu sampai P1 selesai menggunakancritical section.Namun pada saat bersamaan, P1 juga akan mengecek apakah P0 membutuhkan critical section atautidak, ia akan melihat bahwa flag[0] = true, maka P1 juga akan menunggu P0 selesai menggunakan criticalsection-nya. Kondisi ini menyebabkan kedua proses yang membutuhkan critical section tersebut akansaling menunggu dan "saling mempersilahkan" proses lain untuk mengaksescritical section, akibatnyamalah tidak ada yang mengakses critical section. Kondisi ini menunjukkan bahwa Algoritma II tidakmemenuhi syarat progress dan syarat bounded waiting, karena kondisi ini akan terus bertahan dan keduaproses harus menunggu selamanya untuk dapat mengakses critical section.
  6. 6. Algoritma 3Algoritma 3 ditemukan oleh G.L. Petterson pada tahun 1981 dan dikenal juga sebagai Algoritma Petterson.Petterson menemukan cara yang sederhana untuk mengatur proses agar memenuhi mutual exclusion.Algoritma ini adalah solusi untuk memecahkan masalah critical section pada dua proses. Ide dari algoritmaini adalah menggabungkan variabel yang di- sharing pada Algoritma 1 dan Algoritma 2, yaituvariabel turn dan variabel flag. Sama seperti pada Algoritma 1I dan 2, variabel turn menunjukkan giliranproses mana yang diperbolehkan memasuki critical section dan variabel flag menunjukkan apakah suatuproses membutuhkan akses ke critical section atau tidak.Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidakmembutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical section, iaakan mengubah flag-nya menjadi true (memberikan tanda bahwa ia butuh critical section) lalu prosestersebut memberikan turn kepada lawannya. Jika lawannya tidak menginginkan critical section (flag-nya false), maka proses tersebut dapat menggunakan critical section, dan setelah selesaimenggunakan critical section ia akan mengubah flag-nya menjadi false. Tetapi apabila proses lawannyajuga menginginkan critical section maka proses lawan-lah yang dapat memasuki critical section, danproses tersebut harus menunggu sampai proses lawan menyelesaikan critical section dan mengubah flag-nya menjadi false.Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang dapatmengakses critical section. Namun apabila P1 juga membutuhkan critical section, karena flag[1]= true dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus menunggu sampai P1menyelesaikan critical section dan mengubah flag[1]= false, setelah itu barulah P0 dapatmengakses critical section.Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana yang dapatmengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang bersamaan, keduaproses akan menset masing-masing flag menjadi true (flag[0] = true dan flag[1] = true), dalam kondisi iniP0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses criticalsection terlebih dahulu adalah proses yang terlebih dahulu mengubah turn menjadi turn lawannya.Misalkan P0 terlebih dahulu mengubah turn= 1, lalu P1 akan mengubah turn= 0, karenaturn yang terakhiradalah 0 maka P0-lah yang dapat mengakses critical section terlebih dahulu dan P1 harus menunggu.Algoritma 3 memenuhi ketiga syarat yang dibutuhkan. Syarat progress dan bounded waiting yang tidakdipenuhi pada Algoritma 1 dan 2 dapat dipenuhi oleh algoritma ini karena ketika ada proses yang inginmengakses critical section dan tidak ada yang menggunakan critical section maka dapat dipastikan adaproses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapatmasuk ke critical section.
  7. 7. 4. Semaphore Semaphore adalah pendekatan yang diajukan oleh Djikstra seorang seorang ilmuwan komputer,dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penandasederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penandatertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yangcocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.Semaphore mempunyai dua sifat, yaitu: 1. Semaphore dapat diinisialisasi dengan nilai non-negatif. 2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.1. Operasi Down Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yangmengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaumdiselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblockedsebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampaioperasi selesai atau diblocked.2. Operasi Up Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu takdapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasiDown-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanyasemaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyaibagan sebagai berikut:Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke criticalsection. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapatmelanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehinggamenjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil. 5. Problem Klasik pada Sinkronisasi Ada tiga hal yang selalu memjadi masalah pada proses sinkronisasi :1. Problem Bounded buffer.2. Problem Reades and Writer.3. Problem Dining Philosophers. 6. Monitors Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulanprosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitorsecara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses strukturinternal.Properti-properti monitor adalah sebagai berikut: 1. Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.
  8. 8. 2. Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).3. Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.4. Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.5. Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.6. Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.7. Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor. Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor,monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diaksesoleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalammonitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitasmutual exclusion dalam mengakses sumber daya itu. B. Deadlock Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatukejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalamkondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan olehproses lain dalam himpunan tersebut. Terdapat kaitan antaraoverhead dari mekanisme koreksi danmanfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayaruntuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya.Sementara pada kasus lain, seperti pada real-timeprocess control, mengizinkan deadlock akan membuatsistem menjadi kacau dan membuat sistem tersebut tidak berguna.Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapatmembuat deadlock pada suatu persimpangan, yaitu: 1. Terdapat satu jalur pada jalan. 2. Mobil digambarkan sebagai proses yang sedang menuju sumber daya. 3. Untuk mengatasinya beberapa mobil harus preempt (mundur). 4. Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya). 1. Peranan Deadlock Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagiterjadinya deadlock, yaitu: Mutual Exclusion Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu. Hold and Wait Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain. Non-pre-emptive Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya. Circular Wait Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
  9. 9. 2. Resources-Allocation Graph Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinanterjadinya.G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1, P2, P3, ...} danjenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau (Ri, Pj)Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panahdari resource keprocess menunjukkan sebuah instance dari resource telah dtempatkan keproses. Process adalah lingkaran,resource adalah kotak, titik-titik merepresentasikanjumlah instance dari resource dalam tipe. Meminta poin-poin ke kotak, perintah datang dari titik.Jika graf tidak berisi lingkaran, maka tidak ada proses yang deadlock. Jika membentuk lingkaran, maka: o jika tipe resource memiliki banyak instance, maka deadlock DAPAT ada. o jika setiap tipe resource mempunyai satu instance, maka deadlock telah terjadi. 3. Strategi menghadapi Deadlock Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu: 1. Mengabaikan adanya deadlock. 2. Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock. 3. Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu: o Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi. o Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya. 4. Strategi Ostrich Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkankepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat munculberkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dansemua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih seringmengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada
  10. 10. sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar danlebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX danMINIX. 5. Mencegah Deadlock Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggapsebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akanmengakibatkan kinerja utilisasi sumber daya yang buruk.Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang dapatmenyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yangsecara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jikamembiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akanmenyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu denganmengantrikan job-job pada antrian dan akan dilayani satu-satu.Beberapa masalah yang mungkin terjadi adalah: 1. Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool 2. Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlockHal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutualexclusion benar-benar tidak dapat dihilangkan.Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih menjanjikan. Jika suatu proses yangsedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain,maka deadlockdapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar memintasumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yangdibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapatmemulai prosesnya.Masalah yang mungkin terjadi: 1. Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses 2. Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses yang telah memintanya dari awal.Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat kedua,karena dengan meniadakan syarat ketiga maka suatu proses dapat dihentikan ditengah jalan. Hal ini tidakdimungkinkan karena hasil dari suatu proses yang dihentikan menjadi tidak baik.Cara terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat dua pendekatan, yaitu: 1. Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu waktu, jika menginginkan sumber daya lain maka sumber daya yang dimiliki harus dilepas. 2. Membuat penomoran pada proses-proses yang mengakses sumber daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi permintaannya harus dibuat terurut.Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki satu prosesadalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yangkompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan penomoranmasalah yang dihadapi adalah tidak terdapatnya suatu penomoran yang dapat memuaskan semua pihak. 6. Menghindari Deadlock Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber dayayang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses padasuatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya
  11. 11. akandiberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampaisuatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber daya yangsebelumnya dipegang oleh proses lain telah dilepaskan.Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidakmemungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state. 7. Kondisi Aman (Safe state) Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat carauntuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengancara mengikuti urutan tertentu. 8. Kondisi Tak Aman (Unsafe state) Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untukmemenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatuurutan. 9. Algoritma Bankir Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama AlgoritmaBankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistemoperasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya.Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan inginmeminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang jugabelum mengembalikan uang pinjamannya.Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalahsebagai berikut:1) Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.2) Jumlah proses yang tidak tetap dan berubah-ubah.3) Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.4) Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.5) Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga. 10. Mendeteksi Deadlock dan Memulihkan Deadlock Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakah deadlock sedangterjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelahkondisi deadlock dapat dideteksi, maka langkah pemulihan dari kondisi deadlock dapat segera dilakukan.Langkah pemulihan tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yangdiperlukan, yaitu dengan terminasi proses dan pre-emption(mundur) suatu proses. Metode ini banyakdigunakan pada komputer mainframe berukuran besar.

×