MAKALAH SISTEM OPERASI
SINKRONISASI DAN DEADLOCK
SINKRONISASI DAN DEADLOCK
Disusun oleh:
Nama : TRI PUSNAWATI
Nim :
1110520056
Kelas :
II A / S1 Informatika
SEKOLAH
TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER(STMIK) BUMIGORA MATARAM 2012/2013
SINKRONISASI DAN DEADLOCK
SINKRONISASI DAN DEADLOCK
A. Sinkronisasi
Merupakan suatu proses
pengaturan jalannya beberapa proses pada waktu yang bersamaan untuk menyamakan
waktu dan data supaya tidak terjadi inconsitensi (ketidak konsistenan) data akibat
adanya akses data secara konkuren agar
hasilnya bagus dan sesuai dengan apa yang diharapkan.
Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.
Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.
Shared
memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling
banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N
buffer digunakan tidaklah sederhana. Dimisalkan kita memdifikasi
producer-consumer code dengan menambahkan suatu variable counter, dimulai dari
0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer.
1. Race Condition
Race
Condition
adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama
pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada
proses yang terakhir selesai. Untuk mencegah race condition, proses-proses
yang berjalan besamaan harus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Misalnya Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
2. Masalah Critical Section
Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Misalnya Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
2. Masalah Critical Section
Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
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 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 yakni :
3. Solusi ke Masalah Critical-Section
Ada bebrapa Solusi untuk
mengatasi masalah Critical Section, yaitu:
Jika proses pi sedang mengeksekusi critical
section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical
section mereka.
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.
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.
a.
Asumsikan
bahwa tiap proses mengeksekusi pada nonzero speed.
b.
Tidak
ada asumsi mengenai kecepatan relative dan n proses.
Cara-cara memecahkan masalah
4. Bakery Algorithm
Critical section untuk n
proses:
a.
Sebelum memasuki critical Section-nya, proses
menerima nomor pemilik nomor terkecil memasuki critical section.
b.
Jika proses Pi dan Pj menerima nomor yang sama,
jika i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j,
then Pi is served first; else Pj is served first).
c. Skema
penomoran selalu menghasilkan angka –angka yang disebutkan satu per satu, yaitu
1,2,3,3,3,3,4,5….
5. 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.
ii. 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.
6. Problem Klasik pada Sinkronisasi
7. Monitors
Monitor adalah kumpulan prosedur,
variabel dan struktur data di satu modul atau paket khusus. Proses dapat
memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat
mengakses struktur data internal dalam monitor secara langsung. Hanya lewat
prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur
internal.
Properti-properti
monitor adalah sebagai berikut:
a.
Variabel-variabel data lokal, hanya dapat
diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar
monitor.
b.
Hanya satu proses yang dapat aktif di monitor
pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).
c.
Terdapat cara agar proses yang tidak dapat
berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua
operasi, yaitu Wait dan Signal.
d.
Wait: Ketika prosedur monitor tidak dapat
berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil
diblocked dan mengizinkan proses lain masuk monitor.
e.
Signal: Proses membangunkan partner-nya yang
sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu
partnernya.
g. Versi
Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.
Dengan
memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada
monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data
dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur
data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data
pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas
mutual exclusion dalam mengakses sumber daya itu.
B. Deadlock
Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu prosesyang lain untuk melepaskan resource yang sedang dipakai.
Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu prosesyang lain untuk melepaskan resource yang sedang dipakai.
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.
Contoh berikut ini terjadi pada
sebuah persimpangan jalan. Beberapa hal yang dapat membuat deadlock pada suatu persimpangan, yaitu:
1. Peranan Deadlock
Menurut Coffman dalam bukunya "Operating System" menyebutkan
empat syarat bagi terjadinya deadlock,
yaitu:
d. Kondisi
yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat
meminta sumber daya yang lain.
f. Kondisi
dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat
diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
h. Kondisi
yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki
oleh suatu proses oleh proses lainnya.
2. Resources-Allocation Graph
G = (V, E)
Graf berisi node and edge. Node V terdiri dari proses-proses = {P1,
P2, P3, ...} dan jenis resource. {R1,
R2, ...} Edge E adalah (Pi, Rj) atau
(Ri, Pj)
Sebuah
panah dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource ke process menunjukkan sebuah instance
dari resource telah dtempatkan ke
proses. Process adalah lingkaran, resource adalah kotak; titik-titik
merepresentasikan jumlah instance
dari resource Dalam tipe. Meminta
poin-poin ke kotak, perintah datang dari titik.
Jika graf tidak berisi lingkaran, maka tidak ada proses yang deadlock. Jika
membentuk lingkaran, maka:
3. Strategi menghadapi Deadlock
b.
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.
c.
Membiarkan deadlock
untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung,
yaitu:
· Pemulihan
deadlock, mengembalikan kembali
sumber daya yang dibutuhkan pada proses yang memintanya.
4. Strategi Ostrich
Pendekatan
yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan
kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali.
Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli
Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara
menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan
disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos
yang dibayar untuk melakukan penanganan deadlock
sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX
dan MINIX.
5. Mencegah Deadlock
Metode ini
merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai
solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan mengakibatkan kinerja utilisasi
sumber daya yang buruk.
Metode
pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang
dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
Syarat
pertama yang akan dapat ditiadakan adalah Mutual
Exclusion, jika tidak ada sumber daya yang secara khusus diperuntukkan bagi
suatu proses maka tidak akan pernah terjadi deadlock.
Namun jika membiarkan ada dua atau lebih proses mengakses sebuah sumber daya
yang sama akan menyebabkan chaos.
Langkah yang digunakan adalah dengan spooling
sumber daya, yaitu dengan mengantrikan job-job
pada antrian dan akan dilayani satu-satu.
Hal inilah yang menyebabkan mengapa syarat pertama tidak
dapat ditiadakan, jadi mutual exclusion
benar-benar tidak dapat dihilangkan.
Cara kedua
dengan meniadakan kondisi hold and wait
terlihat lebih menjanjikan. Jika suatu proses yang sedang menggunakan sumber
daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlock dapat dicegah. Langkah yang
digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka
butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang
dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses
tersebut tidak dapat memulai prosesnya.
ii. Tidak
optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya
beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses yang
telah memintanya dari awal.
Meniadakan syarat ketiga non
preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat kedua,
karena dengan meniadakan syarat ketiga maka suatu proses dapat dihentikan
ditengah jalan. Hal ini tidak dimungkinkan karena hasil dari suatu proses yang
dihentikan menjadi tidak baik.
Cara
terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat dua pendekatan, yaitu:
i. Mengatur
agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu waktu,
jika menginginkan sumber daya lain maka sumber daya yang dimiliki harus
dilepas.
ii. Membuat
penomoran pada proses-proses yang mengakses sumber daya. Suatu proses
dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi permintaannya
harus dibuat terurut.
Masalah
yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki
satu proses adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya,
untuk suatu proses yang kompleks dibutuhkan banyak sumber daya pada saat yang
bersamaan. Sedangkan dengan penomoran masalah yang dihadapi adalah tidak
terdapatnya suatu penomoran yang dapat memuaskan semua pihak.
Secara
ringkas pendekatan yang digunakan pada metode pencegahan deadlock dan
masalah-masalah yang menghambatnya, terangkum dalam tabel dibawah ini.
Syarat
|
Langkah
|
Kelemahan
|
Mutual Exclusion
|
Spooling sumber daya
|
Dapat menyebabkan chaos
|
Hold and Wait
|
Meminta sumber daya di awal
|
Sulit memperkirakan di awal
dan tidak optimal
|
No Pre-emptive
|
Mengambil sumber daya di
tengah proses
|
Hasil proses tidak akan
baik
|
Circular Wait
|
Penomoran permintaan sumber
daya
|
Tidak ada penomoran yang
memuaskan semua pihak
|
6. Menghindari Deadlock
Pendekatan
metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya
yang tidak mungkin akan menyebabkan deadlock.
Metode ini memeriksa dampak pemberian akses pada suatu proses, jika pemberian
akses tidak mungkin menuju kepada deadlock,
maka sumber daya akan diberikan pada proses yang meminta. Jika tidak aman,
proses yang meminta akan di-suspend
sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi
ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah
dilepaskan.
Kondisi
aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak memungkinkan untuk
diberikan sumber daya yang diminta disebut unsafe-state.
7. Kondisi Aman (Safe state)
Suatu
keadaan dapat dinyatakan sebagai safe
state jika tidak terjadi deadlock
dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda
tanpa menghasilkan deadlock. Dengan
cara mengikuti urutan tertentu.
8. Kondisi Tak Aman (Unsafe state)
Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua
permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu
urutan.
9. Algoritma Bankir
Algoritma
penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama
Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan
dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan
peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi
apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin
meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh
peminjam lain yang juga belum mengembalikan uang pinjamannya.
Beberapa
kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990)
adalah sebagai berikut:
10. Mendeteksi Deadlock dan Memulihkan Deadlock
Metode ini
mengunakan pendekatan dengan teknik untuk menentukan apakah deadlock sedang terjadi serta
proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah
kondisi deadlock dapat dideteksi,
maka langkah pemulihan dari kondisi deadlock
dapat segera dilakukan. Langkah pemulihan tersebut adalah dengan memperoleh
sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa
cara digunakan untuk mendapatkan sumber daya yang diperlukan, yaitu dengan
terminasi proses dan pre-emption
(mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran besar.
C. 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:
Dari ketiga pendekatan diatas, dapat diturunkan menjadi empat
buah metode untuk mengatasi deadlock,
yaitu:
Namun
pada sebagian besar Sistem Operasi dewasa ini mereka lebih condong menggunakan
pendekatan untuk mengabaikan semua deadlock
yang terjadi. Silberschatz (1994) merumuskan sebuah
strategi penanggulangan deadlock terpadu yang dapat disesuaikan dengan kondisi
dan situasi yang berbeda, strateginya sendiri berbunyi:
Tidak ada komentar:
Posting Komentar