In usermode, memtest86+
allocates and pins memory. Kernel is free to use MMU and map this single contiguous segment to several physical adress space areas.
/dev/hugetbl
does similar, you get pages in smth like 4MB or 10MB, but actual backing for this pages may be discontiguous.
I don't think usermode access like this is justified.
Do check what xf86
project does -- video card drivers often require lots of memory :)
http://lwn.net/Articles/486301/ covered this subject from a different angle -- should you be able to expect large contiguous free blocks?
Perhaps you need to look at kernel level ops.