Anda di halaman 1dari 55

Sistem Operasi

Konkurensi

PRODI. TEKNIK INFORMATIKA (S-1)


Konkurensi
 Proses-proses disebut konkuren (concurrent) jika proses-proses tersebut
(lebih dari satu proses) berada dalam memory pada saat yang sama.
 Proses-proses konkuren dapat sepenuhnya tidak bergantung dengan
lainnya tapi dapat juga saling berinteraksi.
 Proses-proses konkuren yang saling berinteraksi menimbulkan beberapa
masalah yang harus diselesaikan yaitu: mutual exclusion, deadlock,
starvation, dan sinkronisasi.
 Konkurensi meliputi hal-hal berikut:
- Alokasi waktu prosesor untuk proses-proses.
- Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
- Komunikasi antarproses.
- Sinkronisasi aktivitas banyak proses.
Konkurensi
 Konkurensi dapat muncul dalam konteks-konteks yang
berbeda, yaitu:
- Untuk banyak aplikasi: proses-proses berasal dari aplikasi
yang berbeda.
- Untuk strukturisasi aplikasi: aplikasi diimplementasikan
sebagai sekumpulan proses dimana tiap proses
menyediakan satu layanan yang spesifik.
- Untuk strukturisasi satu proses: thread-thread dalam
proses harus saling bekerja sama untuk mencapai tujuan
proses.
- Untuk strukturisasi sistem operasi.
Konkurensi
 Terdapat tiga kategori interaksi antarproses pada
sistem dengan banyak proses:
- Proses-proses saling tidak peduli (independen).
- Proses-proses saling mempedulikan secara tidak
langsung.
- Proses-proses saling mempedulikan secara
langsung.
Konkurensi
Mutual Exclusion
• Mutual Exclusion (mutex) adalah jaminan bahwa hanya satu
proses yang mengakses sumber daya pada satu waktu
tertentu. Hal ini diperlukan sebab terdapat sumber daya
yang tidak dapat dipakai lebih dari satu proses pada saat
yang bersamaan (misalnya printer). Sumber daya yang
demikian disebut sumber daya kritis. Proses yang
menggunakan sumber daya kritis disebut memasuki critical
region/section.
• Sistem operasi menyediakan layanan berupa system call
untuk mencegah masuknya proses baru ke critical region
saat ada proses lain di dalamnya.
Mutual Exclusion
• Penjaminan akan mutual exclusion merupakan hal yang
mutlak diperlukan dalam sistem sebab terdapat beberapa
kegiatan dimana sumber daya tidak boleh dibagi pakai
dalam interval waktu yang sama, misalnya pada kegiatan
percetakan ke printer, atau operasi penulisan ke file.
• Mutual exclusion diperlukan untuk mencegah terjadinya
race condition (kondisi dimana terdapat lebih dari satu
proses yang sedang membaca atau menulis pada shared
data dengan hasil akhir bergantung pada jalannya proses-
proses tersebut).
Mutual Exclusion
• Beberapa kriteria yang harus dipenuhi untuk mendukung mutual exclusion:
- Mutual exclusion harus terjamin.
Hanya satu proses pada satu saat yang diijinkan memasuki critical region.
Proses lain yang ingin memasukinya harus menunggu proses terdahulu keluar
dari critical region-nya.
- Proses yang berada di non critical region dilarang menghalangi proses-proses
lain yang ingin masuk ke critical region.
- Proses yang ingin memasuki critical region harus dijamin tidak menunggu
selama waktu yang tidak berhingga (tidak boleh ada deadlock atau
starvation).
- Ketika tidak ada proses pada critical region, proses yang ingin memasuki
critical region-nya harus diijinkan masuk tanpa waktu tunda.
- Tidak ada asumsi mengenai kecepatan relatif proses atau jumlah proses yang
ada.
Mutual Exclusion
• Metode-metode penjaminan mutual exclusion:
- Metode naif: metode dengan variabel lock sederhana.
- Metode untuk situasi tertentu: metode bergantian secara ketat.
- Metode menggunakan busy waiting:
- Metode penyelesaian Dekker.
- Metode penyelesaian Peterson.
- Metode pematian interupsi.
- Metode menggunakan instruksi khusus pada perangkat keras.
- Metode penyelesaian level tinggi:
- Metode semaphore.
Metode dengan Variabel lock
Sederhana
• Metode ini disebut naif karena tidak menyelesaikan masalah mutual
exclusion.
• Metode ini menggunakan mekanisme sebagai berikut:
▪ Saat proses hendak memasuki critical region, proses terlebih dahulu
memeriksa isi variabel lock.
▪ Jika lock == 0, maka proses men-set lock = 1 dan memasuki critical
region.
▪ Jika lock == 1, maka proses menunggu sampai lock == 0.
▪ Kekacauan terjadi apabila timeout terjadi saat proses yang memasuki
critical region belum sempat men-set variabel lock menjadi 1 dan
proses lain yang menunggu juga memasuki critical region. Akibatnya
mutual exclusion terlanggar.
Metode Bergantian secara Ketat
• Metode ini mengasumsikan dapat menggilir masuk critical region
secara bergantian terus-menerus.
• Metode ini menggunakan mekanisme sebagai berikut:
▪ Terdapat suatu variabel turn yang mencatat nomor proses
yang sedang dalam critical region. Variabel ini diinisialisasi
bernilai 0.
▪ Proses 0 memeriksa variabel turn, turn == 0, proses 0
memasuki critical region.
▪ Proses 1 menemukan variabel turn bernilai 0, melakukan loop
memeriksa variabel turn terus-menerus, menunggu turn == 1.
▪ Proses yang keluar dari critical region men-set variabel turn
menjadi nilai yang sebaliknya.
Metode Bergantian secara Ketat
• Kondisi memeriksa variabel terus-menerus untuk menunggu suatu nilai tertentu muncul disebut
busy waiting. Kondisi ini jika terjadi dalam jangka waktu yang lama akan memboroskan waktu
prosesor dan karenanya harus dihindari.
• Kekacauan terjadi apabila proses 0 merupakan proses cepat sedangkan proses 1 merupakan
proses lambat.
• Skenarionya sebagai berikut:
- Proses 0 meninggalkan critical region, men-set turn = 1, mengijinkan proses 1 masuk critical
region.
- Proses 1 mengakhiri critical region dengan cepat; kedua proses pada non critical region
dengan variabel turn bernilai 0.
- Proses 0 memasuki critical region dan mengakhirinya dengan cepat; variabel turn bernilai 1.
- Proses 0 hendak memasuki critical region, tetapi terhalang variabel turn ==1.
• Jadi proses 1 yang berada pada non critical region mem-block proses 0. Ini melanggar kriteria
nomor 2 di atas.
• Metode ini masih dapat digunakan selama diketahui bahwa proses-proses harus secara
bergantian memasuki critical region.
Metode Penyelesaian Dekker
• Metode ini merupakan metode pengimplementasian mutual exclusion secara perangkat
lunak yang sukses pertama kali dengan mengkombinasikan variabel lock dan variabel
warning tanpa memerlukan pergantian secara ketat. Metode ini diberikan oleh T. Dekker,
seorang matematikawan Belanda.
• Algoritmanya:
Metode Penyelesaian Peterson
• Metode ini diperkenalkan oleh G. L. Peterson pada tahun 1981.
Metode Penyelesaian Peterson
• Mekanisme kerja algoritma ini:
Untuk memasuki critical region, proses memanggil enterCriticalSection. Sebelum memanggil
enterCriticalSection, proses memeriksa sampai kondisi aman. Terjadi busy waiting. Setelah
menyelesaikan critical region, proses menandai pekerjaan telah selesai dan mengijinkan proses lain
masuk.
• Skenario:
- Keadaan awal adalah tidak ada proses di critical region. Proses 0 akan masuk critical region. Proses
akan menandai elemen array-nya dan men-set turn ke 1. Proses akan memeriksa kondisi untuk
memasuki critical region. Karena proses 1 tidak berkepentingan (Interested[1] bernilai false) maka
proses 0 memasuki critical region (melakukan eksekusi enterCriticalSection).
- Jika proses 1 ingin memasuki critical region, proses akan menunggu hingga Interested[0] bernilai
false. Jadi pada metode ini terjadi busy waiting.
- Seandainya proses 1 ingin memasuki critical region saat proses 0 belum keluar dari critical region-
nya, proses 1 akan dicegah oleh baris kode While ((Interested[0]) And (turn = 0)) Do Begin End;.
Proses 1 hanya akan bisa memasuki critical region saat proses 0 mengakhiri critical region yang
membuat nilai interested[0] menjadi false.
• Metode Peterson sederhana namun brilian, namun masih didasarkan pada metode busy waiting yang
tidak efisien.
Metode Pematian Interupsi
• Metode ini memperbolehkan proses mematikan interupsi ke prosesor saat memasuki critical region
dan menghidupkannya kembali saat meninggalkan critical region.
• Metode ini mengakibatkan:
- Prosesor tidak dapat beralih ke proses lain karena dengan mematikan interupsi maka penjadwal
pun tidak dieksekusi.
- Proses dapat menggunakan memori bersama (shared memory) tanpa takut intervensi proses lain
karena tidak ada proses lain yang dieksekusi pada saat itu.
• Kelemahan metode ini:
- Bila proses yang mematikan interupsi mengalami gangguan misalnya crash maka interupsi tidak
dapat dihidupkan kembali, akibatnya keseluruhan sistem akan terganggu.
- Pada sistem multiprocessor, pematian interupsi hanya berpengaruh pada prosesor yang
mengeksekusi instruksi tersebut. Proses pada prosesor lainnya masih bebas untuk memasuki
critical region.
• Metode ini tidak cocok untuk digunakan pada proses-proses user sehingga digunakan pada proses-
proses kernel (pada sistem uniprocessor) yang sangat kritis (tidak boleh diintervensi proses lain sama
sekali) seperti saat memodifikasi PCB.
Metode dengan Instruksi Khusus
pada Perangkat Keras
• Mutual exclusion dapat diimplementasikan dengan bantuan hardware. Hal ini terutama
dilakukan pada sistem multiprocessor. Perancang hardware menyediakan instruksi khusus
yang tidak dapat diinterupsi hingga pengeksekusiannya selesai. Instruksi ini biasanya
dilaksanakan dengan mengunci bus sehingga entitas lain tidak dapat mengganggu.
• Contoh-contoh instruksi yang demikian:
- tsl (Test and Set Lock).
- tas atau ts (Test and Set) pada IBM S/360, keluarga Motorola M68000, dan sebagainya.
- cs (Compare and Set) pada keluarga IBM 370.
- xchg (Exchange) pada ISA x86.
• Pada prinsipnya instruksi-instruksi ini men-set nilai flag menjadi 1 untuk melakukan
penguncian sehingga proses tidak diganggu oleh proses-proses lain saat memasuki critical
region. Saat proses keluar dari critical region, nilai flag dikembalikan menjadi nilai 0
sehingga memperbolehkan proses-proses lain untuk memasuki critical region.
• Metode ini memiliki kekurangan antara lain: memerlukan dukungan hardware sehingga
tidak dapat diterapkan di sembarang mesin, dan tidak efisien karena bersifat busy waiting.
Metode Semaphore
 Metode ini ditemukan pada tahun 1965 oleh E. W. Dijkstra dan
metode inilah yang secara luas digunakan hingga saat ini untuk
menjamin mutex.
 Semaphore merupakan variabel terproteksi yang hanya dapat
diakses atau diubah oleh salah satu dari operasi DOWN (P) atau
UP (V). Operasi UP dan DOWN merupakan operasi atomik yang
menjamin mutual exclusion dari setiap proses.
 Semaphore memiliki property sebagai berikut:
- Semaphore dapat diinisialisasi dengan nilai non-negatif.
- Terdapat dua operasi terhadap semaphore yaitu DOWN dan
UP.
 Semaphore juga dapat digunakan untuk melakukan sinkronisasi
proses.
Metode Semaphore
• Operasi DOWN dan UP menjamin bahwa hanya
terdapat satu proses yang berada dalam critical
region. Semua proses yang ingin memasuki critical
region diharuskan menunggu dalam suatu antrian
yang disebut semaphore queue. Proses
perbolehkan memasuki critical region-nya jika dan
hanya jika tidak ada proses lain dalam critical
region.
• Dalam hal ini, proses dapat memasuki critical
region jika dan hanya jika s bernilai 1.
Metode Semaphore
 Struktur umum proses dengan semaphore:
Begin
Rutin pendahuluan
DOWN (s);
Critical region
UP (s);
Rutin-rutin yang tersisa
End.
Metode Semaphore
 Algoritma operasi DOWN dan UP:
Procedure DOWN (var s: semaphore)
Begin
if s > 0 then
s := s – 1;
else
tempatkan proses pada semaphore queue
proses di-blocked
endif
End.

Procedure UP (var s: semaphore)


Begin
s := s + 1;
if Not (semaphore queue kosong) then
Kirimkan satu proses ke luar semaphore queue
endif
End.
Metode Semaphore
 Prinsip kerja semaphore:
- Suatu proses tidak dapat memasuki critical region jika
tidak dapat menyelesaikan operasi DOWN (s) tanpa
ditambahkan ke semaphore queue. Jadi jika suatu proses
berada di critical region maka proses tersebut telah
menyelesaikan operasi DOWN (s) dengan sukses.
- Suatu proses yang keluar dari critical region men-set nilai
s menjadi 1 dengan melakukan UP (s) sehingga proses
lain dapat memasuki critical region.
- Pemilihan proses dalam semaphore queue tidak
ditentukan oleh Dijkstra, namun dapat dipillih sesuai
dengan kebutuhan dan kepentingan sistem.
Metode Semaphore
• Prinsip kerja semaphore:
• Nilai variabel semaphore (s) adalah 0 atau 1. s bernilai 1
berarti proses boleh memasuki critical region, s bernilai 0
berarti proses belum boleh memasuki critical region dan
proses akan dimasukan ke semaphore queue.
• Untuk merubah/mengakses nilai variabel s harus dengan
menggunakan operasi DOWN (P) atau UP (V). Operasi
DOWN dan UP merupakan operasi atomik. Cara operasi
DOWN dan UP mempengaruhi variabel s diperlihatkan
berikut ini:
Metode Semaphore
Metode Semaphore
• Proses-proses yang memiliki critical region memiliki struktur umum
sebagai berikut:
Metode Semaphore
• Ilustrasi cara kerja semaphore
a. Diasumsikan s = 1, dan terdapat empat proses (PA, PB, PC, dan PD) dalam ready queue. Setiap
proses memiliki struktur seperti Gambar 3. PA dijadwalkan diproses dan dikirim untuk diproses.
Inilah yang terjadi:
b. PA menjalankan instruksi 0 pada Gambar 3.
c. PA mulai menjalankan instruksi 1 pada Gambar 3 yaitu DOWN (s).
d. Instruksi D.1 dalam prosedur DOWN dijalankan yaitu memeriksa apakah s > 0. Karena s == 1,
maka s dikurangi 1 sebagaimana yang terdapat dalam instruksi D.2. Sekarang s == 0. Eksekusi
dilanjutkan dengan mengerjakan instruksi D.4 (instruksi D.3 tidak dikerjakan).
e. PA memulai eksekusi instruksi 2 pada gambar 3.
f. Diasumsikan bahwa kuantum PA habis pada saat proses ini masih dalam critical region. Terjadi
context switching. PA diubah statusnya dari Running menjadi Ready.
g. Diasumsikan PB yang dijalankan sekarang.
h. PB menjalankan instruksi 0 pada Gambar 3. Ingat algoritma penjadwalan Round Robin pada
bagian penjadwalan proses.
i. Keadaan proses “dibekukan” oleh sistem operasi sehingga saat proses diproses kembali, proses
tidak “merasa” bahwa ia sudah pernah dihentikan pengeksekusiannya.
Metode Semaphore
h. PB mulai menjalankan instruksi 1 pada Gambar 3 yaitu DOWN (s).
i. Instruksi D.1 dalam prosedur DOWN dijalankan yaitu memeriksa apakah s > 0. Karena s == 0
(lihat langkah c), maka instruksi D.1 memberikan nilai false sehingga eksekusi dilanjutkan dengan
mengerjakan instruksi D.3 yaitu memindahkan proses ke semaphore queue dan proses di-blocked
(instruksi D.2 tidak dikerjakan).
j. Eksekusi dilanjutkan dengan instruksi D.4.
k. Karena PB tidak lagi ber-state Running, maka penjadwal menjadwalkan PC dan mengirimnya ke
prosesor.
l. PC akan mengalami langkah-langkah yang sama dengan PB dan akan dimasukan ke semaphore
queue karena s masih bernilai 0. s hanya dapat kembali bernilai 1 jika operasi UP (s) yang
terdapat sesudah critical region suatu proses dieksekusi. Hanya PA, saat dijadwalkan kembali,
yang dapat menjalankan UP (s). Semua proses yang ingin memasuki critical region saat PA belum
menyelesaikan critical region-nya akan berakhir di semaphore queue.
m. Akhirnya PA dijadwalkan kembali dan di-resume kembali seperti saat ia “dibekukan” pada
langkah e.
n. PA menyelesaikan instruksi 2 dalam Gambar 3 (critical region-nya).
o. PA memanggil UP (s) pada instruksi 3 Gambar 3.
p. Operasi UP (s) menambah nilai s. s sekarang bernilai 1.
Metode Semaphore
q. UP (s) memeriksa apakah semaphore queue kosong (pada instruksi U.2) dan menemukannya
tidak kosong.
r. PB dibebaskan dari semaphore queue (instruksi U.3), misalnya dengan memindahkannya ke
queue proses-proses ber-state Ready. PC tetap tinggal dalam semaphore queue.
s. Eksekusi dilanjutkan dengan mengerjakan U.4.
t. PA mengeksekusi instruksi 4 pada Gambar 3. Diasumsikan saat PA sedang mengeksekusi instruksi
ini, quantum-nya habis dan PD dijadwalkan (mungkin prioritas PD lebih tinggi dari PB).
u. PD menjalankan instruksi 0 dalam Gambar 3.
v. PD menjalankan rutin DOWN pada instruksi 1 Gambar 3.
w. Rutin DOWN bekerja sebagaimana yang ditunjukan dalam langkah c. Rutin ini akan men-set s
menjadi bernilai 0 dan mengizinkan PD memasuki critical region.
x. Diasumsikan PD menyelesaikan instruksi 2 dalam Gambar 3 (yaitu critical region-nya).
y. Diasumsikan kuantum PD habis setelah PD menyelesaikan critical region tetapi belum sempat
memanggil UP (s) pada instruksi 3 Gambar 3.
z. Diasumsikan PB sekarang dijadwalkan, karena PB sudah berada pada keadaan Ready (lihat
langkah r).
Metode Semaphore
aa. PB mengeksekusi instruksi 0 dan 1 dalam Gambar 3. Karena s masih bernilai 0, PB dimasukan lagi
ke semaphore queue.
bb. Diasumsikan PD dijadwalkan kembali, dan ia menyelesaikan rutin UP yang men-set nilai s
menjadi 1. Karena semaphore queue tidak kosong, PC akan dikeluarkan. PC dimasukkan ke queue
proses-proses ready.
cc. PC sekarang dijadwalkan untuk dijalankan.
dd. Demikian seterusnya hingga semua proses diselesaikan.
Deadlock
• Deadlock adalah keadaan dimana suatu proses
menunggu terjadinya suatu kejadian yang tidak
pernah terjadi. Sekumpulan proses mengalami
deadlock apabila setiap proses yang ada dalam
kumpulan itu saling menunggu suatu kejadian yang
hanya dapat dilakukan proses lain yang terdapat
dalam kumpulan itu.
• Deadlock terjadi saat terdapat lebih dari satu
proses yang ingin mengakses sumber daya secara
eksklusif, sehingga terjadi persaingan antara
proses-proses itu untuk mendapatkan sumber daya
tersebut.
Deadlock
 Ilustrasi deadlock:
- Terdapat dua proses, yaitu P1 dan P2 yang ingin
menggunakan dua sumber daya kritis R1 dan R2 untuk
melanjutkan eksekusinya.
- Deadlock terjadi bila R1 diberikan kepada P1, sedangkan
R2 diberikan ke P2. Tidak ada proses yang dapat
melepaskan sumber daya yang dipegangnya karena
masing-masing menunggu ketersediaan kedua sumber
daya (R1 dan R2) secara sekaligus yang tidak akan pernah
terjadi. Akibatnya proses P1 dan P2 tidak dapat membuat
kemajuan apapun.
Model Deadlock
• Urutan pengoperasian perangkat I/O (perangkat Input/Output) adalah:
- Meminta (request) : meminta layanan perangkat I/O.
- Memakai (use) : memakai perangkat I/O.
- Melepaskan (release) : melepaskan pemakaian perangkat I/O.
• Model proses dengan sumber daya:

• Deadlock terjadi jika:


- P0 sambil menggengam R0 meminta R1.
- P1 sambil menggengam R1 meminta R0.
• Skenario di atas mengakibatkan proses P0 dan P1 saling menunggu proses lainnya untuk
melepaskan sumber daya yang digengamnya, tetapi kejadian ini tidak akan pernah terjadi
karena untuk melepaskan sumber daya yang digengamnya masing-masing proses harus
mendapatkan sumber daya yang dimintanya.
Model Deadlock
• Deadlock tersebut dapat digambarkan sebagai graph melingkar sebagai
berikut:

• Terjadinya deadlock ditandai dengan munculnya graph melingkar.


• Deadlock tidak hanya terjadi pada dua proses dan dua sumber daya, tapi
dapat juga melibatkan lebih dari dua proses dan sumber daya.
Deadlock
 Syarat-syarat perlu terjadinya deadlock (disebut juga kondisi Coffman yang
dideskripsikan pertama kali pada tahun 1971 oleh Edward G. Coffman, Jr.):
- Kondisi mutual exclusion.
- Kondisi gengam dan tunggu (hold and wait condition), yaitu proses-proses yang
menggengam sumber daya menunggu sumber daya baru.
- Kondisi non-preemption, yaitu kondisi dimana sumber daya yang sebelumnya
diberikan tidak dapat diambil paksa dari proses yang menggengamnya, sumber
daya itu harus secara eksplisit dilepaskan dari proses tersebut.
- Kondisi menunggu secara sirkuler (circular wait condition), yaitu kondisi dimana
terdapat rantai sirkuler dari dua proses atau lebih dan masing-masing proses
menunggu sumber daya yang digengam oleh anggota berikutnya dari rantai
tersebut.
 Tiga syarat pertama merupakan syarat perlu (necessary condition) bagi terjadinya
deadlock. Terjadinya deadlock selalu berarti terpenuhinya ketiga kondisi tersebut,
namun keberadaan ketiga kondisi itu belum berarti deadlock.
 Deadlock baru benar-benar terjadi apabila syarat keempat terpenuhi, jadi syarat
keempat merupakan keharusan bagi terjadinya deadlock.
Metode-Metode untuk Mengatasi
Deadlock
• Metode-metode untuk mengatasi deadlock dapat dikelompokkan
menjadi tiga bagian, yaitu:
- Mencegah terjadinya deadlock (deadlock prevention), yaitu berusaha
mengkondisikan sistem untuk menghilangkan kemungkinan
terjadinya deadlock. Metode ini merupakan solusi yang “bersih” dari
sudut tercegahnya deadlock, namun menghasilkan utilisasi sumber
daya yang buruk.
- Menghindari terjadinya deadlock (deadlock avoidance), yaitu
menghindarkan kondisi-kondisi yang paling mungkin menimbulkan
deadlock. Ini tidak berarti menghilangkan semua kemungkinan
terjadinya deadlock. Secara teoritis, deadlock dimungkinkan.
- Metode deteksi dan pemulihan dari deadlock (deadlock detection
and recovery).
Pencegahan Deadlock
• James W. Havender pada tahun 1968 mengemukakan bahwa deadlock
tidak akan terjadi jika sembarang dari keempat syarat tidak terpenuhi;
untuk meniadakan syarat-syarat tersebut ia menyarankan strategi-
strategi berikut:
- Tiap proses harus meminta semua sumber daya yang diperlukan
sekaligus dan tidak berlanjut hingga semuanya diberikan.
- Jika proses telah sedang memegang sumber daya tertentu, untuk
permintaan berikutnya proses harus melepas sumber daya yang
dipegangnya. Jika diperlukan, proses meminta kembali sekaligus
dengan sumber daya yang baru.
- Beri pengurutan linear terhadap tipe-tipe sumber daya pada semua
proses, yaitu jika proses telah dialokasikan suatu tipe sumber daya
maka berikutnya proses hanya boleh meminta sumber daya dengan
tipe pada urutan berikutnya.
Pencegahan Deadlock
• Konsekuensi yang timbul dari meniadakan syarat-syarat perlu bagi terjadinya
deadlock:
- Meniadakan mutex: mutex tidak dapat dihindari, karena ada beberapa jenis
aktivitas yang mutlak memerlukan mutex.
- Meniadakan hold and wait:
Untuk meniadakan hold and wait dapat dilakukan dengan mengalokasikan semua
sumber daya yang dibutuhkan atau tidak sama sekali atau dengan menerapkan
hold and release (setiap kali terjadi permintaan akan suatu sumber daya maka
proses harus melepaskan sumber daya yang telah dipegangnya).
Masalah yang timbul karena penerapan metode di atas:
- Sukar untuk mengetahui semua sumber daya yang dibutuhkan oleh suatu
proses karena di awal proses tidak diketahui berapa sumber daya yang
diperlukan.
- Tidak efisien.
- Metode hold and release tidak dimungkinkan karena terdapat proses yang
memerlukan lebih dari satu sumber daya untuk menyelesaikan tugasnya.
Pencegahan Deadlock
- Meniadakan kondisi non preemption: tidak mungkin meniadakan kondisi ini
sebab tidak semua proses dapat menerapkan preemption (mis. pada proses
percetakan).
- Meniadakan kondisi menunggu sirkuler:
Metode untuk meniadakan kondisi ini dapat digunakan beberapa cara, yaitu:
- Proses hanya dibolehkan menggengam satu sumber pada satu saat.
Metode ini tidak dimungkinkan. Metode ini sama dengan metode hold and
release.
- Penomoran global semua sumber daya, proses dapat meminta sumber
daya kapanpun menginginkan tetapi permintaan harus dibuat terurut
secara numerik. Dengan demikian tidak akan menimbulkan siklus. Namun
tidak ada cara pengurutan sumber daya yang memuaskan semua pihak.
Penghindaran Deadlock
• Gagasan dasar penghindaran deadlock adalah hanya memberi akses ke
permintaan sumber daya yang tidak mungkin menimbulkan deadlock. Jika
keadaan memungkinkan terjadinya deadlock, proses yang meminta di-suspend
hingga permintaannya “aman” diberikan. Keadaan ini biasanya terjadi setelah
satu sumber daya atau lebih dilepaskan.
• Terdapat dua keadaan yang berhubungan dengan penghindaran deadlock:
- Keadaan selamat (safe state), yaitu keadaan dimana tidak terdapat deadlock
dan terdapat cara untuk memenuhi semua permintaan yang ditunda tanpa
menghasilkan deadlock dengan menjalankan proses-proses secara berhati-
hati mengikuti suatu urutan tertentu.
- Keadaan tak selamat (unsafe state), yaitu keadaan dimana tidak terdapat
cara untuk memenuhi semua permintaan yang ditunda tanpa menimbulkan
deadlock.
Penghindaran Deadlock
• Ilustrasi safe state:
Pada sistem terdapat 10 buah sumber daya sejenis. Terdapat tiga proses yang memerlukan sumber
daya tersebut:
- Proses A, membutuhkan 10 sumber daya, saat ini menggengam 2 sumber daya.
- Proses B, membutuhkan 3 sumber daya, saat ini menggengam 1 sumber daya.
- Proses C, membutuhkan 7 sumber daya, saat ini menggengam 3 sumber daya.
Untuk menghindari terjadinya deadlock, pengalokasian sumber daya dilakukan sebagai berikut:
- Empat (4) sumber daya bebas dialokasikan kepada proses C; proses C memperoleh sumber daya
yang diperlukannya sehingga proses ini dapat selesai dan membebaskan sumber daya yang
digengamnya.
- Dua (2) sumber daya dari 7 sumber daya bebas dialokasikan kepada proses B; proses B
memperoleh sumber daya yang diperlukannya sehingga proses ini dapat selesai dan
membebaskan sumber daya yang digengamnya.
- Delapan (8) sumber daya bebas dialokasikan kepada proses A sehingga proses A dapat selesai.
Tiga proses dalam ilustrasi dapat selesai dengan sempurna dengan melakukan penjadwalan secara
hati-hati.
Penghindaran Deadlock
• Ilustrasi unsafe state:
Pada sistem terdapat 10 buah sumber daya sejenis. Terdapat tiga proses yang
memerlukan sumber daya tersebut:
- Proses A, membutuhkan 10 sumber daya, saat ini menggengam 2 sumber daya.
- Proses B, membutuhkan 3 sumber daya, saat ini menggengam 1 sumber daya.
- Proses C, membutuhkan 7 sumber daya, saat ini menggengam 3 sumber daya.
Pengalokasian sumber daya dilakukan sebagai berikut:
- Dua (2) sumber daya dari 4 sumber daya bebas dialokasikan kepada proses B dan dua
sumber daya yang lain diberikan kepada proses A; proses B memperoleh sumber daya
yang diperlukannya sehingga proses ini dapat selesai dan membebaskan sumber daya
yang digengamnya.
- Terdapat 3 sumber daya bebas pada sistem, namun dengan penglokasian dengan cara
apapun tidak akan menyelesaikan dua proses yang sedang aktif.
Penghindaran Deadlock
• Terdapatnya unsafe state bukan berarti deadlock, namun hanya
menyatakan bahwa state tersebut berkemungkinan menuju deadlock.
• Salah satu algoritma untuk menghindari deadlock adalah algoritma
bankir yang diusulkan oleh Dijkstra pada tahun 1965. Algoritma ini
dinamakan demikian karena kemiripannya dengan seorang bankir yang
ingin mengeluarkan kredit ke para pelanggan dengan sumber daya yang
terbatas. Algoritma ini memungkinkan sistem operasi mengetahui,
sebelum suatu sumber daya dialokasikan, apakah akan terjadi safe state
atau unsafe state.
• Algoritma ini membuat dua matriks dinamis, matriks pertama (matriks
A) berisi sumber daya yang dialokasikan ke proses-proses pada suatu
waktu tertentu, matriks kedua (matriks B) berisi sumber daya yang
masih dibutuhkan oleh proses-proses pada waktu yang sama.
Penghindaran Deadlock
• Ilustrasi algoritma bankir:

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.

Anda mungkin juga menyukai