And so, the last piece of the puzzle falls into place as the last part of the memory management infrastructure, the kernel allocator, gets the treatment that I claimed it would get earlier. So, am I ready to start implementing the process manager now ? Well, I’d like to, but there’s a catch : I’ve run my old RPC testing code out of curiosity, and it crashes with a triple fault when allocating and filling too much memory. This suggests that paging flags are badly set at some point, or that memory management code is allocating memory regions which it shouldn’t allocate. Either way, I don’t like it, so I’m back to testing for now, ironing out the new memory management implementation and perhaps building up a new automated test suite for it as before.
Update : Alright, it’s fixed now. As it turns out, when you update your memory management infrastructure from an “All RAM is identity-mapped in the kernel’s address space and kernel memory allocation does not use paging” algorithm to a “Kernel works pretty much like every other process, except that memory pages are identity-mapped” one, you better make sure that you ACTUALLY perform said identity mapping, and do it properly. Otherwise, Bad Things happen.