LAB4: Dinamička memorija


Zadatak

Dodati novi način upravljanja dinamičkom memorijom složenosti O(1).

Dodati ga u lib/mm/O1.c s novim sučeljem malloc0_init()/malloc0(size)/free0(blok).

Pokazati rad korištenja novog sučelja na primjerima koji trebaju demonstrirati i probleme kad nema memorije.

Pri radu, pri svakoj promjeni prikazati stanje strukture podataka. Npr.

O1malloc inicijaliziran, stanje:
stanje blokova 64: 0000000000000000
stanje blokova 128: 0000000000000000
...

zauzmi 800 B
dodijeljeno 1024 B na adresi 0xNešto
stanje blokova 1024: 0001001100000000

oslobodi 0x12345678
oslobođen blok veličine 512 B
stanje blokova 512: 0000000000001100

Primjer ideje za ostvarenje

Kod inicijalizacije može se blok za ovaj način tražiti od sustava s malloc/kmalloc.

Definirati nekoliko veličina blokova, npr. 64 B, 128 B, ... i samo takve blokove dodijeljivati. Npr. ako je traženo 300 B dati mu blok od 512 B.

U inicijalizaciji dobiveni blok podijeliti na dijelove (npr. 10-tak za 64 B, 10-tak za 128 itd.). Bitmapama pratiti koji su slobodni a koji zauzeti (liste imaju veliki "overhead").