Советую начать без страниц, осдева и вот этого всего, а с написания своего примитивного маллока на базе связного списка блоков. Предусмотреть освобождение, нарезку блоков и адекватный формат заголовка придумать. Память можно выделить в статическом массиве.
Затем можно вместо тупого выделения памяти завести несколько наборов блоков. Посмотрите
вот тут как раньше был реализован маллок, там и описание есть.
Затем можно (считайте, мы под *nix сидим) перейти от большого статического массива байтов к страницам и выделять куски памяти с помощью mmap. Так поймёте, в чем разница между страницами и блоками, получаемыми от malloc.
Чтобы протестировать свой аллокатор как следует, научитесь пользоваться дингамическими библиотеками. Подсуньте свою библиотеку с переопределённым сишным malloc/calloc/realloc/free каким-нибудь приложениям, да хоть тому же башу, и попробуйте ими попользоваться. Заодно и про загрузку файлов многое узнаете интересное.