fix: replace pmm_alloc_page_low with pmm_alloc_page — fix fork OOM
The below-16MB page allocator (pmm_alloc_page_low) randomly sampled
pages and discarded any above 16MB. With 100 zombie children holding
CoW address spaces, the low-memory pool exhausted and fork() returned
-ENOMEM, killing init before the SIGSEGV/waitpid-100/echo.elf tests.
On 32-bit PAE all physical addresses are below 4GB, so the 16MB
restriction is unnecessary for PDPTs, page directories, page tables,
and user frames.
Changes:
- vmm.c: replace all pmm_alloc_page_low() with pmm_alloc_page(),
remove the dead pmm_alloc_page_low function
- usermode.c: replace pmm_alloc_page_low_16mb() with pmm_alloc_page(),
remove the dead function
- init.c: make SIGSEGV test failure non-fatal (goto instead of
sys_exit) so subsequent tests still run