Tugas pemrograman I untuk peserta yang diasisteni Erio

Memory Management


Pada suatu sistem operasi terdapat program memory management. Program ini bertugas untuk memberikan memory sebesar yang diminta oleh proses. Pada sistem yang mempunyai memory sebesar 640 Kb, terdapat 10 buah blok-blok memory masing-masing sebesar 64 Kb. Pada saat suatu proses meminta sejumlah memory, maka blok pertama yang besarnya lebih besar atau sama dengan memory yang diminta akan dikeluarkan dari list. Kemudian blok tersebut dibagi dua sampai didapat bagian yang paling dekat dengan memory yang diminta. Kemudian blok memory yang tersisa akan dikembalikan ke dalam list, sesuai dengan besarnya blok.

Contoh :
Pada awal terdapat
64 64 64 64 64 64 64
Kemudian terdapat permintaan sebesar 12, maka akan diambil blok pertama shg list menjadi
64 64 64 64 64 64
Kemudian blok sebesar 64 dibagi (kelipatan dua) sehingga menjadi satu blok sebesar 32 dan dua blok sebesar 16. Satu blok sebesar 16 akan diberikan dan sisanya dikembalikan, sehingga list menjadi
16 32 64 64 64 64 64 64
Bila terdapat permintaan yang jumlahnya lebih besar dari blok-blok yang ada, maka permintaan akan ditolak.

Suatu proses dapat mengembalikan memory yang telah dipakainya dan akan dimasukkan ke dalam list sesuai dengan ukurannya. Misalnya proses di atas mengembalikan memory yang diambilnya (sebesar 16), maka dalam list terdapat
16 16 32 64 64 64 64 64 64
Suatu blok memory yang sudah dipecah, tidak dapat digabungkan lagi.