Deadlock
Adalah kejadian atau peristiwa dimana lebih dari satu proses memperebutkan resources yang sama, contoh resources : Harddisk, Printer, dll. Pengertian deadlock menurut buku adalah"Bloking secara permanent dari kumpulan proses yang mana memperebutkan system resources atau komunikasi antar proses" (terjemahan sendiri , No Google Translate).
Contoh Deadlock
Kondisi untuk kejadian Deadlock Resources
- Mutual Exclusion : hanya satu proses yang boleh mengakses resources, sehingga proses
menunggu dengan lama dan sabar. - Hold And Wait : sebuah kejadian dimana sebuah proses yang memegang resources
menunggu hasil inputan dari proses lain untuk run. contoh:
saat pembagian makanan di acara, yang duduk paling ujung langsung ambil
untuk dirinya sendiri, oleh karena itu jika makanan yang dibagi ternyata
tidak mencukupi, proses yang harusnya makan , malah tidak kedapatan, dan
proses yang tadi tidak akan makan sampai proses sebelumnya mendapat
makanan oleh karena itu terjadi deadlock (semuanya kelaparan wkwkwkwk). - No-preemption : Sebuah proses yang sedang berjalan, tidak dapat diganggu gugat sampai
proses tersebut selesai menggunakan resources dan melepasnya untuk
digunakan proses lain. - Circular wait :
Deadlock pun ada pemodelannya agar lebih mudah dalam menjelaskan situasi deadlock. Pemodelan menggunakan RAG (Resources Allocation Graph)
contoh :
contoh kasusnya :
Jika kasus tersebut digambarkan kedalam RAG maka hasilnya seperti ini :
dan penyelesaian dari deadlock tersebut bisa dengan cari ini :
Ada macam - macam cara untuk menghidari atau menghadapi deadlock seperti :
- Ostrich Algorithm (Just ignore the problem)
- Detection and Recovery : Membiarkan masalah terjadi, lalu masalahnya di analisa dan
lakukan action yang sesuai untuk menghadapai masalah tersebut. - Dynamic avoidance : Menghindari masalah di awal dengan alokasi resources yang cermat.
- Preventing : Mencegah deadlock dengan menghilangkan salah satu kondisi deadlock.
Berikut simulasinya :
Kondisi pencegahan dalam kondisi penyebab deadlock :
- Mutual Exclusion
sebaiknya jangan digunakan untuk yang shareable resources.
- Hold and Wait
harus dapat menjamin bahwa kapanpun sebuah proses ingin mengakses resources, proses tersebut tidak boleh memegang resources lain.
- Circular wait
ada proses yang harus nunggu atau jalan duluan sehingga tidak terjadi saling nunggu.
- No-preemption
bukan merupakan pilihan yang tepat untuk mencegah deadlock.
- Mutual exclusion
dalam menggunakan metode ini, harus membuat antrian proses yang akan mengakses resources.
- Hold and Wait
dalam menggunakan metode ini, semua proses harus menginisialisasi resources yang akan dipakai sejak awal
- No preemption
mengambil semua resource.
- Circular wait
buat antrian secara numerically.
Memory Management
Adalah cara - cara untuk memanage memory, agar memory yang dipakai se-efisien mungkinRequirement untuk memory management :
- Relokasi
saat program sedang berjalan , program tersebut dapat saja di swap ke main memory di lokasi yang berbeda
- Proteksi
sebuah proses yang aktif, tidak boleh mereference alamat memory di dalam proses lain tanpa ada permission
- Sharing
memperbolehkan beberapa proses untuk mengakses porsi yang sama dari memory
- Logical Organization
program ditulis dalam bentuk modul - modul dan dicompile secara terpisah (share module)
- Physical Organization
memanage secara physical.
Logical addressing : referensi alamat memory independent terhadap tugas data sekarang di memory
Relative addressing : alamat diekspresikan sebagai lokasi yang relatif terhadap titik/point yang dikenal
Physical addressing : lokasi absolut atau lokasi sebenarnya dalam memory.
Cara - cara memory management :
- Partition
membagi - bagi (partisi) memory yang digunakan sehingga mampu untuk memproses banyak job secara bersamaan.
- Swapping
perpindahan (swap) alamat memory saat sebuah proses sedang berjalan.
- Bit map
- Linked list
- First fit -> fastest (karena langsung menemukan)
- Next fit
- Best fit -> memilih blok memory yang terdekat dengan size yang diminta
- Worst fit
- Quick fit
- Buddy system -> menggunakan perhitungan , dan semua space dianggap single block 2^U
dengan rumus 2U-1 < s <= 2U
memory allocation dengan buddy system
Binus & Sky Connectiva
Tidak ada komentar:
Posting Komentar