[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Linux/i386 mm
At 17.02 03/02/01 -0700, you wrote:
>My MM notes, at the moment covering only initialization and the
>zone allocator, are now available at:
>
>http://home.earthlink.net/~jknapka/linux-mm/vmoutline.html
>
>Comments are welcome.
I have some questions:
- On your MM notes you say:
>Apparently kernel virtual memory must map all of physical memory. Why?
>Must be so that kernel code can access any page. OK, so why is PAGE_OFFSET
>so large? Why not just make it 4K? Hypothesis: all processes are going to
>share (at least in kernel mode) the mapping starting at PAGE_OFFSET.
>That means that if user processes are going to have address space starting
>at 0, PAGE_OFFSET has to be big enough to allow some room for user-mode
>addresses. There's no reason user processes couldn't have a totally
>separate address mapping from the kernel, and both could start at low
>addresses; but that would make it a pain for the kernel to access
>user-space memory, and would mean that entry into the kernel would
>require icky page-table manipulation.
Why would mean that entry into the kernel would require icky page-table
manipulations? A simple switch of cr3 to the user page table
(and vice versa) wouldn't be enough?
- From head.S:
/*
* Enable paging
*/
3:
movl $swapper_pg_dir-__PAGE_OFFSET,%eax
At this point paging is not enabled yet (it will in the next lines)
so we are working with physical addresses.
If $swapper_pg_dir already has physical address 0x00101000 and cr3 is
loaded with physical addresses, why compute $swapper_pg_dir-__PAGE_OFFSET?
Thank you very much
--
Lorenzo
-
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/
IRC Channel: irc.openprojects.net / #kernelnewbies
Web Page: http://www.surriel.com/kernelnewbies.shtml