== Kelley Nielsen ==
Email: [[MailTo(kelleynnn AT SPAMFREE gmail DOT com)]]
I am a kernel intern through the Gnome Outreach Program for Women. RikvanRiel is my mentor. My project is to rid the swapoff code of the quadratic complexity in try_to_unuse().
This page will eventually become a proper home page, but until I learn enough about wiki editing to write proper articles, I will be using this as a scratch area for my thoughts, questions, and article stubs and drafts.
=== My Current Working State ===
Rik has asked me, "can you find out, and describe to me, how the location of a certain place in swap is stored in the memory management data structures for a process? and what the two parts of the swap information describe?
*Action: study struct page and friends in include/linux/mm_types.h
*Action: study handle_mm_fault() found at: memory.c:3783:int handle_mm_fault(struct mm_struct *mm, ...
*Question: What are the memory management data structures for a process? what’s the data structure for a process, where does it live, and what are its members? (I assume that some of the members are mm structs)
*Question: what is (are) the top level struct(s) for memory management? What besides processes hold them? Partial answer: struct page is one => seen in (prob) Mauerer’s book*--where?
*Question: How is a swap area location described?
*'''Question''': The first double word block of a struct page holds a union (implying only one member is used at a time) of a pointer to a struct address_space, and a pointer to void intended for a slab object. I know that most memory comes from the buddy allocator, but the kernel has the slab allocator for small needs of its own. So, is the struct address_space associated with the buddy allocator? Question: are the page allocator and the buddy allocator the same thing? ''i.e.'' "page" describes what it does, and "buddy" describes how it works?
*["http://www.amazon.com/Professional-Kernel-Architecture-Wolfgang-Mauerer/dp/0470343435"]