Understanding the Virtual Memory Area Structure in Linux
90 likes | 172 Vues
Dive into the vm_area_struct in Linux kernel, explore its operations, flags, and cool facts about managing virtual memory efficiently. Learn about page faults, memory resources, and more.
Understanding the Virtual Memory Area Structure in Linux
E N D
Presentation Transcript
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)