Anda di halaman 1dari 13

Banker's Algorithm

Faradewi Kirana
200820100008
Manajemen Sistem Operasi Paralel A
Banker's Algorithm
Banker’s Algorithm atau Algoritma Banker adalah
salah satu metode untuk mencegah deadlock. Algoritma
ini disebut sebagai algoritma banker karena memodelkan
sebuah bank di kota kecil yang berurusan dengan
sekumpulan nasabah yang memohon kredit.
Struktur Data dalam Banker’s
Algorithm
Beberapa struktur data harus dipertahankan untuk
mengimplementasikan algoritma bankir. Struktur data ini mengkodekan
status sistem alokasi sumber daya. Struktur data yang dibutuhkan
sebagai berikut, di mana : n adalah jumlah utas dalam sistem dan m
adalah jumlah jenis sumber daya.
Struktur Data :
1. Available (Tersedia)
Vektor panjang m menunjukkan jumlah sumber
daya yang tersedia dari setiap jenis. Jika Available
(tersedia) [j] = k, kemudian k contoh jenis sumber
daya Rj tersedia.
2. Max (Maks)
Jika n × m matriks mendefinisikan permintaan
maksimum setiap utas.
3. Allocation (Alokasi)
Jika n × m matriks mendefinisikan jumlah
sumber daya dari setiap jenis yang saat ini
dialokasikan untuk setiap utas.
4. Need (Membutuhkan)
Jika n × m matriks menunjukkan kebutuhan
sumber daya yang tersisa dari setiap utas.
Safety Algorithm
Safety Algorithm atau Algoritma Keamanan dapat digambarkan sebagai

berikut :

1. Biarkan Work dan Finish menjadi vektor dengan panjang m dan n.

Masing-masing inisialisasi Work = Avaliable dan Finish[i] = false untuk i

= 0, 1, ..., n-1.

2. Temukan indeks i sedemikian rupa sehingga keduanya, Finish[i] == false

dan Need i ≤ Work

3. Work = Work + Allocation i, Finish[i] = true, lalu pergi ke langkah 2

4. Jika Finish[i] == true untuk semua i, maka sistem dalam keadaan aman.
Resource-Request Algorithm
Resource-Request Algorithm atau Algoritma Permintaan membiarkan Requesti menjadi
vector permintaan untuk utas Ti. Jika Requesti [j] == k, maka utas Ti menginginkan k.
Ketika sebuah permintaan untuk sumber daya dibuat oleh utas Ti, tindakan berikut akan
dilakukan:
1. Jika Request i ≤ Need i , lanjutkan ke langkah 2. Jika tidak, naikkan kondisi kesalahan,
karena utas telah melampaui klaim maksimumnya.
2. Jika Requesti ≤ Avaliable, lanjutkan ke langkah 3. Jika tidak, Ti harus menunggu,
karena sumber daya tidak tersedia.
3. Minta sistem berpura-pura telah mengalokasikan sumber daya yang diminta ke thread
Ti dengan mengubah status sebagai berikut:
Contoh Ilustrasi
Banker's Algorithm
Untuk mengilustrasikan penggunaan Banker's Algorithm, pertimbangkan sistem
dengan 5 utas yaitu T0 melalui T4 dan empat jenis sumber daya yaitu A,B,C dan
D.Berikut ilustrasi snapshot mewakili keadaan sistem saat ini :

Allocation Max Available


ABCD ABCD ABCD
T0 0 0 1 2 0 0 1 2 1 5 2 0
T1 1 0 0 0 1 7 5 0
T2 1 3 5 4 2 3 5 6
T3 0 6 3 2 0 6 5 2
T4 0 0 1 4 0 6 5 6
Selanjutnya kita perlu mencari tahu berapa isi dari matriks Need dimana :

Need =berikut
Sehingga hasilnya adalah sebagai Max -:Allocation

Max Allocation Need


ABCD ABCD ABCD
0 0 1 2 0 0 1 2 T0 0 0 0 0
1 7 5 0 - 1 0 0 0 = T1
T2
0 7 5 0
1 0 0 2
2 3 5 6 1 3 5 4
0 6 5 2 0 6 3 2 T3 0 0 2 0
0 6 5 6 0 0 1 4 T4 0 6 4 2
Misalkan sekarang utas T1 tiba, sehingga Request1 = (0,4,2,0). Dapatkah
permintaannya segera diberikan?. Untuk memutuskan apakah permintaan itu dapat
segeria diberikan, pertama-tama kita harus memeriksa apakah Requets ≤ Available :

Request Available
ABCD
0 4 2 0
≤ ABCD
1 5 2 0
Dapat dikatakan bahwa Requets ≤ Available adalah benar, kemudian kita harus
berpura-pura bahwa permintaan telah dipenuhi dan tiba ditempat baru dengan
mengubah status sebagai berikut :

Allocation Need Available


AB C D ABCD ABCD
T0 0 0 1 2 0 0 0 0 1 1 0 0
T1 1 4 2 0 0 3 3 0
T2 1 3 5 4 1 0 0 2
T3 0 6 3 2 0 0 2 0
T4 0 0 1 4 0 6 4 2
Setelah itu kita harus menentukan apakah status sistem baru ini aman atau tidak?,
untuk itu kita harus menjalankan Safety Algorithm dimana sebagai berikut :

Work = Available,
jika Work = Work + Allocation maka dapat disimpulkan bahwa
Work = Available + Allocation i

Allocation Work
ABCD ABCD
0 0 1 2 Available 1 1 1 2
1 4 2 0 + ABCD
1 1 0 0
= 2 5 2 0
1 3 5 4 2 4 5 4
0 6 3 2 1 7 3 2
0 0 1 4 1 1 1 4
Selanjutnya dapat dikatakan aman jika Need ≤ Work dan Finish[i] == true untuk
semua i,

Need Work
ABCD ABCD
0 0 0 0 1 1 1 2
0 3 3 0 ≤ 2 5 2 0
1 0 0 2 2 4 5 4
0 0 2 0 1 7 3 2
0 6 4 2 1 1 1 4

Dari hasil diatas maka dapat dikatakan status sistem baru ini aman dan
memenuhi persyaratan keamanan, sehingga kita dapat segera mengabulkan
permintaan utas T1
:)
sih
ka
ma
eri
T

Anda mungkin juga menyukai