Anda di halaman 1dari 13

MAKALAH

SINKRONISASI DAN DEADLOCK

DISUSUN OLEH :

- NURSAKINAH MUHARROMMI
- SULVIA RIZKY
- VISNU CHANDRA
- MARLIANI
- DERI EKO SULISTIO

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DUMAI


TA. 2014-2015
SINKRONISASI DAN DEADLOCK

 Sinkronisasi
Pengertian Sinkronisai
Sinkronisasi adalah Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan
inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk
memastikan eksekusi dari proses kerjasama. Tujuan dari sinkronisasi itu sendiri
ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa
proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat
berjalan dengan baik dan sesuai apa yang di harapkan.

Manfaat Sinkronisasi
 Akses - akses yang dilakukan secara bersama-sama ke data yang sama, dapat
menyebabkan data menjadi tidak konsisten.
 Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk
memastikan pemintaan ekseskusi dari proses yang bekerja.
 Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data
secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai
terakhir.
 Untuk menghindari Race Condition, proses-proses secara bersamaan harus
disinkronisasikan.

Perangkat Sinkronisasi

 Instruksi Test and Set. Instruksi Atomik yang dapat digunakan untuk menangani
masalah critical section.
 Semaphore sebuah variabel yang hanya dapat diakses oleh dua buah operasi standard
yaitu increment dan decrement
Ada dua jenis semaphore yaitu Binary Semaphore dan Counting Semaphore.
Semaphore berfungsi untuk menangani Critical Section, Alokasi Resource,
Sinkronisasi Antar Proses Monitor digunakan untuk menangani masalah yang muncul
karena pemakainan semaphore. Monitor menjamin Mutual Exclusion. Untuk
menangani masalah sinkronisasi yang lebih rumit monitor menyediakan condition
variable, JVM mengimplementasikan monitor. Monitor JVM bekerja dengn object
locking dan method – method wait() serta notify(). Monitor JVM dapat diunakan
dengan keyword synchronized.

Masalah Klasik Sinkronisasi dan Solusinya

Ada tiga hal yang selalu memjadi masalah pada proses sinkronisasi:

 Problem Bounded buffer.
 Problem Reades and Writer.
 Problem Dining Philosophers.
Bounded buffer merupakan suatu struktur data yang mampu untuk menyimpan beberapa
nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer
ini akan mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi
sebuah piring, ketika ingin mengambil piring maka tumpukan yang paling atas yang akan
terambil.Jadi piring terakhir yang dimasukan akan pertama kali diambil. Solusi Bounded
– Buffer : Solusi Shared Memory untuk Bounded – Buffer, mengijinkan (n-1) items di
dalam buffer untuk suatu waktu tertentu.

Problem Readers-Writers
Problem lain yang terkenal adalah readers-writer problem yang memodelkan proses yang
mengakses database. Sebagai contoh sebuah sistem pemesanan sebuah perusahaan
penerbangan, dimana banyak proses berkompetisi berharap untuk membaca (read) dan
menulis (write). Hal ini dapat diterima bahwa banyak proses membaca database pada
saat yang sama, tetapi jika suatu proses sedang menulis database, tidak boleh ada proses
lain yang mengakses database tersebut, termasuk membaca database tersebut.
Solusi Readers and Writers Problem
Pembaca di prioritaskan
Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer
yang sedang menunggu. Dengan katalain, Jika ada reader yang datang ketika reader lain
sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang
tersebut akan langsung mendapat giliran untuk membaca.Writer akan ditunda
pengerjaannya.
Penulis di prioritaskan

Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang
memulai untuk membaca data.

Kedua jenis proses mempunyai prioritas yang sama. Tidak ada prioritas khusus yang
diberikan kepada kedua jenis proses

Problem Dining Philosopers
Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang
beliau sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan
sebagai berikut: Lima orang filosuf duduk mengelilingi sebuah meja bundar. Masing-
masing filosof mempunyai sepiring spageti. Spageti-spageti tersebut sangat licin dan
membutuhkan dua garpu untuk memakannya. Diantara sepiring spageti terdapat satu
garpu. Kehidupan para filosof terdiri dari dua periode, yaitu makan atau berpikir. Ketika
seorang filosof lapar, dia berusaha untuk mendapatkan garpu kiri dan garpu kanan
sekaligus. Jika sukses dalam mengambil dua garpu, filosof tersebut makan untuk
sementara waktu, kemudian meletakkan kedua garpu dan melanjutkan berpikir.
Pertanyaan kuncinya adalah, dapatkah anda menulis program untuk masing-masing
filosof yang melakukan apa yang harus mereka lakukan dan tidak pernah mengalami
kebuntuan. Prosedur take-fork menunggu sampai garpu-garpu yang sesuai didapatkan
dan kemudian menggunakannya. Sayangnya dari solusi ini ternyata salah. Seharusnya
lima orang filosof mengambil garpu kirinya secara bersamaan. Tidak akan mungkin
mereka mengambil garpu kanan mereka, dan akan terjadi deadlock.

Solusi Dining – Philosophers Problem ada dua, yakni :

Solusi Waiter

Solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa


mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) garpu
sedang dipakai,orang berikutnya yang ingin memakai garpu harus meminta izin kepada
sang waiter, yang hanya dapat diberi ketika salah satu garpu telah selesai terpakai.

Solusi Hierarki Resource

Solusi Hirarki Resource: resources (garpu) di meja makan telah diberi susunan hirarki.
Setiap permintaan orang terhadap sebuah garpu harus dilakukan pada susunan tertentu,
dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil
garpu dimanapun diatas meja misalkan setiap garpu diberi nomor sebagai tingkat hirarki
dari 1 sampai 5, seseorang hanya dapat mengambil garpu dengan nomor yang paling
rendah, kemudian mengambil garpu yang setingkat lebih tinggi. Ketika ia hendak
mengembalikannya, orang itu harus meletakkan garpu dengan nomor yang lebih tinggi
terlebih dahulu, lalu yang rendah.

Masalah Lain Sinkronisasi

    Race Conditon adalah situasi di mana beberapa proses mengakses dan


memanipulasi data bersama pada saat besamaan.

    Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana
sumber daya bersama diakses.

Cara Mengatasi Sinkronisasi


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.

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 shared memory diakses disebut Critical 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 yakni :

 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

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
 DEADLOCK
Pengertian Deadlock
Deadlock adalah keadaan dimana 2 atau lebih proses saling menunggu meminta
resources untuk waktu yang tidak terbatas lamanya. Analoginya seperti pada kondisi
jalan raya dimana terjadi kemacetan parah. Deadlock adalah efek samping dari
sinkronisasi, dimana satu variabel digunakan oleh 2 proses. Misalkan pada suatu
komputer terdapat dua buah program, sebuah tape drive dan sebuah printer. Program
A mengontrol tape drive, sementara program B mengontrol printer. Setelah beberapa
saat, program A meminta printer, tapi printer masih digunakan. Berikutnya, B
meminta tape drive, sedangkan A masih mengontrol tape drive. Dua program tersebut
memegang kontrol terhadap sumber daya yang dibutuhkan oleh program yang lain.
Tidak ada yang dapat melanjutkan proses masing-masing sampai program yang lain
memberikan sumber dayanya, tetapi tidak ada yang mengalah. Kondisi inilah yang
disebut Deadlock atau pada beberapa buku disebut Deadly Embrace
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 antara overhead 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-time process control, mengizinkan deadlock akan membuat sistem menjadi
kacau dan membuat sistem tersebut tidak berguna.

Resource (Sumber Daya)

Ada 2 tipe resource, yaitu :


 Preemptable resource
 Resoource yang dapat dibersihkan dari proses yang menggunakannya tanpa efek
yang buruk.
 Mudah diatasi dengan cara realokasi resource dari satu proses ke yang lainnya.
 Nonpreemptable resource
 Resoource yang tidak dapat dibersihkan dari proses yang menggunakannya tanpa
menyebabkan komputer fail.

Penyebab Deadlock
 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.
 Circular Waiting : Kondisi yang menyatakan bahwa adanya rantai saling meminta
sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
 No Preemptive : Kondisi dimana suatu sumber daya yang sedang berada pada
suatu proses tidak dapat diambil secara paksa dari proses tersebut sampai proses itu
melepaskannya.
 Apabila ada salah satu dari antara 4 syarat diatas yang tidak terpenuhi,maka tidak
bisa disebut dengan Deadlock.
Cara Mengatasi Deadlock
 Mengabaikan adanya deadlock.
 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.
 Membiarkan deadlock untuk terjadi, ini membutuhkan dua metode yang saling
mendukung, yaitu: Pendeteksian deadlock, untuk mengidentifikasi
ketika deadlock terjadi. Dan pemulihan deadlock, mengembalikan kembali sumber
daya yang dibutuhkan pada proses yang memintanya.
 Pendekatan yang paling sederhana untuk mengatasi deadlock 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.
Cara Lain untuk mengatasi Deadlock :
 Prevention : memastikan paling sedikit satu  penyebab Deadlock tidak berlaku
 Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama
sama
 Hold and Wait : memaksa sebuah proses untuk melepaskan resource
yangdimilikinya ketika meminta resource baru
 Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
 No Preemption : membolehkan adanya preemption
 Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock,
Algoritma, Banker
 Resource manager menolak proses yang meminta resource yang berpotensi
deadlock
 Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut
akan dipaksa untuk melepaskan resource yang sudah dimiliknya.
 Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya,
kemudian melakukan recovery, Algoritma Ostrich
 Membiarkan deadlock terjadi lalu mendeteksinya kemudian melakukan tindakan
recovery seperlunya
 Algoritma yang paling dikenal adalah algoritma Ostrich
 Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat
checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil.
Cara Menghindari Deadlock
 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.
 Kondisi Tak Aman (Unsafe state) : Suatu state dinyatakan sebagai unsafe state
jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda
dengan menjalankan proses-proses dengan suatu urutan
Deadlock di Linux
 Linux dengan kernel versi 2.4 mengalami deadlock pada sistem dengan prosesor
lebih dari 2 unit. Deadlock ini pada umumnya terjadi bila akses melalui Ethernet
dilakukan, terutama bila melakukan teaming pada jaringan. Proses akan terblock
dan saling menunggu resource Ethernet tersebut bebas. Beberapa kasus deadlock
juga terjadi ketika OS Linux dijalankan dari kondisi sleep, proses yang mengakses
USB device akan mengalami deadlock hal ini disebabkan fungsi scheduler pada
kernel yang digunakan tidak menyimpan state sebelum sleep, sehingga ketika
kernel dijalankan kembali, Proses-proses yang mengakses USB device tersebut
menunggu giliran mengakses, sementara scheduler belum menjadwalkan masing-
masing proses. Penundaan penjadwalan sebuah proses selama tak terhingga
sementara sistem mengadakan alokasi sumber daya untuk proses yang lain.
Penyebabnya adalah prioritas. Cara mengatasinya dengan “aging” yaitu prioritaas
naik dengan bertambahnya waktu.
Model Deadlock
 Urutan kejadian pengoperasian perangkat I/O adalah
 meminta / request : meminta palayanan I/O
 memakai / use : memakai perangkat I/O
 melepaskan / release : melepaskan pamakaian perangkat I/O
 Model deadlock dua proses dan dua sumber daya deadlock dapat
digambarkan sebagai graph.
 Misalnya :
 dua proses, P0 dan P1
 dua sumber daya kritis, R0 dan R1
 proses P0 dan P1 harus mengakses kedua sumber daya tersebut

kondisi berikut dapat terjadi :


 R0 diberikan ke P0 (P0 meminta sumber daya R0), ditandai busur (edge) berarah
dari proses P0 ke sumber daya R0.
 sedangkan sumber daya R1 dialokasikan ke P1, ditandai dengan busur (edge)
berarah dari sumber daya R1 ke proses P1.
 Skenario yang menimbulkan deadlock dapat terjadi sebagai berikut :
 P0 dialokasikan R0
 P1 dialokasikan R1
Kemudian,
 P0 sambil masih menggenggam R0, meminta R1
 P1 sambil masih menggenggam R1, meminta R0
 Kejadian ini mengakibatkan deadlock karena sama-sama akan saling
menunggu. Graph deadlock ini akan digambarkan sebagai graph melingkar.
Terjadinya deadlock ditandai munculnya / terjadinya graph melingkar. Karena
untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus, maka
kedua proses akan saling menunggu sumber daya lain selamanya. Tak ada
proses yang dapat melepaskan sumber daya yang telah dipegangnya karena
menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses
dalam kondisi deadlock, tidak dapat membuat kemajuan apapun. Deadlock
tidak hanya terjadi pada dua proses dan dua sumber daya, deadlock dapat
terjadi dengan melibatkan lebih dari dua proses dan dua sumber daya.

Syarat-syarat terjadinya deadlock


 Mutual exclution condition
 Tiap sumber daya saat itu diberikan pada tepat satu proses / proses meng-
klaim kontrol eksklusif terhadap sumber daya yang dibutuhkannya.
 Hold and wait condition / kondisi genggam dan tunggu
 Proses-proses yang sedang menggenggam sumber daya yang telah
dialokasikan untuknya sementara menunggu sumber daya – sumber daya
tambahan yang baru.
 Non-preemption condition / kondisi non-preemption
 Sumber daya – sumber daya yang sebelumnya diberikan tidak dapat diambil
paksa dari proses sampai sumber daya tersebut digunakan sampai selesai.
Sumber daya – sumber daya harus secara eksplisit dilepaskan dari proses yang
menggenggamnya.
 Circular wait condition / kondisi menunggu secara sirkular Harus terdapat
rantai sirkuler / satu lingkaran proses dari dua proses atau lebih dimana setiap
proses memegang satu atau lebih sumber daya yang diminta oleh proses
berikutnya pada lingkaran tersebut, masing-masing menunggu sumber daya
yang digenggam oleh anggota berikutnya pada rantai itu. Ketiga syarat
pertama merupakan syarat perlu bagi terjadinya deadlock. Keberadaan
deadlock selalu berarti terpenuhi kondisi-kondisi diatas, tidak mungkin terjadi
deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat
ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi
deadlock. Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi.
Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock.
Bila salah satu dari kondisi tidak terpenuhi maka deadlock tidak terjadi.
Metode-metode mengatasi deadlock
 deadlock prevention / metode pencegahan terjadinya deadlock pengkondisian
sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan
merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Jika
mulainya satu atau lebih proses akan menyebabkan terjadinya deadlock,
proses tersebut tidak akan dimulai sama sekali.tiap proses harus meminta
resource yang dibutuhkan sekaligus dan tidak bisa berjalan sampai semua di
dapat (untuk “wait for”)jika ada resourcce yang tidak terpenuhi, yang lainnya
harus dilepas (untuk “no preemption”) urutkan tipe-tipe resource secara linier /
linier ordering (untuk “circular wait”)
 deadlock avoidance / metode penghindaran terjadinya deadlock
Menghindarkan kondisi yang paling mungkin menimbulkan deadlock agar
memperoleh sumber daya lebih baik. Penghindaran bukan berarti
menghilangkan semua kemungkinan terjadinya deadlock. Jika sistem operasi
mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem
menolak / menghindari pengaksesan itu. Dengan demikian menghindari
terjadinya deadlock. Contohnya dengan menggunakan algoritma Banker yang
diciptakan oleh Dijkstra.
 deadlock detection and recovery / metode deteksi dan pemulihan dari
deadlock Deteksi digunakan pada sistem yang mengijinkan terjadinya
deadlock, dengan memeriksa apakah terjadi deadlock dan menentukan proses
dan sumber daya yang terlibat deadlock secara presisi. Begitu telah dapat
ditentukan, sistem dipulihkan dari deadlock dengan metode pemulihan.
Metode pemulihan dari deadlock sistem sehingga beroperasi kembali, bebas
dari deadlock. Proses yang terlibat deadlock mungkin dapat menyelesaikan
eksekusi dan membebaskan sumber dayanya.
Pencegahan deadlock
 Tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan
tidak berlanjut sampai semuanya diberikan.
 Jika proses telah sedang memegang sumber daya tertentu, untuk permintaan
berikutnya proses harus melepas dulu sumber daya yang dipegangnya. Jika
diperlukan, proses meminta kembali sekaligus dengan sumber daya yang baru.
 Beri pengurutan linier terhadap tipe-tipe sumber daya pada semua proses,
yaitu jika proses telah dialokasikan suatu tipe sumber daya, proses hanya
boleh berikutnya meminta sumber daya tipe pada urutan yang berikutnya.
 Saran pencegahan deadlock diatas merupakan cara meniadakan salah satu dari
syarat perlu. Syarat perlu pertama jelas tidak bisa ditiadakan, kalau tidak
menghendaki kekacauan hasil.
Strategi Burung Onta
 Strategi ini mengasumsikan kejadian deadlock jarang terjadi jika dibandingkan
dengan kejadian komputer crash. Strategi ini disebut strategi burung onta
karena kabar yang telah tersebar (yang sebenarnya tidak benar) bahwa burung
onta akan menyembunyikan kepalanya ke tanah bila mengetahui adanya
bahaya yang mengancamnya. Sehingga solusi yang dilakukan justru
sebenarnya tak memperdulikan adanya masalah. Stategi ini sebenarnya berarta
adalah sama sekali tidak berusaha mengatasideadlock / tak ada metoda sama
sekali untuk mengatasi masalah deadlock.
Penghindaran deadlock
 Adalah hanya memberi akses ke permintaan sumber daya yang tidak mungkin
menimbulkan deadlock.

Anda mungkin juga menyukai