Messages in this thread |  | | | Date | Fri, 4 Jun 1999 15:45:54 +0200 (MET DST) | | From | Bjorn Wesen <> | | Subject | Linux address mapping |
| |
I'm researching the MMU part of a Linux port, and am possibly slightly confused on what the memory map of Linux is supposed to look like.
The i386 version links the kernel to 0xc0000000 (well, plus some 100000 for some reason). I assume this is to enable process page maps to keep the kernels image in the vmem mapping, so that a MMU context switch is not required upon systemcalls/irq's (or using weird segment registers like fs) (linux 2.0 had the kernel at 0 or ?) So as seen from any process, the process itself has its own virtual memory between 0 and 0xc0000000 ? However I also understand the kernel can do allocate its own virtual memory using vmalloc. Where in the memory space is this placed, and are there any particular restrictions/requirements for placing this ? I had trouble finding this info while browsing the arch/i386 files. I might just be stupid.
Another thing I was thinking about, is if the kernel is mapped into every process page table, is this done on a page-by-page basis, i.e a 600 kb kernel is mapped using for example 600/4 PTE's linearily, but maybe processes can share the second level page table for the kernel mapping so each process don't need its own kernel PTE map set.
I wonder if there is an "ideal" MMU for Linux, i.e. one that maximizes performance and minimizes the porting work :)
brgds, /Bjorn
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
|  |