Page 1 of 1

Success!

Posted: Tue May 15, 2007 9:50 pm
by astrocrep
I cannot believe it!

After 2 years of on and off os coding (mostly off) and just starting from scratch again, I have finally gotten past my biggest hurdle (yet)

I have a multi-tier memory manager...

1.) a simple low-level physical page allocator.
2.) a higher level virtual page mapper
3.) a simple kernel heap malloc. (this guy returns a pointer to a spot in the heap, and if need by, will map in an un allocated physical page from anywhere in memory to a spot virtually at the end of the heap!)

I am so excited... this has been a major long term goal for me, and I just hit it. Granted the malloc will need to be made much stronger... but the phys page allocator and the vmm both are pretty solid I think!!

I would be more then glad to post code, just reply back if you would like to see it. This code has almost NOTHING in common with my last memory manager.

Sorry for being all corny but I am bouncing off the walls right now... (its a big step for me... even though its just a drop in the bucket in the os devel cycle)

Also the kernel runs in vmware, qemu, and a real pc, and will also reserve all memory address listed as "not-free" in the grub multiboot data...

Thanks for listening to me ramble!!

-Rich

Posted: Wed May 16, 2007 2:49 am
by os64dev
uhh.. your welcome :wink:

Posted: Wed May 16, 2007 3:52 am
by XCHG
Congratulations! Although I coded my kernel (only) virtual memory manager in Assembly in 2 days. I now have three functions:

Code: Select all

void* __AllocateKernelPages (DWORD NumberofPages, DWORD AllocationFlags); StdCall;
Boolean __FreeKernelPages (void* BaseAddress); StdCall;
Boolean __ProtectKernelPages (void* BaseAddress, DWORD HowManyPages, DWORD ProtectionLevel); StdCall;
Now what I have to do is to expand these function so that they will work for user processes. Anyway, good luck to you.