Anda di halaman 1dari 16

MAKALAH

SISTEM OPERASI
“SINKRONISASI & DEADLOCK”

DISUSUN OLEH

NAMA : Katharina Siena Nelo


NIM : 19083000246
KELAS : 4E

FAKULTAS TEKNOLOGI INFORMASI


UNIVERSITAS MERDEKA MALANG 2021
1. Sinkroniasi Data
Definisi sinkronisasi adalah suatu proses dimana proses tersebut saling bersamaan dan saling
berbagi data bersama yang mengakibatkan race condition atau lebih dikenal dengan
inkonsistensi data.
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.

Sebab dan Menanggulangi:


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.

Masalah critical section


Critical section adalah segmen kode yang mengakses data yang digunakan proses secara
bersama sama yang dapat membawa proses itu ke bahaya race condition. Biasanya sebuah
proses sibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang
menuju ke race condition pada sebagian besar waktu. Akan tetapi, biasanya setiap proses
memiliki segmen kode dimana proses itu dapat mengubah variabel, meng-update suatu tabel,
menulis ke suatu file, dan lain-lainnya, yang dapat membawa proses itu ke bahaya race
condition.

Prasyarat Solusi Critical Section


1. Mutual Exclusion. Mutual Exclusion merupakan sebuah jalan yang menjamin jika sebuah
proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain
akan dikeluarkan dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical
section (dari proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan critical
section dari prosesproses tersebut. Dengan kata lain, tidak ada dua proses yang berada di
critical section pada saat yang bersamaan.
a. do {
i. entry section
ii. critical section
iii. exit section
iv. remainder section
b. } while (1);
Setiap proses harus meminta izin untuk memasuki critical sectionnya. Bagian dari kode yang
mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit
section. Bagian kode selanjutnya disebut remainder section. Dari kode di atas, dapat kita lihat
bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section.
2. Terjadi kemajuan (progress). Jika tidak ada proses yang sedang menjalankan critical
section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section,
maka hanya prosesproses yang tidak sedang menjalankan remainder section-nya yang dapat
berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section,
dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak
terbatas (sehingga tidak terjadi deadlock).
Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yang sedang
menjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus
menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan
menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses
seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).
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 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:
·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.

Masalah sinkronisasi Software (perangkat lunak)


Solusi perangkat lunak(Software) Dengan menggunakan algoritma-alogoritma yang nilai
kebenarannya tidak tergantung pada asumsi-asumsi lain, selain itu setiap proses berjalan pada
kecepatan yang bukan nol.
Masalah sinkronisasi hardware (perangkat keras)
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau dengan kata
lain, harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu
eksekusi (sifat mutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan
hardware lebih menekankan kepada usaha-usaha untuk membuat suatu atau sekelompok
instruksi menjadi mutual exclusive.
Pendekatan dari sisi Hardware dapat dibagi menjadi dua:
Processor Synchronous
Memory Synchronous
Processor Synchronous
Central Processing Unit, CPU, mempunyai suatu mekanisme yang dinamakan interrupt. Di
dalam sistim operasi, mekanisme ini digunakan secara intensif, atau dengan kata lain, banyak
konsep-konsep sistim operasi yang menggunakan mekanisme ini. Sebagai contoh : system call,
process scheduling, dsb.
Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada 2 atau lebih
proses yang sedang berjalan di komputer secara concurrent, atau dengan kata lain konsep
time-shared sudah diimplementasikan di sistim operasi.
Sistim time-shared yang sering diimplementasikan dengan algoritma RR (Round Robin),
memanfaatkan mekanisme interrupt di CPU. Jadi di dalam RR ada suatu satuan waktu yg
dinamakan quantum yang mana setiap quantum dibatasi oleh satu software interrupt.
Teknisnya, akan ada suatu interrupt - yang biasanya adalah timer interrupt - yang secara
berkala akan menginterrupt sistim. Pada saat interrupt dilakukan sistim operasi akan segera
melakukan proses pergantian dari proses yang satu ke proses yang lainnya sesuai dengan
algoritma.
Seperti yang telah dikatakan di atas, isu yang ada di sini adalah, ada satu atau sekelompok
instruksi yang tidak dapat diberhentikan sampai satu atau sekelompok instruksi tersebut
selesai.
Adalah sangat jelas bahwa yang membuat suatu instruksi diberhentikan adalah mekanisme
yang di sistim operasi (baca mengenai process scheduling ). Mekanisme ini sangat bergantung
kepada mekanisme interrupt dari hardware. Jadi, jika kita dapat menon-aktifkan interrupt pada
saat critical section tersebut, maka masalah sinkronisasi dapat terselesaikan.
Ternyata para designer komputer melihat celah ini, dan sekarang ini sudah hampir semua
komputer yang ada telah mengimplementasi instruksi mesin yang mana instruksi ini akan
menon-aktifkan serfis interrupt, dan ada instruksi yang lain yang akan mengaktifkan interrupt
tersebut.
Sebagai contoh sederhana, kita akan melihat contoh program dari prosesor Atmel ARM tm
(contoh ini diambil karena prosesor ini mudah didapatkan dan harganya tidak terlalu mahal,
serta ada dev-kitnya, silahkan merujuk ke http://www.atmel.com ).
mainModul :
00 CLI ' masuk ke Critical Section dengan cara
' men-disable interrupt
01 ADD r1,r2 ' Critical Section
02 .... ' Critical Section
03 SBI ' pergi dari Critical Section dengan cara
' men-enable interrupt
04 .. ' Remainder Section

Pada baris ke 0, prosesor akan menon-aktifkan interrupt, instruksi - instruksi selanjutnya tidak
akan diganggu oleh interrupt. Selanjut setelah keluar dari critical section, pada baris 3, prosesor
akan mengaktifkan kembali interrupt sehingga mekanisme scheduling di sistim operasi dapat
berjalan kembali.
Bila kita melihat dari yang di atas, terlihat bahwa dengan mekanisme ini saja sudah cukup
mengatasi isu yang ada. Tetapi ternyata mekanisme ini tidak terlalu berhasil di dalam
lingkungan multiprocessor. Jikalau kita menon-aktifkan interrupt, maka yang dinon-aktifkan
hanya satu prosesor, hal ini dapat mengakibatkan hal - hal yang tidak diinginkan.
Memory Synchronous
Dilihat dari nama mekanismenya, maka kita sudah dapat memprediksi bahwa mekanisme ini
akan menggunakan jasa memori. Memang hal tersebut benar, mekanisme memory
synchronous memakai suatu nilai yang disimpan di memori, dan jikalau suatu proses berhasil
mengubah nilai ini, maka proses ini akan meneruskan ke instruksi selanjutnya, jika tidak, maka
proses ini akan berusaha terus untuk dapat mengubahnya.
Jika dilihat dari paragraf di atas, mekanisme ini lebih cocok dikategorikan sebagai pendekatan
dari software. Tetapi, jika kita perhatikan lebih lanjut, ternyata mekanisme ini memerlukan jasa
hardware. Syarat yang harus dipenuhi agar mekanisme ini dapat berjalan adalah perlunya
hardware mempunyai kemampuan untuk membuat suatu instruksi dijalankan secara atomic.
Pengertian dari instruksi atomic adalah satu atau sekelompok instruksi yang tidak dapat
diberhentikan sampai instruksi tsb selesai. Detil mengenai hal ini akan dibicarakan di bagian -
bagian selanjutnya.
Sebagai contoh, kita dapat memperhatikan contoh program Javatm yang ada di bawah ini :
00 boolean testAndSet( boolean variable[] )
01 {
02 boolean t = variable[0];
03 variable[0] = true;
04 return t;
05 }
.....
56 while (testAndSet(lock)) { /* do nothing */ }
57 // Critical Section
58 Lock[0] = false;
59
// Remainder Section

method testAndSet haruslah bersifat atomic , sehingga method ini dianggap sebagai satu
instruksi mesin. Perhatikan pada baris 56 dimana method ini dipakai. Pada baris ini proses
berusaha untuk mengubah nilai dari variable reference lock. Jikalau ia tidak berhasil maka akan
terus mencoba, tapi jika berhasil maka proses akan masuk ke bagian kritis dan setelah ini
proses akan mengubah nilai dari lock sehingga memberikan kemungkinan proses lain untuk
masuk.
Janganlah bingung dengan lock, boolean [], yang terkesan aneh. Hal ini bukanlah bagian dari
sinkronisasi tetapi hanyalah suatu bagian dari konsep pass-by-reference dan pass-by-value dari
Javatm, untuk lebih lanjut mengenai konsep ini dapat dibaca buku - buku programming javatm.
Satu catatan di sini adalah, contoh ini hanyalah sebuah ilustrasi dan tidak dapat dicompile dan
dijalankan, karena Javatm konsep atomic instruction di Javatm bersifat transparan dari sisi
programmer (akan dijelaskan pada bagian-bagian selanjutnya).
Keunggulan dari memory synchronous adalah pada lingkungan multiprocessor, semua
processor akan terkena dampak ini. Jadi semua proses yang berada di processor, yang ingin
mengakses critical section, meskipun berada di processor yang berbeda - beda, akan berusaha
untuk mengubah nilai yang dimaksud. Sehingga semua processor akan tersinkronisasi.

Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra, 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:
Semaphore dapat diinisialisasi dengan nilai non-negatif.
Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan
Djikstra adalah operasi P dan V.

● 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.
● 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.

Masalah Masalah Klasik Dalam Sinkronisasi


Problem Klasik pada Sinkronisasi Ada tiga hal yang selalu menjadi masalah pada proses
sinkronisasi:
Problem Bounded buffer
Problem Reades and Writer
Problem Dining Philosophers

Problem Bounded buffer


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 Reades and Writer


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.

Sejarah Dining Philosophers Problem


Masalah ini pertama ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun
1965.Masalah ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah
portabilitas. Dalam masalah Dining Philosophers, diketahui sejumlah (N) filusuf yang hanya
memiliki tiga status, berpikir, lapar, dan makan. Semua filusuf berada di sebuah meja makan
bundar yang ditata sehingga di depan setiap filusuf ada sebuah piring berisi mie dan
di antara dua piring yang bersebelahan terdapat sebuah sumpit.

Solusi Dining Philosophers Problem


Solusi Dining – Philosophers Problem ada dua, yakni :
a.Solusi Waiter
Solusi Waiter : solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang
senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang)
sumpit sedang dipakai,orang berikutnya yang ingin memakai sumpit harus meminta izin kepada
sang waiter, yang hanya dapat diberi ketika salah satu sumpit telah selesai terpakai.
b.Solusi Hierarki Resource

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

Problem Dining Philosophers


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.
2. Deadlock
Deadlock secara harfiah adalah kebuntuan, di dalam sistem operasi berarti suatu kondisi di
mana sekumpulan proses tidak dapat berjalan kembali atau tidak adanya komunikasi antar
proses. Definisi lainnya yaitu sekumpulan proses yang terblok yang tiap proses tersebut
memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh
proses di dalam kumpulan tersebut.
.
Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan digunakan
oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan sumber daya yang ada.
Jadideadlock berhubungan erat dengan tersedianya sumber daya dari
komputer.

Karakteristik Deadlock

Menurut Coffman(1971) ada empat kondisi yang dapat menyebabkan terjadinya deadloock.
Keempat kondisi tersebut tidak dapat berdiri sendiri, saling mendukung.
Setelah pada bagian sebelumnya kita telah mengetahui mengenai pengertian dari deadlock dan
bagaimana memodelkannya, sekarang kita akan membahas secara mendalam mengenai
karakteristik dari terjadinya deadlock. Karakteristik-karakteristik ini harus dipenuhi keempatnya
untuk terjadi deadlock. Namun, perlu diperhatikan bahwa hubungan kausatif antara empat
karakteristik ini dengan terjadinya deadlock adalah implikasi. Deadlock mungkin terjadi apabila
keempat karakteristik terpenuhi. Empat kondisi tersebut adalah:

• Mutual Exclusion . Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki
hak milik pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada
satu proses yang menggunakan suatu sumber daya. Proses lain yang juga ingin
menggunakannya harus menunggu hingga sumber daya tersebut dilepaskan oleh
proses yang telah selesai menggunakannya. Suatu proses hanya dapat menggunakan
secara langsung sumber daya yang tersedia secara bebas.
• Hold and Wait . Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling
menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki
minimal satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan
tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat
yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan
proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya bisa
saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil menunggu,
sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses itu pada
akhirnya saling menunggu dan menahan sumber daya miliknya.
• No Preemption . Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber
daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia
selesai menggunakannya. Proses yang menginginkan sumber daya tersebut harus
menunggu sampai sumber daya tersedia, tanpa bisa merebutnya dari proses yang
memilikinya.
• Circular Wait . Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus
yang berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan
sumber daya yang dimiliki proses kedua, proses kedua membutuhkan sumber daya
milik proses ketiga, dan seterusnya sampai proses ke n-1 yang membutuhkan sumber
daya milik proses ke n. Terakhir, proses ke n membutuhkan sumber daya milik proses
yang pertama. Yang terjadi adalah proses-proses tersebut akan selamanya
menunggu. Circular wait oleh penulis diistilahkan sebagai 'Lingkaran Setan' tanpa ujung.
Metode untuk Menangani Deadlock

Pada prinsipnya kita dapat menangani deadlock dengan beberapa cara:


Menggunakan protokol untuk pencegahan atau penghindaran deadlock, memastikan bahwa
sistem tidak akan memasuki kondisi deadlock.
Kita bisa mendeteksi terjadinya deadlock lalu memperbaiki.
Kita juga bisa mengabaikan deadlock, hal ini dilakukan pada sistem operasi berbasis UNIX.

Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan
deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang
sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan.
Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak.
Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses
lain atau tidak. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak
didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada
kondisi deadlock yang dapat berpengaruh terhadap performance system karena sumber daya
tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya
sistem akan berhenti dan harus direstart.

Pencegahan Deadlock

Pencegahannya sebagai berikut:


Masalah Mutual Eksklusif, Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial
untuk satu proses,maka hal ini harus didukung oleh kemampuan sistem operasi. Jadi
diusahakan agar tidak menggunakan kondisi spesial tersebut sehingga sedapat mungkin
deadlock dapat dihindari.

Masalah Kondisi Menunggu dan Memegang Penanggulangan deadlock, dari kondisi ini lebih
baik dan menjanjikan, asalkan kita dapat memegang sumber daya untuk menunggu sumber
daya lain, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya
yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak
mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat
menggunakan algoritma bankir. Sistem operasi atau sebuah protokol mengatur hal ini. Hasil
yang dapat terjadi adalah sumber daya lebih harus dispesifikasikan dan kelaparan sumber
daya, atau proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama
untuk mendapatkan sumber daya yang ia butuhkan.

Masalah tidak preemption, Hal ketiga ialah jangan sampai ada preemption pada sumberv daya
yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protocol. Jadi jika
sebuah proses meminta sumber daya yang tidak dapat ia penuhi saat itu juga, maka proses
mengalami preempted. Dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses
yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi.
Cara lain yaitu dengan mengecek apakah sumber daya yang dicari proses tersedia atau tidak.
Jika ada maka langsung dialokasikan tetapi jika tidak maka kita cek apakah ada proses lain
yang sedang menunggu sumber daya juga. Jika ya maka kita ambil sumber daya dari proses
yang sedang menunggu tersebut dan memberikan kepada proses yang meminta sumber daya
tersebut. Jika tidak tersedia juga maka proses tersebut harus menunggu. Dalam menunggu
beberapa dari sumber dayanya dapat saja dipreempted jika ada proses yang memintanya. Cara
ini efektif untuk proses yang menyimpan dalam memory atau register.

Masalah lingkaran tunggu, Masalah ini dapat ditangani oleh sebuah protocol yang menjaga
agar sebuah proses tidak membuat lingkaran sikus yang dapat mengakibatkan deadlock
dengan cara memberikan penomoran kepada sumber daya, dan bila suatu proses meminta
sumber daya lagi maka ia hanya dapat meminta sumber daya yang nomornya lebih tinggi dari
yang ia minta sebelumnya.

Penghindaran Deadlock

Algoritma Bankir Menurut Djikstra(1965) algoritma penjadwalan dapat menghindari deadlock


dan algoritma penjadwalan tersebut dikenal dengan algoritma bankir. Algoritma ini dapat
digambarkan, ada seorang bankir yang akan meminjamkan kepada peminjam-peminjamnya.
Setiap peminjam memberikan batas pinjaman maksimum. Tentu saja bankir tahu bahwa
peminjam tidak akan meminjam dana maksimum secara langsung melainkan bertahap. Bankir
memprioritaskan kepada peminjam yang meminjam dana lebih banyak, sedangkan yang lain
disuruh menunggu hingga peminjam yang lebih besar mengembalikan dananya, baru setelah
itu ia meminjamkan kepada peminjam yang lain. Jadi algoritma bankir disini mempertimbangkan
apakah permintaan proses sesuai dengan jumlah sumber daya yang ada dan sekaligus
memperkirakan jumlah sumber daya yang mungkin diminta lagi. Jangan sampai ketika ada
proses yang meminta sumber daya tetapi sumber dayanya habis atau tidak ada lagi jika tidak
maka akan terjadi deadlock.
Secara umum algoritma bankir dibagi menjadi 4 struktur data:

1. Tersedia: jumlah sumber daya yang tersedia

2. Alokasi: jumlah sumber daya yang dialokasikan untuk setiap proses

3. Maksimum: jumlah permintaan sumber daya oleh proses

4. Kebutuhan: maksimum-alokasi(sisa sumber daya yang dibutuhkan oleh proses setelah


dikurangi dengan yang dialokasikan)

MENDETEKSI DEADLOCK
Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock, maka
terjadi deadlock. Pada lingkungan ini sistem harus menyediakan :
• Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi.
• Algoritma untuk memperbaiki dari deadlock.

1. Satu Anggota untuk Setiap Tipe Sumber Daya Jika semua sumber daya hanya
mempunyai satu anggota, kita dapat menentukan algoritma mendeteksi deadlock
menggunakan bentuk resource allocation graph yang disebut wait-for graph.
Garis dari Pi → Pj pada wait-for graph menandakan bahwa proses Pi menunggu Pj
melepaskan sumber daya yang dibutuhkan Pi. Garis Pi → Pj terdapat pada wait-for
graph jika dan anya jika resource allocation graph berisi dua garis Pi → Rq dan Rq → Pj
untuk beberapa sumber daya Rq seperti Gambar 6-7. Secara periodik sistem
menggunakan algoritma yang mencari siklus pada graph. Algoritma untuk mendeteksi
siklus pada graph membutuhkan operasi n2 dimana n adalah jumlah titik pada graph.

2. Beberapa Anggota untuk Setiap Tipe Sumber Daya Untuk Tipe sumber daya yang
mempunyai beberapa anggota digunakan algoritma yang sejenis dengan algoritma
Banker dengan struktur daya seperti di bawah ini : • Available : vector panjang m
menandakan jumlah sumber daya yang tersedia untuk setiap tipe sumber daya. •
Allocation : matrik n x m yang mendefinisikan jumlah sumber daya untuk setiap tipe
sumber daya yang sedang dialokasikan untuk setiap proses. • Request : matrik n x m
yang mendefinisikan permintaan setiap proses. Jika Request [I, j] = k, maka proses Pi
meminta k anggota tipe sumber daya Rj.

3. Penggunaan Algoritma Deteksi Untuk menjawab kapan dan berapa sering


menggunakan algoritma deteksi, hal ini tergantung pada : • Seberapa sering terjadi
deadlock. • Berapa proses yang perlu dilakukan roll back. Jika algoritma deteksi
digunakan, terdapat beberapa siklus pada graph, hal ini tidak dapat mengetahui berapa
proses yang deadlock yang menyebabkan deadlock.

Pemulihan Deadlock

1. Terminasi Proses
Abort semua proses yang deadlock Metode ini akan mematahkan deadlock cycle, tetapi bisa
saja proses-proses yang deadlock telah dikomputasi dalam waktu yang lama dan hasil-hasil
komputasi parsial harus dibuang, sehingga ada kemungkinan harus dikomputasi ulang. Abort
satu proses pada satu waktu sampai deadlock tereliminir. Metode ini sangat mungkin
mendatangkan overhead, setelah setiap proses di-abort, algoritma pendeteksian deadlock
harus diminta kembali untuk menentukan apakah masih ada proses-proses yang deadlock. Jika
terminasi parsial digunakan, kita harus menentukan proses-proses deadlock yang mana yang
harus diterminasi. Penentuan ini pada dasarnya berkaitan dengan ekonomi. Kita harus abort
proses-proses yang terminasinya minimum cost. Sayangnya, minimum cost tidak ditentukan
satu hal. Banyak faktor yang mempengaruhi pemilihan proses, mencakup:
Apa prioritas dari proses
Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan
mengkomputasi sebelum menyelesaikan tugasnya
Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses
Berapa sumber daya lagi yang dibutuhkan proses supaya selesai
Berapa banyak proses yang perlu diterminasi Apakah proses interactive atau batch

2. Preempt Sumber Daya


Mengeliminasi deadlock menggunakan preempt sumber daya berarti kita berturut-turut preempt
beberapa sumber daya dari suatu proses dan memberikan sumber daya ini ke proses lain
sampai deadlock cycle patah.
Pada preempt sumber daya terdapat :
Memilih korban

Seperti pada terminasi proses, kita harus menentukan sumber daya dan proses mana yang
akan dipreempt dengan minimum cost. Faktor cost mencakup parameter-parameter seperti
jumlah dari sumber daya yang ditahan proses-proses yang deadlock dan jumlah waktu dari
proses yang telah digunakan selama eksekusinya.

Rollback

Jika kita preempt sebuah sumber daya dari sebuah proses, proses tidak dapat berlanjut dengan
eksekusi normal karena proses kehilangan beberapa sumber daya yang diperlukan. Kita harus
rollback proses ke beberapa safe state dan restart dari state tersebut. Secara umum, sulit untuk
menentukan safe state. Solusi termudah adalah dengan total rollback, abort proses, dan restart.

Starvation

Dalam sebuah sistem di mana pemilihan korban berdasar primer pada faktor cost, dapat terjadi
suatu proses tidak pernah menyelesaikan tugasnya karena suatu sumber daya selalu di-
preempt pada prose yang sama. Kita harus memastikan bahwa sebuah proses dapat dipilih
sebagai korban hanya dengan batasan waktu tertentu. Solusi pada umumnya adalah dengan
menambahkan jumlah rollback ke dalam faktor cost.

Kesimpulan
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.
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. Sinkronisasi dan Deadlock dapat ditanggulangi dengan cara cara
tertentu dan dapat dicegah dalam proses proses tertentu.
DAFTAR PUSTAKA
https://sysvictoryjc.blogspot.com/2018/05/sinkronisasi-dan-deadlock.html

http://wahyupramartha.blogspot.co.id/2012/11/sinkronisasi-dan-deadlock.html

ftp://ftp.gunadarma.ac.id/linux/docs/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-
1/ch23s04.html

https://www.academia.edu/8785351/Sinkronisasi_Proses_Sistem_Operasi_Komputer

http://arna.lecturer.pens.ac.id/Diktat_SO/6.Deadlock.pdf

http://ariskuliah.blogspot.com/2017/12/makalah-sinkronisasi-data-dan-deadlock.html

https://guruinformatika.blogspot.co.id/2015/05/makalah-deadlock-sistem-operasi.html

https://docplayer.info/46648639-Sinkronisasi-deadlock-agus-pamuji-sistem-operasi-sinkronisasi-
deadlock.html

Anda mungkin juga menyukai