I think I may have actually done it this time!
Anyway, I redid my paging initialization function, ran a couple of tests, and nearly shart myself when they seemed to work. I'm wondering if the kind users of the forum wouldn't mind doing some code review to make sure I'm not just deluding myself, please.
Here is my paging code.
Here's what I'm doing to attempt to trigger a read fault. (This is now out of date).
Here's what I'm doing to attempt to trigger a write fault. (This is now out of date.)
Here's a screen shot.
Right now I'm identity mapping all of the available system memory, and give all page directories, and page tables, the | 3 attributes. This seems to be allowing me to enable paging, and continue processing, but I'm not triggering any page faults. I'm hoping to go back through that, initialize only the page directories and tables that are needed to map the kernel, as well as use the proper attributes, so I can look into writing a proper page frame allocator, and see about swapping pages to a hard drive. I'd also like to start pushing towards user space, getting out of ring 0, and into task switching.
Any constructive criticisms, helpful hints, and suggestions would be very welcome.

