90 likes | 170 Views
Virtual Memory Area. Harold Austin Kyle Moore William Pedicone. Introduction. What is the vm_area_struct? What operations are attached to the struct vm_area_struct? Why did we get saddled with the Virtual Memory Struct? (Because we chose last)
E N D
Virtual Memory Area Harold Austin Kyle Moore William Pedicone
Introduction • What is the vm_area_struct? • What operations are attached to the struct vm_area_struct? • Why did we get saddled with the Virtual Memory Struct? (Because we chose last) • Some cool stuff about the Virtual Memory . . .
Overview - Page / VM Generalized duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory
Virtual Memory Flags List • VM_MAYREAD 0x00000010 • VM_MAYWRITE 0x00000020 • VM_MAYEXEC 0x00000040 • VM_MAYSHARE 0x00000080 • VM_GROWSDOWN 0x00000100 • VM_GROWSUP 0x00000000 • VM_NOHUGEPAGE 0x00000200 • VM_PFNMAP 0x00000400 • VM_DENYWRITE 0x00000800 • VM_EXECUTABLE 0x00001000 • VM_LOCKED 0x00002000 • VM_IO 0x00004000 • VM_SEQ_READ 0x00008000 • VM_RAND_READ 0x00010000 • VM_DONTCOPY 0x00020000 • VM_DONTEXPAND 0x00040000 • VM_RESERVED 0x00080000 • VM_ACCOUNT 0x00100000 • VM_NORESERVE 0x00200000 • VM_HUGETLB 0x00400000 • VM_NONLINEAR 0x00800000 • VM_MAPPED_COPY 0x01000000 • VM_HUGEPAGE 0x01000000 • VM_INSERTPAGE 0x02000000 • VM_ALWAYSDUMP 0x04000000 • VM_CAN_NONLINEAR 0x08000000 • VM_MIXEDMAP 0x10000000 • VM_SAO 0x20000000 • VM_PFN_AT_MMAP 0x40000000 • VM_MERGEABLE 0x80000000 • VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ) • VM_STACK_DEFAULT_FLAGSVM_DATA_DEFAULT_FLAGS • VM_STACK_FLAGS (VM_GROWSUP | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT) • VM_STACK_FLAGS (VM_GROWSDOWN | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT) • VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ) • VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK • VM_NormalReadHint(v) (!((v)->vm_flags & VM_READHINTMASK)) • VM_SequentialReadHint(v) ((v)->vm_flags & VM_SEQ_READ) • VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ) http://lxr.linux.no/linux+v3.0.4/include/linux/mm.h
Virtual Memory Operations • Open – opening a virtual memory area • Close – closing a virtual memory area • Fault – generating a page fault • Pg_mkwrite – ??? (writes to a file already opened?) • Access - ??? (Security?)
Resources • kos.enix.org/pub/linux-vmm.html • lxr.linux.no/linux+v3.0.4/linux/mm_types.h • www.makelinux.co.il/books/ikd2/ch14lev1sec2 • lwn.net/Articles/383162 (and others) • kernel.org/doc/Documentation/rbtree.txt • duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory • www.linuxjournal.com/article/10678 (and others)