Konkurensi
Keterangan:
- Nilai T menunjukkan bahwa sistem memiliki 5 tape drive, 4 printer, dan 3 plotter.
- H menunjukkan sumber daya yang telah dialokasikan untuk proses-proses yang ada. Nilai 432
artinya terdapat 4 tape drive yang telah dialokasikan, 3 printer yang telah dialokasikan dan 2 plotter
yang telah dialokasikan.
- Nilai F didapat dari pengurangan matriks antara T dan H.
Jika setiap elemen vektor T lebih besar daripada hasil penjumlahan matriks A dan B, maka tidak
terdapat deadlock; jika keadaan sebaliknya maka deadlock harus dihindari.
Penghindaran Deadlock
• Cara kerja algoritma penghindaran deadlock:
- Setiap proses memberi tahu sistem operasi jumlah sumber daya yang
diperlukannya pada awal proses. Sistem operasi menempatkan nilai-nilai ini untuk
setiap proses dalam matriks B. Pada proses yang baru diciptakan, setiap kolom
pada matriks A bernilai 0 karena belum ada sumber daya yang dialokasikan
untuknya.
- Saat suatu proses meminta sumber daya, sistem operasi memeriksa apakah
sumber daya tersebut tersedia dengan menggunakan vektor F. Jika dapat
dialokasikan, sistem operasi memberikannya dan meng-update matriks A dengan
menambahkan nilai 1 pada kolom yang bersesuaian dan secara bersamaan
mengurangi 1 dari kolom yang bersesuaian pada matriks B.
- Namun sebelum sumber daya diberikan, sistem operasi mensimulasikan alokasi
tersebut. Sistem operasi akan menggunakan algoritma bankir untuk memeriksa
apakah sesudah sumber daya diberikan akan tercipta unsafe state atau tidak. Jika
terjadi unsafe state, permintaan akan ditunda. Jika sistem operasi yakin bahwa
tidak ada unsafe state barulah sumber daya diberikan.
Penghindaran Deadlock
• Cara sistem operasi memeriksa ketersediaan sumber daya: sistem
operasi akan membandingkan nilai vektor F dan nilai setiap baris pada
matriks B.
• Contoh:
Dalam ilustrasi di atas, nilai F adalah 111 (tersedia 1 tape drive, 1
printer, dan 1 plotter). Nilai baris pertama matriks B adalah 100 yang
berarti bahwa P0 membutuhkan 1 tape drive untuk selesai. Nilai baris
kedua matriks B adalah 110, dan nilai baris keempat matriks B adalah
111. Adanya keadaan demikian memberi sistem operasi beberapa
pilihan untuk mengalokasikan sumber dayanya.
Penghindaran Deadlock
• Setelah memastikan ketersediaan sumber daya, sistem operasi
melakukan langkah-langkah berikut untuk memastikan safe state:
a. Sistem operasi mensimulasikan pengalokasian tersebut.
b. Setelah simulasi ini, sistem operasi meng-update seluruh matriks
dan vektor sehingga didapatkan nilai vektor F dan matriks B yang
baru.
c. Sistem operasi membandingkan nilai vektor F dengan setiap baris
matriks B.
d. Jika F lebih kecil dari setiap baris matriks B, maka sistem operasi
akan menganggap ini adalah unsafe state.
Penghindaran Deadlock
e. Jika F lebih besar dari setiap baris matriks B, sistem operasi akan
melakukan hal-hal berikut:
- Mengalokasikan seluruh sumber daya yang diperlukan proses tersebut
secara simulasi.
- Mengasumsikan bahwa setelah langkah ini proses tersebut akan selesai
dan membebaskan sumber daya yang digengamnya. Sumber daya bebas
ini akan ditambahkan ke F. Sistem operasi akan menghitung semua
matriks dan F setelah simulasi alokasi dan selesainya proses tersebut.
Sistem operasi akan membuang proses yang selesai dari semua matriks.
- Sistem operasi mengulangi langkah c di atas. Jika semua baris dalam
matriks dapat dieliminasi (semua proses dapat selesai), maka berarti
terdapat safe state, jika tidak berarti unsafe state.
f. Untuk setiap permintaan akan sumber daya, sistem operasi melakukan
semua simulasi ini. Jika safe state dapat dipertahankan, sumber daya
diberikan.
Penghindaran Deadlock
• Kelemahan algoritma bankir:
- Proses-proses jarang mengetahui jumlah maksimum sumber daya
yang akan diperlukan di awal proses.
- Jumlah proses tidak tetap.
- Sumber daya yang dihitung sebagai tersedia dapat saja tiba-tiba
dicopot sehingga sebenarnya menjadi tidak tersedia.
- Proses-proses harus independen, yaitu urutan proses-proses yang
dieksekusi tidak dibatasi kebutuhan sinkronisasi antarproses.
- Algoritma menghendaki memberikan semua permintaan selama
waktu yang berhingga.
- Algoritma menghendaki proses-proses mengembalikan sumber daya
setelah suatu waktu yang berhingga.
Deteksi dan Pemulihan Deadlock
• Pendeteksian deadlock merupakan usaha untuk menentukan
apakah deadlock terjadi dan mengidentifikasi proses-proses dan
sumber daya yang terlibat.
• Pada umumnya pendeteksian deadlock dilakukan dengan
mendeteksi adanya keadaan menunggu secara sirkular (circular
wait). Sembarang algoritma pendeteksian siklus pada graph
berarah dapat digunakan. Algoritma ini biasanya dijalankan secara
periodik. Periode yang biasa digunakan adalah saat permintaan
dan pelepasan sumber daya. Setiap ada permintaan dan
pelepasan sumber daya graph diperbarui dan algoritma deteksi
dijalankan. Apabila terdapat siklus yang berarti terjadi kondisi
menunggu secara sirkuler yang menandakan terjadinya deadlock.
Deteksi dan Pemulihan Deadlock
• Bila deadlock terjadi, deadlock harus dihilangkan
dengan menghilangkan satu atau lebih syarat perlu
terjadinya deadlock. Biasanya proses akan
kehilangan sebagian atau seluruh pekerjaan yang
telah dilakukan. Ini merupakan risiko yang harus
ditanggung daripada deadlock dibiarkan dan semua
proses yang ada tidak dapat menyelesaikan
tugasnya.
Deteksi dan Pemulihan Deadlock
• Berikut adalah usaha yang dapat dilakukan untuk memulihkan sistem dari deadlock
(diurutkan berdasarkan kecanggihannya):
• Abaikan (singkirkan) semua proses yang terlibat deadlock.
• Backup semua proses yang terlibat ke suatu checkpoint yang didefenisikan
sebelumnya dan jalankan kembali semua proses tersebut. Teknik ini memerlukan
mekanisme rollback dan restart. Pendekatan demikian memiliki risiko yaitu
deadlock semula dapat kembali terjadi tetapi ketidaktentuan dalam prosesoran
konkurensi biasanya akan mencegah terjadinya deadlock yang serupa.
• Secara berurutan singkirkan proses-proses hingga tidak ada deadlock. Proses yang
disingkirkan dipilih berdasarkan kriteria-kriteria tertentu. Untuk setiap
penyingkiran algoritma deteksi deadlock dijalankan untuk menentukan apakah
masih terdapat deadlock.
• Secara berurutan mem-preempt sumber daya-sumber daya hingga tidak ada
deadlock. Sebagaimana langkah di atas, proses yang di-suspend dipilih
berdasarkan kriteria tertentu dan algoritma deteksi deadlock dijalankan untuk
setiap preemption. Proses yang kehilangan sumber daya karena preemption di-roll
back ke titik sebelum memperoleh sumber daya.
Deteksi dan Pemulihan Deadlock
• Kriteria pemilihan proses yang akan disingkirkan
(di-kill) atau di-suspend adalah:
• Waktu pemrosesan yang telah digunakan paling
kecil.
• Jumlah output paling kecil.
• Memiliki estimasi sisa waktu eksekusi terbesar.
• Sumber daya yang telah dialokasikan untuk
proses tersebut terkecil.
• Memiliki prioritas terkecil.
Starvation
Starvation merupakan suatu keadaan dimana suatu proses tidak
memperoleh sumber daya yang diinginkannya walaupun tidak terjadi
deadlock.
Ilustrasi terjadinya starvation:
- Terdapat tiga proses P1, P2 dan P3 yang masing-masing memerlukan
pengaksesan sumber daya R secara periodik.
- Misalkan P1 sedang menggunakan R maka P2 dan P3 berada dalam
status blocked. Saat P1 selesai, R dibebaskan dan dapat diakses.
Diasumsikan P3 yang mendapat hak untuk mengakses R. Ketika P3
selesai hak akses diberikan ke P1 yang saat itu kembali memerlukan
R. Jika hal ini terjadi terus-menerus maka P2 tidak akan pernah
mengakses R walaupun tidak terjadi deadlock.
Starvation
• Starvation biasanya merupakan akibat dari
penggunaan algoritma penjadwalan yang
terlampau sederhana.
• Untuk mengatasi starvation, dapat digunakan
algoritma penjadwalan dengan antrian berprioritas
atau dengan perlahan meningkatkan prioritas
proses-proses yang telah menunggu lama dalam
sistem.