Page 1 of 1

higher-half-kernel memory addresses

Posted: Wed Nov 19, 2008 5:07 am
by sebihepp
Hello,

if I use a higher half kernel, does that mean the virtual address ist above 0xC000 0000 or does
it mean the physical address is above 0xC000 0000? And first the GDT is applied to the addresses and
then paging, right?

TIA Sebihepp

Re: higher-half-kernel memory addresses

Posted: Wed Nov 19, 2008 5:18 am
by AJ
sebihepp wrote:if I use a higher half kernel, does that mean the virtual address ist above 0xC000 0000 or does it mean the physical address is above 0xC000 0000?
It generally refers to virtual memory addresses. The lower half of the virtual memory space is often then exchanged depending on the running process. Also, it doesn't have to be 0xC0000000. For example, Windows uses 0x80000000 by default (with an 0xC0000000 option), IIRC.
And first the GDT is applied to the addresses and then paging, right?
If you are referring to the GDT segment base trick, you don't have to use that. If you use a suitable boot loader, you could get the boot loader to set up flat segmentation and use paging to place the kernel at the 3GiB mark. You can then jump directly to the kernel entry point without having to worry about segments (you'll still need an accessible GDT for when you start multitasking).

Cheers,
Adam

Re: higher-half-kernel memory addresses

Posted: Thu Nov 20, 2008 6:43 am
by sebihepp
Okay, thanks.

And I didn't refer to the GDT-trick.^^ I just asked, because I want to use one
GDT entry for a flat memory modell and then one for each driver, one for the kernel
and one for an application that should be run (But that's the future =) ).
And there will definitly be no multi tasking in my OS. That's some stuff for the future...

Cheers,
Sebihepp