OS Outline:
entry.asm:
-have 30 or so bytes reserved for the stack, and set the stack to it
-print boot messages
-read multiboot structure and save info
-read command line and save info (overwriting multiboot if nessessory)
-copy multiboot structures out of the kernel stack and heap
-initisiaize GDT, IDT, Page tables, etc, putting them in the kernel heap, using kernel malloc protocol
-activate page tables
-call 'kmain' in main.c
main.c:
-kmain:
--unmap the kernel from 0x400000
--read system info from info saved by entry.asm
--create processes for the drivers or reserve space in the ring0 server area
--initilize drivers
--create processes for the servers given by the multiboot loader (or ring0 server area)
--load in order specified by command line
0xFFFFF000 - 0xFFFFFFFF: Last page unmapped
0x00000000 - 0xC0000000: User mode process