A page allocator for microkernels