pertemuan – 5 kuliah sistem operasi

advertisement
SINKRONISASI & DEADLOCK
LATAR BELAKANG
• 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.
• proses dapat bekerja sendiri (independent
process) dan juga dapat bekerja bersama
proses-proses yang lain (cooperating process).
Ketika proses saling bekerjasama (cooperating
process) maka prosestersebut akan saling
berbagi data. Pada saat proses berbagi data,
ada kemungkinan bahwa data yang dibagi
menjadi tidak konsisten dikarenakan adanya
kemungkinan proses tersebut melakukan akses
secara bersamaan yang menyebabkan data
tersebut berubah, hal ini dikenal dengan istilah
Race Condition.
CRITICAL SECTION
• Critical Section adalah sebuah segmen kode di mana
sebuah proses yang mana sumber daya bersama di
akses.
• Critical Section terdiri dari entry section, exit section
dan remainder section.
• Dalam critical section solusi yang diberikan harus
memuaskan permintaaan berikut:
- mutual exclution
- deadlock free
- starvation free
RACE CONDITION
•
race condition sebagai masalah yang dapat terjadi pada
beberapa proses yang memanipulasi suatu data secara
konkruen, sehingga data tersebut tidak sinkron lagi. Nilai
akhirnya akan tergantung pada proses mana yang terakhir
dieksekusi. Cara menghindari race condition ini adalah
menemukan jalan untuk mencegah lebih dari satu proses
melakukan proses tulis atau baca kepada data atau berkas
pada saat yang bersamaan. Dengan kata lain, kita
membutuhkan Mutual Exclusion. Mutual Exclusion adalah suatu
cara yang menjamin jika ada sebuah proses yang
menggunakan variabel atau berkas yang sama (digunakan juga
oleh proses lain), maka proses lain akan dikeluarkan dari
pekerjaan yang sama.
• Proses memiliki suatu segmen kode
dimana jika segmen itu dieksekusi, maka
proses-proses itu dapat saling
mengubah variabel, mengupdate suatu
tabel, menulis ke suatu file, dan lain
sebagainya, dan hal ini dapat membawa
proses tersebut ke dalam bahaya race
condition. Segmen kode yang seperti
inilah yang disebut Critical Section.
•
Solusi dari masalah critical section harus memenuhi tiga syarat berikut [Silbeschatz 2004]:
•
•
•
•
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 di
critical section pada saat yang bersamaan.
•
•
•
•
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
dalam entry section saja yang dapat berkompetisi untuk mengerjakan critical section.
•
•
•
•
•
•
Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka proses lain
memiliki waktu tunggu yang ada batasnya untuk menjalankan critical section-nya, sehingga
dapat dipastikan bahwa proses tersebut dapat mengakses critical section-nya (tidak mengalami
starvation: proses seolah-olah berhenti, menunggu request akses ke critical section
diperbolehkan).
• Solusi untuk memecahkan masalah critical section
adalah dengan mendesain sebuah protokol di mana
proses-proses dapat menggunakannya secara bersamasama. 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.
• Ada dua jenis solusi masalah critical section,
yaitu:
• Solusi perangkat lunak.
• Dengan menggunakan algoritma-alogoritma
yang nilai kebenarannya tidak tergantung pada
asumsi-asumsi lain, selain bahwa setiap proses
berjalan pada kecepatan yang bukan nol.
• Solusi perangkat keras.
• Tergantung pada beberapa instruksi mesin
tertentu, misalnya dengan me-non-aktifkan
interupsi atau dengan mengunci suatu variabel
tertentu
•
•
Rangkuman
Critical Region merupakan bagian kode yang selalu
dilaksanakan dalam kondisi mutual eksklusif. Perbedaannya
adalah bahwa yang mengkondisikan mutual eksklusif adalah
kompiler dan bukan programer sehingga mengurangi resiko
kesalahan programer. Monitor merupakan kumpulan dari
prosedur, variabel, dan struktur data dalam satu modul. Dengan
mempergunakan monitor, sebuah proses dapat memanggil
prosedur di dalam monitor, tetapi tidak dapat mengakses
struktur data (termasuk variabel- variabel) internal dalam
monitor. Dengan karakteristik demikian, monitor dapat
mengatasi manipulasi yang tidak sah terhadap variabel yang
diakses bersama-sama karena variabel lokal hanya dapat
diakses oleh prosedur lokal.
Deadlock
• Deadlock dalam arti sebenarnya adalah kebuntuan.
Kebuntuan yang dimaksud dalam sistem operasi adalah
kebuntuan proses. Jadi Deadlock ialah suatu kondisi
dimana proses tidak berjalan lagi atau pun tidak ada
komunikasi lagi antar proses.
• Deadlock disebabkan karena proses yang satu
menunggu sumber daya yang sedang dipegang oleh
proses lain yang sedang menunggu sumber daya yang
dipegang oleh proses tersebut. Dengan kata lain setiap
proses dalam set menunggu untuk sumber yang hanya
dapat dikerjakan oleh proses lain dalam set yang sedang
menunggu.
Proses P1 Proses P2
..... .....
..... .....
Receive (P2); Receive (P1);
..... .....
..... .....
Send (P2, M1); Send (P1, M2);
• Deadlock selalu tidak lepas dari sumber daya,
seperti kita lihat dari contoh-contoh diatas,
bahwa hampir seluruhnya merupakan masalah
sumber daya yang digunakan bersama-sama.
Oleh karena itu, kita juga perlu tahu tentang
jenis sumber daya, yaitu: sumber daya dapat
digunakan lagi berulang-ulang dan sumber
daya yang dapat digunakan dan habis dipakai
atau dapat dikatakan sumber daya sekali pakai.
•
•
•
empat kondisi yang dapat mengakibatkan terjadinya Deadlock,
yaitu:
Mutual Eksklusif: hanya ada satu proses yang boleh memakai
sumber daya, dan proses lain yang ingin memakai sumber daya
tersebut harus menunggu hingga sumber daya tadi dilepaskan
atau tidak ada proses yang memakai sumber daya tersebut.
Memegang dan menunggu: proses yang sedang memakai
sumber daya boleh meminta sumber daya lagi maksudnya
menunggu hingga benar-benar sumber daya yang diminta tidak
dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan
sumber daya sebab dapat saja sebuah proses tidak mendapat
sumber daya dalam waktu yang lama
• Tidak ada Preemption: sumber daya yang ada
pada sebuah proses tidak boleh diambil begitu
saja oleh proses lainnya. Untuk mendapatkan
sumber daya tersebut, maka harus dilepaskan
terlebih dahulu oleh proses yang
memegangnya, selain itu seluruh proses
menunggu dan mempersilahkan hanya proses
yang memiliki sumber daya yang boleh berjalan
• Circular Wait: kondisi seperti rantai, yaitu
sebuah proses membutuhkan sumber daya
yang dipegang proses berikutnya
•
Banyak cara untuk menanggulangi Deadlock:
•
Mengabaikan masalah Deadlock.
•
•
Mendeteksi dan memperbaiki
Penghindaran yang terus menerus dan pengalokasian yang
baik dengan menggunakan protokol untuk memastikan sistem
tidak pernah memasuki keadaan Deadlock. Yaitu dengan
Deadlock avoidance sistem untuk mendata informasi tambahan
tentang proses mana yang akan meminta dan menggunakan
sumber daya.
•
Pencegahan yang secara struktur bertentangan dengan empat
kondisi terjadinya Deadlock dengan Deadlock prevention sistem
untuk memasti- kan bahwa salah satu kondisi yang penting
tidak dapat menunggu.
•
•
•
•
•
•
•
•
•
•
•
•
Rangkuman
Deadlock ialah suatu kondisi permanen dimana proses tidak berjalan lagi atau pun
tidak berkomunikasi lagi antar proses. Perebutan sumber daya itu dapat dibagi
dua yaitu sumber daya yang dapat dipakai berulang-ulang dan sumber daya yang
sekali dibuat dan langsung dipakai.
Sebenarnya deadlock dapat disebabkan oleh empat hal yaitu:
1. Proses Mutual Exclusion
2. Proses memegang dan menunggu
3. Proses Preemption
4. Proses Menunggu dengan siklus deadlock tertentu
Penanganan deadlock Banyak cara untuk menanggulangi deadlock:
1. mengabaikan masalah deadlock.
2. mendeteksi dan memperbaiki
3. penghindaran yang terus menerus dan pengalokasian yang baik.
4. pencegahan yang secara struktur bertentangan dengan empat kondisi
terjadinya deadlock
Download