Rabu, 09 Januari 2013

Algoritma Ostrich



Menurut Dijkstra (1965) algoritma penjadwalan dapat menghindari Deadlock dan algoritma penjadwalan itu lebih dikenal dengan sebutan algoritma banker. Algoritma ini dapat digambarkan sebagai seorang bankir yang berurusan dengan kelompok orang yang meminta pinjaman.

kepada siapa dia dapat memberikan pinjamannya. Dan setiap pelanggan memberikan batas pinjaman maksimum kepada setiap peminjam dana. Tentu saja si bankir tahu bahwa si peminjam tidak akan meminjam dana maksimum yang mereka butuhkan dalam waktu yang singkat melainkan bertahap. Jadi dana yang ia punya lebih sedikit dari batas maksimum yang dipinjamkan. Lalu ia memprioritaskan yang meminta dana lebih banyak, sedangkan yang lain disuruh menunggu hingga peminta dana yang lebih besar itu mengembalikan pinjaman berikut bunganya, baru setelah itu ia meminjamkan pada peminjam yang menunggu.

Algoritma bankir ini mempertimbangkan apakah permintaan mereka itu sesuai dengan jumlah dana yang ia miliki, sekaligus memperkirakan jumlah dana yang mungkin diminta lagi. Jangan sampai ia sampai pada kondisi dimana dananya habis dan tidak dapat meminjamkan uang lagi. Jika demikian maka akan terjadi kondisi deadlock. Agar kondisi aman, maka asumsi setiap pinjaman harus dikembalikan waktu yang tepat.
Secara umum algoritma bankir dapat dibagi menjadi empat struktur data, anggap variabel n adalah jumlah proses dalam sistem dan m jumlah sumber daya yang ada:

1. Available: Sebuah vektor m mengindikasikan sumber daya yang tersedia untul setiap tipe. Jika Avilable[j] = k, dimana k instansi dari tipe Rj yang tersedia.

2. Max: Matriks n x m mendefinisikan maksimal permintaan tiap proses. Jika Max[i,j] = k, maka proses Pi meminta paling banyak k instansi dari sumber daya tipe Rj. 

3. Allocation: Matriks n x m mendefinsikan jumlah sumber daya setiap tipe yang dialokasian oleh setiap proses. Jika Allocation[i,j] = k, maka proses Pi dialokasikan k instansi dari sumber daya Rj.

4. Need: Matriks n x m yang mengindikasikan sisa sumber daya yang dibutuhkan setiap proses.
Jika Need[i,j] = k, maka proses Pi membutuhkan lebih k instansi dari sumber daya Rj untuk menyelesaikan tugasnya. Need[i,j]= Max[i,j] – Allocation[i,j].
Bentuk penyajian algoritma ini secara sederhana, misalkan X dan Y adalah vektor dengan panjang n. sehingga X < Y jika dan hanya jika X[i] < Y[i] untuk semua I = 1,2,..,n. contohnya, jika X=(1,7,3,2) dan Y = (0,3,2,1) maka Y=!X. Y

Tidak ada komentar:

Posting Komentar