SISTEM OPERASI
“SINKRONISASI & DEADLOCK”
DISUSUN OLEH
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.
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.
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
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
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
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.
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
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