Anda di halaman 1dari 19

MAKALAH

SISTEM OPRASI
“SINKRONISASI dan DEADLOCK”

Di Susun Oleh ;
 Agung Yusuf (21071064)
 Fitri Yani (21071032)
 Putri Endang Kurniawati (21071043)
 Pendi Supratman (21071005)
 Welly Andra Tegar Abizar (21071008)

PROGRAM STUDI SISTEM INFORMASI


SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN
KOMPUTER DIAN CIPTA CENDIKIA KOTABUMI
KATA PENGANTAR
Segala puji syukur kami panjatkan kehadirat Allah SWT yang telah melimpahkan
segala rahmat dan karunia-Nya, tidak lupa kami ucapkan banyak terimakasih
kepada Bapak heri haerudin Selaku dosen Pengantar Sistem Operasi, Sehingga
kami dapat menyelesaikan Makalah yang berjudul “ SINKRONISASI DATA
DAN DEADLOCK “ ini yang merupakan salah satu syarat untuk memenuhi nilai
dari mata kuliah Sistem Operasi.
Dalam makalah ini membahas tentang Sinkronisasi data dan Deadlock, Jika
Makalah ini masih kurang lengkap, kami selaku penyusun telah berusaha sebaik
mungkin untuk menysun makalah ini agar dapat dimengerti dan dipahami  dan
kami memerlukan kritik dan saran agar dapat meningkatkan makalah kami.
Semoga Allah SWT selalu memberikan petunjuk kepada kita dalam pembentukan
generasi yang maju. Akhir kata kami ucapkan terima kasih

ii
DAFTAR ISI
HALAMAN SAMPUL.....................................................................................
KATA PENGANTAR......................................................................................ii
DAFTAR ISI.....................................................................................................iii
BAB.1 PENDAHULUAN.................................................................................1
1. Latar Belakang......................................................................................1
BAB.2 PEMBAHASAN....................................................................................2
A. Sinkronisasi...........................................................................................2
1. Masalah Critical Section................................................................2
2. Sinkronisasi Hardware...................................................................3
3. Sinkronisasi Software.....................................................................4
4. Semaphore.......................................................................................5
5. Masalah-Masalah Klasik Dalam Sinkronisasi.............................7
B. Deadlock................................................................................................8
1. Model Sistem...................................................................................8
2. Karakteristik Deadlock..................................................................9
3. Metode Penanganan Deadlock......................................................12
4. Pencegahan Deadlock.....................................................................12
5. Penghindaran Deadlock.................................................................13
6. Pendeteksian Deadlock...................................................................13
7. Recovery Deadlock.........................................................................14
8. Pendekatan Kombinasi Untuk Menghindari Deadlock..............15
BAB.3 PENUTUP.............................................................................................16
1. Kesimpulan............................................................................................16

2.

iii
BAB 1
PENDAHULUAN

1. LATAR BELAKANG
Sistem operasi adalah seperangkat program yang mengelola sumber
daya perangkat keras komputer atau hardware, dan menyediakan layanan
umum untuk aplikasi perangkat lunak. Sistem operasi adalah jenis yang
paling penting dari perangkat lunak  dalam sistem komputer. Tanpa sistem
operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer
mereka, kecuali program aplikasi booting. Untuk fungsi-fungsi perangkat
keras seperti sebagai masukan dan keluaran dan alokasi memori, sistem
operasi bertindak sebagai perantara antara program aplikasi dan perangkat
keras komputer, meskipun kode aplikasi biasanya dieksekusi langsung oleh
perangkat keras dan seringkali akan menghubungi OS atau terputus oleh itu.
Sistem operasi yang ditemukan pada hampir semua perangkat yang berisi
komputer-dari ponsel dan konsol permainan video untuk superkomputer dan
server web.
Sistem Operasi yang ada pada jaman sekarang ini semakin banyak,
canggih dan tentu saja semakin berkembang. Meskipun Sistem Operasi yang
digunakan pada masa sekarang ini kebanyakan menggunakan Windows,
bukan berarti Sistem Operasi yang lain mati ( tidak ada atau punah ).
Sebagai contoh, masih ada Sistem Operasi yaitu Linux. Dalam Sistem
Operasi, banyak hal yang harus dipahami. Bukan sekedar memahami
bagaimana menginstall aplikasi, menghapus virus, memberikan proteksi
virus bagi laptop maupun komputer. Bukan sekedar itu saja. Didalam Mata
Kuliah Sistem Operasi ini, diajarkan mengenai manajemen memory, CPU,
beberapa Algoritma seperti FCFS ( First Come First Served ), Round Robin,
SJF, dan lain sebagainya. Sistem operasi mempunyai penjadwalan yang
sistematis mencakup perhitungan penggunaan memori, pemrosesan data,
penyimpanan data, dan sumber daya lainnya.
2.

iv
BAB 2
PEMBAHASAN

A. SINKRONASI
Suatu sistem operasi modern merupakan suatu sistem yang besar dan
kompleks sehingga strukturnya harus dirancang dengan hati-hati dan
saksama supaya dapat berfungsi seperti yang diinginkan serta dapat
dimodifikasi dengan mudah.
Struktur sistem operasi merupakan komponen-komponen sistem operasi
yang dihubungkan dan dibentuk di dalam kernel. Ada beberapa struktur
sistem operasi dan pernah dicoba, diantaranya sebagai berikut:

1. Masalah Critical Section


Critical Section adalah dengan mendesain sebuah protokol di mana
proses-proses dapat menggunakannya secara bersama-sama. Setiap
proses harus ‘meminta izin’ untuk memasuki critical section-nya.
Bagian dari kode yang mengimplementasikan izin ini disebut entry
section. Akhir dari critical section itu disebut exit section. Bagian kode
selanjutnya disebut remainder section.
Struktur umum dari proses Pi yang memiliki segmen critical
section adalah :

do {
entry section
critical section
exit section
remainder section
} while (1);

Solusi dari masalah critical section harus memenuhi tiga


syarat berikut:
1) Mutual Exclusion.
Jika suatu proses sedang menjalankan  critical section-nya,
maka proses-proses lain tidak dapat menjalankan critical section
mereka. Dengan kata lain, tidak ada dua proses yang berada
dicritical section pada saat yang bersamaan.

2) Terjadi kemajuan (progress).


Jika tidak ada proses yang sedang menjalankan critical section-
nya dan ada proses-proses lain yang ingin masuk ke critical
section, maka hanya proses-proses yang yang sedang berada
dalamentry section saja yang dapat berkompetisi untuk
mengerjakan critical section.

3) Ada batas waktu tunggu (bounded waiting).


Jika seandainya ada proses yang sedang menjalankan critical
section, maka proses lain memiliki waktu tunggu yang ada

v
batasnya untuk menjalankan critical section -nya, sehingga dapat
dipastikan bahwa proses tersebut dapat mengakses critical section-
nya (tidak mengalamistarvation: proses seolah-olah berhenti,
menunggu request akses ke critical sectiondiperbolehkan).

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.

2. Sinkronisasi Hardware
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual
exclusive/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

vi
Mutual exclusive = Jika proses Pi sedang mengeksekusi critical
section maka tidak ada proses lain yang dapat mengeksekusi dalam
critical section mereka.

3. Sinkronisasi Software
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.
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, dan sebagainya. 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

vii
pada saat critical section tersebut, maka masalah sinkronisasi dapat
terselesaikan.

4. Semaphore
Semaphore adalah sistem sinyal yang digunakan untuk
berkomunikasi secara visual. Dalam software, semafor adalah sebuah
variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses
melalui dua operasi standar, yaitu increment dan decrement. Semaphore
digunakan untuk menyelesaikan masalah sinkronisasi secara umum.
Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau
lebih dari sama dengan 0. Konsep semaphore pertama kali diajukan
idenya oleh Edsger Dijkstra pada tahun 1967.
Operasi standar pada semaphore (dalam bahasa pemrograman C).
Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan
Verhogen (increment). Fungsi wait dipanggil ketika thread akan
memasuki critical section-nya atau ketika thread akan memakai
resource yang tersedia. Jika sem_value kurang dari sama dengan 0,
thread tersebut harus menunggu sampai thread lain memanggil fungsi
buka. Fungsi buka dipanggil ketika thread meningggalkan critical
section-nya atau ketika melepaskan resource yang telah digunakannya.
Tentu saja kedua operasi tersebut harus bersifat atomik karena
sem_value dapat diakses oleh beberapa proses (shared resource).
Semaphore memiliki dua jenis, yaitu:
 Binary semaphore,
Semaphore ini hanya memiliki nilai 1 atau 0. Sering juga disebut
sebagai semafor primitive
 Counting semaphore
Semaphore ini memiliki nilai 0, 1, serta integer lainnya. Banyak
sistem operasi yang tidak secara langsung mengimplementasikan
semafor ini, tetapi dengan memanfaatkan binary semaphore

Fungsi Semaphore
 Mutual exclusion
Sesuai dengan prinsip mutual exclusion, jika suatu thread
sedang berada dalam critical section-nya, thread lain harus
menunggu thread tersebut keluar dari critical section-nya sebelum
dapat memasuki critical section-nya sendiri. Di sinilah semaphore
digunakan, thread yang akan memasuki critical section-nya akan
memanggil fungsi kunci terlebih dahulu. Jika tidak ada thread lain
yang sedang berada dalam critical section, thread ini akan
memasuki critical section-nya. Jika terdapat thread lain yang
sedang berada dalam critical section-nya, thread ini harus
menunggu.Setelah thread keluar dari critical section-nya, thread
tersebut akan memanggil fungsi buka sehingga sem_value akan
naik menjadi lebih dari 0, dan satu (dari beberapa) thread yang
sedang menunggu akan mendapatkan giliran untuk memasuki
critical section-nya.

viii
Sebagai contoh, misalnya terdapat dua buah thread yang
sedang berjalan bersamaan:
Thread A: thread B: count = count + 1; count = count + 1;
Thread A dan B mengakses variabel yang sama, yaitu count
sehingga thread A dan B harus berjalan satu-satu. Untuk itu
digunakan semaphore mutex yang berupa binary semaphore
dengan nilai awal 1.

 Resource controller
Contoh: bayangkan sebuah restoran yang setiap malamnya
ramai dikunjungi pelanggan. Kapasitas restoran terbatas, tetapi
pemilik restoran memiliki kebijakan bahwa semua pengunjung
yang datang akan mendapatkan kesempatan untuk makan, dengan
konsekuensi yaitu pelanggan harus sabar menunggu gilirannya.
Oleh karena itu, dikerahkanlah pegawai restoran untuk menahan
tamu di luar jika restoran penuh lalu mempersilahkan tamu masuk
jika tempat telah tersedia. Dari analogi di atas, pelanggan adalah
thread, kapasitas restoran adalah resource, dan pegawai restoran
adalah semaphore. Semaphore menyimpan banyaknya resource
yang tersedia. Saat thread ingin memakai resource ia akan
memanggil fungsi kunci. Jika resource masih tersedia, thread bisa
langsung menggunakannya, sebaliknya jika semua resource sedang
dipakai, thread tersebut harus menunggu. Setelah resource selesai
dipakai thread akan memanggil fungsi buka sehingga resource
yang bebas bertambah.

 Sinkronisasi antar-proses
Ada kalanya suatu thread memerlukan resource yang
dihasilkan oleh thread lainnya. Oleh karena itu dibutuhkan suatu
mekanisme untuk mengatur urutan eksekusi thread. Mekanisme ini
dilakukan dengan memanfaatkan semaphore.
Sebagai contoh, misalnya terdapat dua buah thread yang
sedang berjalan bersamaan:
Thread A: thread B: count = count + 1; count = count * 2;
Nilai awal dari variabel count adalah 5, nilai akhir yang diinginkan
adalah 12, oleh karena itu thread A harus dieksekusi sebelum
thread B. Agar hal ini dapat terjadi dibutuhkan suatu semaphore
mutex yang merupakan sebuah binary semaphore dengan nilai
awal 0.
Thread A: thread B: count = count + 1; kunci(mutex);
buka(mutex); count = count * 2; Thread B akan menunggu sampai
eksekusi thread A selesai sebelum melanjutkan.

Implementasi Semaphore
 Windows

ix
Fungsi yg dipakai adalah Create Semaphore biasanya digunakan
untuk membatasi jumlah thread yang memakai suatu resource
secara bersamaan
 Java
Semaphore di Java bersifat transparan
 Programmer
Java™ menyembunyikan Semaphore dibalik konsep

5. Masalah Klasik Sinkronisasi


Masalah Klasik Sinkronisasi dapat dibedakan menjadi 3 :
 Bounded – Buffer Problem
 Readers and Writers Problem
 Dining Philosophers Problem

1. Pengertian Bounded –Buffer Problem


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.
Contoh Kasus Bounded – Buffer Pada bagian ini akan dicontohkan
suatu produser konsumer. produser akan menghasilkan suatu barang dan
konsumer akan mengkonsumsi barang yang dihasilkan oleh produser.
produser dan konsumer ini akan mengakses bounded buffer yang sama.
produser setelah menghasilkan suatu barang dia akan menaruh barang itu
di bounded buffer sebaliknya konsumer ketika membutuhkan suatu
barang, dia akan mengambilkannya dari bounded buffer.
Solusi Bounded – Buffer Problem Solusi Shared Memory untuk
Bounded – Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu
waktu tertentu.

2. Pengertian Readers and Writers Problem


Readers and Writers Problem adalah problem yang memodelkan
proses yang mengakses database. Masalah ini timbul ketika ada dua
proses atau lebih berbagi data yang sama. Data yang dimaksud disini
bisa berbentuk buffer, file atau objek dari suatu program
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 kata lain,
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.

x
 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.

3. Sejarah Dining Philosophers Prolem


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

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

B. DEADLOCK
1. Model Sistem
Pada sistem terdapat beberapa sumber daya (resource) yang
digunakan untuk proses-proses untuk menyelesaikan task. Sumber
daya yang pada sistem terdiri dari tipe resource CPU cycle, ruang
memori, perangkat I/O yang disebut dengan tipe sumber daya R1,
R2, . . ., Rm. Setiap tipe sumber daya Ri mempunyai beberapa anggota

xi
Wi. Setiap proses yang menggunakan sumber daya menjalankan urutan
operasi sebagai berikut :
a) meminta (request) : meminta sumber daya
b) memakai (use) : memakai sumber daya
c) melepaskan (release) : melepaskan sumber daya

2. Karakteristik Deadlock
Kondisi yang Diperlukan Deadlock terjadi bila terdapat empat
kondisi berikut ini secara simultan.
a) Mutual Exclusion
Hanya satu proses pada satu waktu yang dapat menggunakan
sumber daya.

b) Genggam dan Tunggu (Hold and Wait)


Suatu proses membawa sedikitnya satu sumber daya menunggu
mendapatkan tambahan sumber daya baru yang dibawa oleh proses

c) Resource Allocation Graph Deadlock


Dapat digambarkan lebih presisi dengan menggunakan graph
berarah yang disebut resource allocation graph. Graph terdiri dari
himpunan titik V dan garis E. Himpunan titik (vertex) V dibagi
menjadi dua tipe yaitu himpunan proses yang aktif pada sistem P =
{P1, P2, ..., Pn} dan tipe sumber daya pada sistem R = {R1, R2, ...,
Rm} Garis berarah dari proses Pi ke tipe sumber daya Rj
dinotasikan dengan Pi → Rj artinya proses Pi meminta satu anggota
dari tipe sumber daya Rj dan sedang menunggu sumber daya
tersebut. Garis berarah dari tipe sumber daya Rj ke proses Pi
dinotasikan dengan Rj → Pi artinya satu anggota tipe sumber daya
Rj dialokasikan ke proses Pi. Garis berarah Pi → Rj disebut request
edge dan garis berarah Rj → Pi disebut assignment edge

Notasi-notasi yang digunakan pada resource allocation graph


adalah

 Proses

 Tipe sumber daya dengan 4 anggota

RJ

 Pi meminta anggota dari Rj

PI

xii
RJ

 Pi membawa satu anggota Rj

PI RJ

Gambar 6-1

Contoh resource allocation graph dapat dilihat pada Gambar 6-1 dimana
keadaan sistem adalah sebagai berikut :

 Himpunan P, R dan E :
 P = {P1, P2, P3}
 R = {R1, R2, R3, R4}
 E = {P1 → R1, P2 → R3, R1 → P2, R2 → P2, R2 → P1, R3 →
P3}

 Anggota sumber daya :


o Satu anggota dari tipe sumber daya R1.
o Dua anggota dari tipe sumber daya R2.
o Satu anggota dari tipe sumber daya R3.
o Tiga anggota dari tipe sumber daya R4.

 Status proses :
o Proses P1 membawa satu anggota tipe sumber daya R2 dan
menunggu satu anggota tipe sumber daya R1.
o Proses P2 membawa satu anggota R1 dan R2 dan menunggu satu
anggota tipe sumber daya R3.
o Proses P3 membawa satu anggota R3.

xiii
Gambar 6-2.

Untuk ilustrasi konsep diatas kita lihat kembali resource allocation


graph pada Gambar 6-1. Pada Gambar 6-1 tidak terdapat siklus, jadi tidak
terjadi deadlock pada sistem. Misalnya proses P3 meminta satu anggota
dari tipe sumber daya R2. Karena tidak tersedia anggota tipe sumber daya
tersebut, request edge P3 → R2 ditambahkan ke graph seperti pada
Gambar 6-2. Pada kasus ini, terdapat dua siklus pada sistem, yaitu :
P1 → R1 → P2 → R3 → P3 → R2 → P1
P2 → R3 → P3 → R2 → P2
Proses P1, P2 dan P3 terjadi deadlock. Proses P2 menunggu sumber
daya R3 yang dibawa proses P3. Proses P3 sebaliknya menunggu proses
P1 atau P2 melepas sumber daya R2. Proses P1 menunggu proses P2
melepas sumber daya R1.

Gambar 6-3

Pada contoh resource allocation graph Gambar 6-3 terdapat siklus :


P1 → R1 → P3 → R2 → P1
Akan tetapi pada sistem tidak terjadi deadlock. Terlihat bahwa proses
P4 kemungkinan melepas tipe sumber daya R2. Sumber daya tersebut
kemudian dapat dialokasikan untuk P3 dan akan menghapus siklus.

xiv
Fakta dasar dari resource allocation graph menunjukkan bahwa :
 Apabila pada graph tidak terdapat siklus maka tidak ada proses dalam
sistem yang deadlock.
 Apabila pada graph terdapat siklus sistem kemungkinan deadlock
dengan ketentuan:
o Jika pada setiap tipe sumber daya hanya terdapat satu anggota
maka terjadideadlock
o Jika pada setiap tipe sumber daya terdapat beberapa anggota maka
kemungkinan terjadi deadlock

3. Metode Penanganan Deadlock


Terdapat tiga metode untuk menangani permasalahan deadlock
yaitu :
 Menggunakan protocol untuk menjamin bahwa sistem tidak pernah
memasuki status deadlock
 Mengijinkan sistem memasuki status deadlock dan kemudian
memperbaikinya.
 Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah
terjadi pada sistem. Model ini yang banyak digunakan pada sistem
operasi termasuk UNIX.

4. Pencegahan Deadlock
Metode ini berkaitan dengan pengkondisian sistem agar
menghilangkan kemungkinan terjadinya deadlock. Pencegahan
merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock.
Metode ini sering menghasilkan utilisasi sumber daya yang buruk.
Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk
mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat
perlu sebagai berikut :

 Mencegah Mutual Exclusion Mutual exclusion benar-benar tak dapat


dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat
digunakan bersama-sama, jadi sistem harus membawa sumber daya
yang tidak dapat digunakan bersama-sama.

 Mencegah Hold and Wait Untuk mencegah hold and wait, sistem harus
menjamin bila suatu proses meminta sumber daya, maka proses
tersebut tidak sedang memegang sumber daya yang lain. Proses harus
meminta dan dialokasikan semua sumber daya yang diperlukan
sebelum proses memulai eksekusi atau mengijinkan proses meminta
sumber daya hanya jika proses tidak membawa sumber daya lain.
Model ini mempunyai utilitas sumber daya yang rendah dan
kemungkinan terjadi starvation jika proses membutuhkan sumber daya
yang popular sehingga terjadi keadaan menunggu yang tidak terbatas
karena setidaknya satu dari sumber daya yang dibutuhkannya
dialokasikan untuk proses yang lain.

xv
 Mencegah Non Preemption Peniadaan non preemption mencegah
proses-proses lain harus menunggu. Seluruh proses menjadi
preemption, sehingga tidak ada tunggu menunggu. Cara mencegah
kondisi non preemption :
o Jika suatu proses yang membawa beberapa sumber daya meminta
sumber daya lain yang tidak dapat segera dipenuhi untuk
dialokasikan pada proses tersebut, maka semua sumber daya yang
sedang dibawa proses tersebut harus dibebaskan.
o Proses yang sedang dalam keadaan menunggu, sumber daya yang
dibawanya ditunda dan ditambahkan pada daftar sumber daya.
o Proses akan di restart hanya jika dapat memperoleh sumber daya
yang lama dan sumber daya baru yang diminta.

 Mencegah Kondisi Menunggu Sirkular Sistem mempunyai total


permintaan global untuk semua tipe sumber daya. Proses dapat
meminta proses kapanpun menginginkan, tapi permintaan harus dibuat
terurut secara numerik. Setiap proses yang membutuhkan sumber daya
dan memintanya maka nomor urut akan dinaikkan. Cara ini tidak akan
menimbulkan siklus. Masalah yang timbul adalah tidak ada cara
pengurutan nomor sumber daya yang memuaskan semua pihak.

5. Penghindaran Deadlock
Metode alternatif untuk menghindari deadlock adalah digunakan
informasi tambahan tentang bagaimana sumber daya diminta. Misalnya
pada sistem dengan satu tape drive dan satu printer, proses P pertama
meminta tape drive dan kemudian printer sebelum melepaskan kedua
sumber daya tersebut. Sebaliknya proses Q pertama meminta printer
kemudian tape drive. Dengan mengetahui urutan permintaan dan
pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk
setiap permintaan apakah proses harus menunggu atau tidak. Setiap
permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia,
sumber daya sedang dialokasikan untuk proses dan permintaan kemudian
serta pelepasan oleh proses untuk menentukan apakah permintaan dapat
dipenuhi atau harus menunggu untuk menghindari deadlock. Model yang
sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan
jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan.
Algoritma deadlock avoidance secara dinamis memeriksa status sumber
daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi
menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah
sumber daya yang tersedia dan yang dialokasikan dan maksimum
permintaan oleh proses-proses.

6. Pendeteksian Deadlock
Jika sistem tidak menyediakan algoritma mencegah deadlock dan
menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem
harus menyediakan :

xvi
 Algoritma yang menguji state sistem untuk menentukan apakah
deadlock telah terjadi.
 Algoritma untuk memperbaiki dari deadlock.

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

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.

7. Recovery Deadlock
Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi
sederhana adalah dengan menghentikan satu atau beberapa proses untuk
membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda
beberapa sumber daya dari satu atau lebih proses yang deadlock.

Terminasi Proses Untuk memperbaiki deadlock dengan terminasi


proses, dapat diguankan salah satu dari dua metode di bawah ini :
 Menghentikan (abort) semua proses yang deadlock
 Menghentikan satu proses setiap waktu sampai siklus deadlock hilang.

xvii
Untuk menentukan urutan proses yang harus dihentikan ada
beberapa faktor yang harus diperhatikan :
 Prioritas proses.
 Berapa lama proses dijalankan dan berapa lama lagi selesai.
 Sumber daya yang digunakan proses.
 Sumber daya proses yang diperlukan untuk menyelesaikan task.
 Berapa proses yang perlu diterminasi.
 Apakah proses interaktif atau batch.

Menunda Sumber Daya Untuk menghilangkan deadlock dengan


menunda sumber daya, sumber daya dari proses harus ditunda dan
memberikan sumber daya tersebut ke proses lain sampai siklus deadlock
hilang. Jika penundaan dibutuhkan untuk menghilangkan deadlock,
terdapat tiga hal yang perlu diperhatikan :
o Pilihlah korban (sumber daya) yang mempunyai biaya minimal.
o Lakukan rollback yaitu memulai kembali (restart) proses pada state
yang aman.
o Harus dijamin starvation tidak akan terjadi karena kemungkinan
beberapa proses selalu terpilih sebagai korban termasuk jumlah
rollback sebagai faktor biaya.

8. Pendekatan Kombinasi Untuk Menghindari Deadlock


Untuk menangani deadlock dilakukan kombinasi dari tiga
algoritma dasar yaitu mencegah deadlock, menghindari deadlock dan
mendeteksi deadlock. Kombinasi ketiga algoritma ini memungkinkan
penggunaan yang optimal untuk setiap sumber daya pada sistem.

xviii
BAB.3
PENUTUP
1. Kesimpulan
Untuk mengatasi problem critical section dapat digunakan berbagai solusi
software. Namun masalah yang akan timbul dengan solusi software adalah
solusi software tidak mampu menangani masalah yang lebih berat dari critical
section. Tetapi Semaphores mampu menanganinya, terlebih jika hardware
yang digunakan mendukung maka akan memudahkan dalam menghadapi
problem sinkronisasi.

Berbagai contoh klasik problem sinkronisasi berguna untuk mengecek


setiap skema baru sinkronisasi. Monitor termasuk ke dalam level tertinggi
mekanisme sinkronisasi yang berguna untuk mengkoordinir aktivitas dari
banyak thread ketika mengakses data melalui pernyataan yang telah
disinkronisasi.

Kondisi deadlock akan dapat terjadi jika terdapat dua atau lebih proses


yang akan mengakses sumber daya yang sedang dipakai oleh proses yang
lainnya. Pendekatan untuk mengatasi deadlock dipakai tiga buah pendekatan,
yaitu:

 Memastikan bahwa tidak pernah dicapai kondisi deadlock


 Membiarkan deadlock untuk terjadi dan memulihkannya
 Mengabaikan apa pun deadlock yang terjadi
 Dari ketiga pendekatan diatas, dapat diturunkan menjadi empat buah
metode untuk mengatasi deadlock, yaitu:
 Pencegahan deadlock
 Menghindari deadlock
 Mendeteksi deadlock
 Pemulihan deadlock

xix

Anda mungkin juga menyukai