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").