SlideShare une entreprise Scribd logo
1  sur  11
Sinkronisasi dan Deadlock

Makalah Sistem Operasi




       Kelompok



        Mafazan

      Sarip Husein

      Heru Hidayat

     Alvin Setiawan

    Wahyu Rezkianto

    Alif Nur Rachman




 Universitas Gunadarma
Daftar Isi
A.           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 .................................................................................................................... 7
B.           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
A. Sinkronisasi
         Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan tidak konsistennya data.
Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses
kerjasama. Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak
n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah
sederhana. Dimisalkan kita memdifikasi producer-consumer code dengan menambahkan suatu variable
counter, 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 data
bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang
terakhir selesai. Untuk mencegahrace condition, proses-proses yang berjalan besamaan harus di
disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi
beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis
(write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah
berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang
muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh
sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut
memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer
daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika
ada 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 mencegah
lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang
sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah
proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan
yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan
tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah
proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race
conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau
melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed
memory diakses disebutCritical Section atau Critical Region.

Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses
secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar
menghasilkan 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 bersama
diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
Exit Section: akhir dari critical section, mengizinkan proses lain
Remainder Section: kode istirahat setelah masuk ke critical section.


    3. Solusi ke Masalah Critical-Section
         Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:
   Mutual exclution
Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat
mengeksekusi dalam critical section mereka.
   Progress
Jika tidak ada proses yang sedang dieksekusi dalam critical section dan ada beberapa proses yang ingin
masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya
tidak bias ditunda.
   Bounded Waiting
Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah
adanya proses yang meminta masuk ke critical section dan sebelum permintaan itu diterima, Hal yang di
perhatikan adalah
     1. Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.
     2. Tidak ada asumsi mengenai kecepatan relative dan n proses.



Algoritma 1

Algoritma 1 mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkan
sistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua proses
tersebut harus bergantian menggunakan critical section.




Algoritma ini menggunakan variabel bernama turn, nilai turn menentukan proses mana yang boleh
memasuki 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 akan
mengubah 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 selesai
menggunakan 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 busy
waiting. Sebenarnya busy waiting mesti dihindari karena proses ini menggunakan CPU. Namun untuk
kasus ini, penggunaan busy waiting diijinkan karena biasanya proses menunggu hanya berlangsung dalam
waktu yang singkat.

Pada algoritma ini masalah muncul ketika ada proses yang mendapat giliran memasuki critical section tapi
tidak menggunakan gilirannya sementara proses yang lain ingin mengakses critical section. Misalkan
ketika turn= 1 dan P1 tidak menggunakan gilirannya maka turn tidak berubah dan tetap 1. Kemudian P0
ingin menggunakan critical section, maka ia harus menunggu sampai P1 menggunakan critical section dan
mengubah turn menjadi 0. Kondisi ini tidak memenuhi syarat progress karena P0 tidak dapat
memasuki critical section padahal saat itu tidak ada yang menggunakan critical section dan ia harus
menunggu P1 mengeksekusi non- critical section-nya sampai kembali memasuki critical section. Kondisi ini
juga tidak memenuhi syarat bounded waiting karena jika pada gilirannya P1 mengakses critical section tapi
P1 selesai mengeksekusi semua kode dan terminate, maka tidak ada jaminan P0 dapat mengakses critical
section dan P0-pun harus menunggu selamanya.



Algoritma 2

Algoritma 2 juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma ini
mengantisipasi masalah yang muncul pada algoritma 1 dengan mengubah penggunaan
variabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk critical
section. 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 critical
section atau flag proses lain bernilai false. Tetapi apabila proses lain membutuhkan critical
section(ditunjukkan dengan nilai flag-nya true), maka proses tersebut harus menunggu dan
"mempersilakan" proses lain menggunakan critical section-nya. Disini terlihat bahwa sebelum
memasuki critical sectionsuatu proses melihat proses lain terlebih dahulu (melalui flag-nya), apakah proses
lain membutuhkan critical section atau tidak.

Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak
membutuhkan 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 harus
menunggu 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, P1
men- set flag[1] = true. Kemudian P0 akan mengecek apakah P1 membutuhkan critical section. P0 akan
melihat 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 atau
tidak, ia akan melihat bahwa flag[0] = true, maka P1 juga akan menunggu P0 selesai menggunakan critical
section-nya. Kondisi ini menyebabkan kedua proses yang membutuhkan critical section tersebut akan
saling menunggu dan "saling mempersilahkan" proses lain untuk mengaksescritical section, akibatnya
malah tidak ada yang mengakses critical section. Kondisi ini menunjukkan bahwa Algoritma II tidak
memenuhi syarat progress dan syarat bounded waiting, karena kondisi ini akan terus bertahan dan kedua
proses harus menunggu selamanya untuk dapat mengakses critical section.
Algoritma 3

Algoritma 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 algoritma
ini adalah menggabungkan variabel yang di- sharing pada Algoritma 1 dan Algoritma 2, yaitu
variabel turn dan variabel flag. Sama seperti pada Algoritma 1I dan 2, variabel turn menunjukkan giliran
proses mana yang diperbolehkan memasuki critical section dan variabel flag menunjukkan apakah suatu
proses membutuhkan akses ke critical section atau tidak.




Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak
membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical section, ia
akan mengubah flag-nya menjadi true (memberikan tanda bahwa ia butuh critical section) lalu proses
tersebut memberikan turn kepada lawannya. Jika lawannya tidak menginginkan critical section (flag-
nya false), maka proses tersebut dapat menggunakan critical section, dan setelah selesai
menggunakan critical section ia akan mengubah flag-nya menjadi false. Tetapi apabila proses lawannya
juga menginginkan critical section maka proses lawan-lah yang dapat memasuki critical section, dan
proses 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 P0
mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang dapat
mengakses 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 P1
menyelesaikan critical section dan mengubah flag[1]= false, setelah itu barulah P0 dapat
mengakses critical section.

Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana yang dapat
mengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang bersamaan, kedua
proses akan menset masing-masing flag menjadi true (flag[0] = true dan flag[1] = true), dalam kondisi ini
P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses critical
section 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 terakhir
adalah 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 tidak
dipenuhi pada Algoritma 1 dan 2 dapat dipenuhi oleh algoritma ini karena ketika ada proses yang ingin
mengakses critical section dan tidak ada yang menggunakan critical section maka dapat dipastikan ada
proses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapat
masuk ke critical section.
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-penanda
sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda
tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang
cocok 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 yang
mengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaum
diselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked
sebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampai
operasi selesai atau diblocked.

2. Operasi Up

     Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak
dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi
Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya
semaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyai
bagan sebagai berikut:
Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical
section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat
melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga
menjadikan 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 kumpulan
prosedur, 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 monitor
secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur
internal.
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.
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 diakses
oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam
monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas
mutual exclusion dalam mengakses sumber daya itu.



     B. Deadlock
         Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu
kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam
kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh
proses lain dalam himpunan tersebut. Terdapat kaitan antaraoverhead dari mekanisme koreksi dan
manfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayar
untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya.
Sementara pada kasus lain, seperti pada real-timeprocess control, mengizinkan deadlock akan membuat
sistem menjadi kacau dan membuat sistem tersebut tidak berguna.
Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapat
membuat 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 bagi
terjadinya 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.
2. Resources-Allocation Graph
         Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan
terjadinya.
G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1, P2, P3, ...} dan




jenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau (Ri, Pj)
Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panah
dari resource keprocess menunjukkan           sebuah instance dari resource telah      dtempatkan      ke
proses. Process adalah          lingkaran,resource adalah        kotak,    titik-titik  merepresentasikan
jumlah 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: masukkan
kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul
berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan
semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering
mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada
sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan
lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan
MINIX.

    5. Mencegah Deadlock
        Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap
sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan
mengakibatkan kinerja utilisasi sumber daya yang buruk.
Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang dapat
menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yang
secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jika
membiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akan
menyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu dengan
mengantrikan 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 deadlock
Hal 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 yang
sedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain,
maka deadlockdapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar meminta
sumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang
dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat
memulai 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 tidak
dimungkinkan 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 proses
adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang
kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan penomoran
masalah 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 daya
yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses pada
suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya
akandiberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai
suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber daya yang
sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak
memungkinkan 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 cara
untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan
cara mengikuti urutan tertentu.


 8. Kondisi Tak Aman (Unsafe state)
      Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk
memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu
urutan.

 9. Algoritma Bankir
      Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma
Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem
operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya.
Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin
meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga
belum mengembalikan uang pinjamannya.
Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah
sebagai 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 sedang
terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah
kondisi 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 yang
diperlukan, yaitu dengan terminasi proses dan pre-emption(mundur) suatu proses. Metode ini banyak
digunakan pada komputer mainframe berukuran besar.

Contenu connexe

Tendances

Makalah Organisasi Komputer - Direct Memory Access (DMA)
Makalah Organisasi Komputer - Direct Memory Access (DMA)Makalah Organisasi Komputer - Direct Memory Access (DMA)
Makalah Organisasi Komputer - Direct Memory Access (DMA)Fajar Jabrik
 
Makalah sistem-operasi
Makalah sistem-operasiMakalah sistem-operasi
Makalah sistem-operasiIKHSAN MAHRURI
 
Sistem informasi berdasarkan area fungsional
Sistem informasi berdasarkan area fungsionalSistem informasi berdasarkan area fungsional
Sistem informasi berdasarkan area fungsionalDianFitriAudina
 
Dedi Purwanto - Proses - proses Sistem Operasi
Dedi Purwanto - Proses - proses Sistem OperasiDedi Purwanto - Proses - proses Sistem Operasi
Dedi Purwanto - Proses - proses Sistem Operasibelajarkomputer
 
Makalah analisis dan perancangan Sistem Informasi
Makalah analisis dan perancangan Sistem InformasiMakalah analisis dan perancangan Sistem Informasi
Makalah analisis dan perancangan Sistem InformasiAsenah20
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsilaurensius08
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaDEDE IRYAWAN
 
Deadlock pada sistem operasi
Deadlock pada sistem operasiDeadlock pada sistem operasi
Deadlock pada sistem operasiAyu Arri Andanni
 
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakan
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakanSistem informasi penjualan minimarket berintegrasi barcode reader menggunakan
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakanOlbers Letfaar
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerAuliaa Oktarianii
 
Ppt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem OperasiPpt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem Operasijahrataqim
 
Bab 6 analisis data.pptx
Bab 6 analisis data.pptxBab 6 analisis data.pptx
Bab 6 analisis data.pptxEDR20081
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur dataAsep Jaenudin
 

Tendances (20)

Interupsi
InterupsiInterupsi
Interupsi
 
Makalah Organisasi Komputer - Direct Memory Access (DMA)
Makalah Organisasi Komputer - Direct Memory Access (DMA)Makalah Organisasi Komputer - Direct Memory Access (DMA)
Makalah Organisasi Komputer - Direct Memory Access (DMA)
 
Makalah sistem-operasi
Makalah sistem-operasiMakalah sistem-operasi
Makalah sistem-operasi
 
Sistem informasi berdasarkan area fungsional
Sistem informasi berdasarkan area fungsionalSistem informasi berdasarkan area fungsional
Sistem informasi berdasarkan area fungsional
 
Dedi Purwanto - Proses - proses Sistem Operasi
Dedi Purwanto - Proses - proses Sistem OperasiDedi Purwanto - Proses - proses Sistem Operasi
Dedi Purwanto - Proses - proses Sistem Operasi
 
Virtual Memory
Virtual MemoryVirtual Memory
Virtual Memory
 
Makalah analisis dan perancangan Sistem Informasi
Makalah analisis dan perancangan Sistem InformasiMakalah analisis dan perancangan Sistem Informasi
Makalah analisis dan perancangan Sistem Informasi
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
 
Deadlock pada sistem operasi
Deadlock pada sistem operasiDeadlock pada sistem operasi
Deadlock pada sistem operasi
 
Data Array
Data ArrayData Array
Data Array
 
Sistem Operasi Komputer
Sistem Operasi KomputerSistem Operasi Komputer
Sistem Operasi Komputer
 
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakan
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakanSistem informasi penjualan minimarket berintegrasi barcode reader menggunakan
Sistem informasi penjualan minimarket berintegrasi barcode reader menggunakan
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan Komputer
 
Analisis Kebutuhan Sistem Informasi
Analisis Kebutuhan Sistem InformasiAnalisis Kebutuhan Sistem Informasi
Analisis Kebutuhan Sistem Informasi
 
Ppt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem OperasiPpt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem Operasi
 
Virtual memory
Virtual memoryVirtual memory
Virtual memory
 
Bab 6 analisis data.pptx
Bab 6 analisis data.pptxBab 6 analisis data.pptx
Bab 6 analisis data.pptx
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Laporan analisis sistem informasi
Laporan analisis sistem informasiLaporan analisis sistem informasi
Laporan analisis sistem informasi
 

En vedette

Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Prosesbelajarkomputer
 
Makalah Sistem Operasi
Makalah Sistem OperasiMakalah Sistem Operasi
Makalah Sistem Operasidedisutrisno
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

En vedette (7)

Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Proses
 
Makalah Sistem Operasi
Makalah Sistem OperasiMakalah Sistem Operasi
Makalah Sistem Operasi
 
Pert.6 deadlock lanjutan
Pert.6 deadlock lanjutanPert.6 deadlock lanjutan
Pert.6 deadlock lanjutan
 
Ppt filsafat pancasila
Ppt filsafat pancasilaPpt filsafat pancasila
Ppt filsafat pancasila
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similaire à OPTIMIZED TITLE FOR SYNCHRONIZATION AND DEADLOCK

Slide3 manajemen proses
Slide3 manajemen prosesSlide3 manajemen proses
Slide3 manajemen prosesHz Tena
 
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxPertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxYaya610291
 
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfDeadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfARYAPUTRAABSHARI
 
Deadlock rahmawati
Deadlock   rahmawatiDeadlock   rahmawati
Deadlock rahmawatisarman yahya
 
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdf
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdfMakalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdf
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdfElmitiodatacp
 
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdf
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdfPenjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdf
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdfARYAPUTRAABSHARI
 
Pertemuan ke 2
Pertemuan ke 2Pertemuan ke 2
Pertemuan ke 2ndriehs
 
5.sinkronisasi proses
5.sinkronisasi proses5.sinkronisasi proses
5.sinkronisasi prosesAditya Asmara
 
Sinkronisasi Proses
Sinkronisasi ProsesSinkronisasi Proses
Sinkronisasi ProsesDEDE IRYAWAN
 
MF427_10_172043.ppt
MF427_10_172043.pptMF427_10_172043.ppt
MF427_10_172043.pptAdanImam1
 
Bernis Sagita - Manajemen proses
Bernis Sagita - Manajemen prosesBernis Sagita - Manajemen proses
Bernis Sagita - Manajemen prosesbelajarkomputer
 

Similaire à OPTIMIZED TITLE FOR SYNCHRONIZATION AND DEADLOCK (20)

Slide3 manajemen proses
Slide3 manajemen prosesSlide3 manajemen proses
Slide3 manajemen proses
 
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxPertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
 
Os ppt.6
Os ppt.6Os ppt.6
Os ppt.6
 
Pert.5 sinkronisasi dan deadlock
Pert.5 sinkronisasi dan deadlockPert.5 sinkronisasi dan deadlock
Pert.5 sinkronisasi dan deadlock
 
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfDeadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
 
Deadlock rahmawati
Deadlock   rahmawatiDeadlock   rahmawati
Deadlock rahmawati
 
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdf
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdfMakalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdf
Makalah Sistem operasi_UAS_Elmi Tiodata_210403010022.pdf
 
Pertemuan ke 6
Pertemuan ke 6Pertemuan ke 6
Pertemuan ke 6
 
8.sinkronisasi
8.sinkronisasi8.sinkronisasi
8.sinkronisasi
 
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdf
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdfPenjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdf
Penjadwalan CPU_Arya Putra Abshari (210209501101)_PTIK C 2021.pdf
 
Pertemuan ke 2
Pertemuan ke 2Pertemuan ke 2
Pertemuan ke 2
 
5.sinkronisasi proses
5.sinkronisasi proses5.sinkronisasi proses
5.sinkronisasi proses
 
Sinkronisasi Proses
Sinkronisasi ProsesSinkronisasi Proses
Sinkronisasi Proses
 
algoritma
algoritmaalgoritma
algoritma
 
Pertemuan 8
Pertemuan 8Pertemuan 8
Pertemuan 8
 
MF427_10_172043.ppt
MF427_10_172043.pptMF427_10_172043.ppt
MF427_10_172043.ppt
 
VI.Sinkronisasi.ppt
VI.Sinkronisasi.pptVI.Sinkronisasi.ppt
VI.Sinkronisasi.ppt
 
Bernis Sagita - Manajemen proses
Bernis Sagita - Manajemen prosesBernis Sagita - Manajemen proses
Bernis Sagita - Manajemen proses
 
Deadlock
DeadlockDeadlock
Deadlock
 
Pengelolaan Proses.pptx
Pengelolaan Proses.pptxPengelolaan Proses.pptx
Pengelolaan Proses.pptx
 

Plus de Alvin Setiawan

Penyelesaian pers-biseksi13
Penyelesaian pers-biseksi13Penyelesaian pers-biseksi13
Penyelesaian pers-biseksi13Alvin Setiawan
 
Penyelesaian persamaan-non-linear
Penyelesaian persamaan-non-linearPenyelesaian persamaan-non-linear
Penyelesaian persamaan-non-linearAlvin Setiawan
 
Pengembangan sistem 1 2
Pengembangan sistem 1 2Pengembangan sistem 1 2
Pengembangan sistem 1 2Alvin Setiawan
 
Modul pelatihan ly_x_untuk_jurnal-feb-2cols
Modul pelatihan ly_x_untuk_jurnal-feb-2colsModul pelatihan ly_x_untuk_jurnal-feb-2cols
Modul pelatihan ly_x_untuk_jurnal-feb-2colsAlvin Setiawan
 
Metode numerik-rinaldi-munir-libre
Metode numerik-rinaldi-munir-libreMetode numerik-rinaldi-munir-libre
Metode numerik-rinaldi-munir-libreAlvin Setiawan
 
Metode numerik-buku-ajar-unila
Metode numerik-buku-ajar-unilaMetode numerik-buku-ajar-unila
Metode numerik-buku-ajar-unilaAlvin Setiawan
 
Met num3 persnonl-inier_baru
Met num3 persnonl-inier_baruMet num3 persnonl-inier_baru
Met num3 persnonl-inier_baruAlvin Setiawan
 
Met num02 persamaan non linier
Met num02 persamaan non linierMet num02 persamaan non linier
Met num02 persamaan non linierAlvin Setiawan
 
Membuat dokumen dengan latex ver.0.3
Membuat dokumen dengan latex   ver.0.3Membuat dokumen dengan latex   ver.0.3
Membuat dokumen dengan latex ver.0.3Alvin Setiawan
 
Membangun website e-commerce_berbasis_php_dan_my_sql
Membangun website e-commerce_berbasis_php_dan_my_sqlMembangun website e-commerce_berbasis_php_dan_my_sql
Membangun website e-commerce_berbasis_php_dan_my_sqlAlvin Setiawan
 
M8 perancangan terinci
M8 perancangan terinciM8 perancangan terinci
M8 perancangan terinciAlvin Setiawan
 

Plus de Alvin Setiawan (20)

Penyelesaian pers-biseksi13
Penyelesaian pers-biseksi13Penyelesaian pers-biseksi13
Penyelesaian pers-biseksi13
 
Penyelesaian persamaan-non-linear
Penyelesaian persamaan-non-linearPenyelesaian persamaan-non-linear
Penyelesaian persamaan-non-linear
 
Pengembangan sistem 1 2
Pengembangan sistem 1 2Pengembangan sistem 1 2
Pengembangan sistem 1 2
 
Pedoman ta2008
Pedoman ta2008Pedoman ta2008
Pedoman ta2008
 
Pbw week 01 basics
Pbw week 01   basicsPbw week 01   basics
Pbw week 01 basics
 
Paper
PaperPaper
Paper
 
Nl eqn lab
Nl eqn labNl eqn lab
Nl eqn lab
 
Modul6
Modul6Modul6
Modul6
 
Modul pelatihan ly_x_untuk_jurnal-feb-2cols
Modul pelatihan ly_x_untuk_jurnal-feb-2colsModul pelatihan ly_x_untuk_jurnal-feb-2cols
Modul pelatihan ly_x_untuk_jurnal-feb-2cols
 
Ml2 f304213
Ml2 f304213Ml2 f304213
Ml2 f304213
 
Micro sim template_2
Micro sim template_2Micro sim template_2
Micro sim template_2
 
Metode numerik-rinaldi-munir-libre
Metode numerik-rinaldi-munir-libreMetode numerik-rinaldi-munir-libre
Metode numerik-rinaldi-munir-libre
 
Metode numerik-buku-ajar-unila
Metode numerik-buku-ajar-unilaMetode numerik-buku-ajar-unila
Metode numerik-buku-ajar-unila
 
Metode regula falsi
Metode regula falsiMetode regula falsi
Metode regula falsi
 
Metode biseksi
Metode biseksiMetode biseksi
Metode biseksi
 
Met num3 persnonl-inier_baru
Met num3 persnonl-inier_baruMet num3 persnonl-inier_baru
Met num3 persnonl-inier_baru
 
Met num02 persamaan non linier
Met num02 persamaan non linierMet num02 persamaan non linier
Met num02 persamaan non linier
 
Membuat dokumen dengan latex ver.0.3
Membuat dokumen dengan latex   ver.0.3Membuat dokumen dengan latex   ver.0.3
Membuat dokumen dengan latex ver.0.3
 
Membangun website e-commerce_berbasis_php_dan_my_sql
Membangun website e-commerce_berbasis_php_dan_my_sqlMembangun website e-commerce_berbasis_php_dan_my_sql
Membangun website e-commerce_berbasis_php_dan_my_sql
 
M8 perancangan terinci
M8 perancangan terinciM8 perancangan terinci
M8 perancangan terinci
 

OPTIMIZED TITLE FOR SYNCHRONIZATION AND DEADLOCK

  • 1. Sinkronisasi dan Deadlock Makalah Sistem Operasi Kelompok Mafazan Sarip Husein Heru Hidayat Alvin Setiawan Wahyu Rezkianto Alif Nur Rachman Universitas Gunadarma
  • 2. Daftar Isi A. 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 .................................................................................................................... 7 B. 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. A. Sinkronisasi Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan tidak konsistennya data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama. Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita memdifikasi producer-consumer code dengan menambahkan suatu variable counter, 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 data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegahrace condition, proses-proses yang berjalan besamaan harus di disinkronisasi. Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada 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 mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya. Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebutCritical Section atau Critical Region. Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan 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 bersama diakses. Terdiri dari: Entry Section: kode yang digunakan untuk masuk ke dalam critical section Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
  • 4. Exit Section: akhir dari critical section, mengizinkan proses lain Remainder Section: kode istirahat setelah masuk ke critical section. 3. Solusi ke Masalah Critical-Section Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu: Mutual exclution Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka. Progress Jika tidak ada proses yang sedang dieksekusi dalam critical section dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda. Bounded Waiting Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum permintaan itu diterima, Hal yang di perhatikan adalah 1. Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed. 2. Tidak ada asumsi mengenai kecepatan relative dan n proses. Algoritma 1 Algoritma 1 mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkan sistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua proses tersebut harus bergantian menggunakan critical section. Algoritma ini menggunakan variabel bernama turn, nilai turn menentukan proses mana yang boleh memasuki 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 akan mengubah 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 selesai menggunakan 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 busy waiting. Sebenarnya busy waiting mesti dihindari karena proses ini menggunakan CPU. Namun untuk kasus ini, penggunaan busy waiting diijinkan karena biasanya proses menunggu hanya berlangsung dalam waktu yang singkat. Pada algoritma ini masalah muncul ketika ada proses yang mendapat giliran memasuki critical section tapi tidak menggunakan gilirannya sementara proses yang lain ingin mengakses critical section. Misalkan ketika turn= 1 dan P1 tidak menggunakan gilirannya maka turn tidak berubah dan tetap 1. Kemudian P0
  • 5. ingin menggunakan critical section, maka ia harus menunggu sampai P1 menggunakan critical section dan mengubah turn menjadi 0. Kondisi ini tidak memenuhi syarat progress karena P0 tidak dapat memasuki critical section padahal saat itu tidak ada yang menggunakan critical section dan ia harus menunggu P1 mengeksekusi non- critical section-nya sampai kembali memasuki critical section. Kondisi ini juga tidak memenuhi syarat bounded waiting karena jika pada gilirannya P1 mengakses critical section tapi P1 selesai mengeksekusi semua kode dan terminate, maka tidak ada jaminan P0 dapat mengakses critical section dan P0-pun harus menunggu selamanya. Algoritma 2 Algoritma 2 juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma ini mengantisipasi masalah yang muncul pada algoritma 1 dengan mengubah penggunaan variabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk critical section. 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 critical section atau flag proses lain bernilai false. Tetapi apabila proses lain membutuhkan critical section(ditunjukkan dengan nilai flag-nya true), maka proses tersebut harus menunggu dan "mempersilakan" proses lain menggunakan critical section-nya. Disini terlihat bahwa sebelum memasuki critical sectionsuatu proses melihat proses lain terlebih dahulu (melalui flag-nya), apakah proses lain membutuhkan critical section atau tidak. Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak membutuhkan 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 harus menunggu 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, P1 men- set flag[1] = true. Kemudian P0 akan mengecek apakah P1 membutuhkan critical section. P0 akan melihat 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 atau tidak, ia akan melihat bahwa flag[0] = true, maka P1 juga akan menunggu P0 selesai menggunakan critical section-nya. Kondisi ini menyebabkan kedua proses yang membutuhkan critical section tersebut akan saling menunggu dan "saling mempersilahkan" proses lain untuk mengaksescritical section, akibatnya malah tidak ada yang mengakses critical section. Kondisi ini menunjukkan bahwa Algoritma II tidak memenuhi syarat progress dan syarat bounded waiting, karena kondisi ini akan terus bertahan dan kedua proses harus menunggu selamanya untuk dapat mengakses critical section.
  • 6. Algoritma 3 Algoritma 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 algoritma ini adalah menggabungkan variabel yang di- sharing pada Algoritma 1 dan Algoritma 2, yaitu variabel turn dan variabel flag. Sama seperti pada Algoritma 1I dan 2, variabel turn menunjukkan giliran proses mana yang diperbolehkan memasuki critical section dan variabel flag menunjukkan apakah suatu proses membutuhkan akses ke critical section atau tidak. Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical section, ia akan mengubah flag-nya menjadi true (memberikan tanda bahwa ia butuh critical section) lalu proses tersebut memberikan turn kepada lawannya. Jika lawannya tidak menginginkan critical section (flag- nya false), maka proses tersebut dapat menggunakan critical section, dan setelah selesai menggunakan critical section ia akan mengubah flag-nya menjadi false. Tetapi apabila proses lawannya juga menginginkan critical section maka proses lawan-lah yang dapat memasuki critical section, dan proses 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 P0 mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang dapat mengakses 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 P1 menyelesaikan critical section dan mengubah flag[1]= false, setelah itu barulah P0 dapat mengakses critical section. Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana yang dapat mengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang bersamaan, kedua proses akan menset masing-masing flag menjadi true (flag[0] = true dan flag[1] = true), dalam kondisi ini P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses critical section 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 terakhir adalah 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 tidak dipenuhi pada Algoritma 1 dan 2 dapat dipenuhi oleh algoritma ini karena ketika ada proses yang ingin mengakses critical section dan tidak ada yang menggunakan critical section maka dapat dipastikan ada proses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapat masuk ke critical section.
  • 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-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok 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 yang mengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaum diselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampai operasi selesai atau diblocked. 2. Operasi Up Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyai bagan sebagai berikut: Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga menjadikan 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 kumpulan prosedur, 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 monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal. 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. 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 diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu. B. Deadlock Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut. Terdapat kaitan antaraoverhead dari mekanisme koreksi dan manfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada real-timeprocess control, mengizinkan deadlock akan membuat sistem menjadi kacau dan membuat sistem tersebut tidak berguna. Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapat membuat 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 bagi terjadinya 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. 2. Resources-Allocation Graph Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan terjadinya. G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1, P2, P3, ...} dan jenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau (Ri, Pj) Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource keprocess menunjukkan sebuah instance dari resource telah dtempatkan ke proses. Process adalah lingkaran,resource adalah kotak, titik-titik merepresentasikan jumlah 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: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada
  • 10. sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX. 5. Mencegah Deadlock Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk. Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971). Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yang secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akan menyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu dengan mengantrikan 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 deadlock Hal 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 yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlockdapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat memulai 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 tidak dimungkinkan 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 proses adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan penomoran masalah 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 daya yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya
  • 11. akandiberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan. Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak memungkinkan 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 cara untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu. 8. Kondisi Tak Aman (Unsafe state) Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan. 9. Algoritma Bankir Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya. Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai 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 sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah kondisi 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 yang diperlukan, yaitu dengan terminasi proses dan pre-emption(mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran besar.