1 / 31

Linux Kernel

Linux Kernel. Introduction to Memory Management 黃偉修. Outline. Virtual memory model Caches Page allocation and Deallcation Swapping Out and Discarding pages. Virtual memory model.

hedya
Download Presentation

Linux Kernel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux Kernel Introduction to Memory Management 黃偉修

  2. Outline • Virtual memory model • Caches • Page allocation and Deallcation • Swapping Out and Discarding pages

  3. Virtual memory model Why virtual memory ? . Large address Space . Protection . Shared memory <ex.shell program ,library> how to virtual memory ? . Page . Linear address transform . Demand paging <see figure>

  4. Virtual memory model • Linux Page .There level page Tables <see next figure> . Independent to processor - X86 2-level - Alpha 3-leveleach platform must provide translation macros that allow the kernel to traverse the page tables for a particular process

  5. Virtual memory model • Address Transfer . Ex:386 processor<see next table> A 32-bit Linear address is divided as follows: 31 ...... 22 21 ...... 12 11 ...... 0 DIR TABLE OFFSET

  6. Physical address is then computed (in hardware) as: CR3 + DIR points to the table_base. table_base + TABLE points to the page_base. physical_address page_base + OFFSET

  7. Format for Page directory and Page table entry: 31 ...... 12 11 .. 9 8 7 6 5 4 3 2 1 0 ADDRESS OS 0 0 D A 0 0 U/S R/W P D 1 means page is dirty (undefined for page directory entry). R/W 0 means readonly for user. U/S 1 means user page. P 1 means page is present in memory. A 1 means page has been accessed (set to 0 by aging). OS bits can be used for LRU etc, and are defined by the OS. I.e :When a page is swapped, bits 1-31 are used to mark where a page is stored in swap (bit 0 must be 0).

  8. Virtual memory model • Memory Mapping . The link of an image into a processes virtual address space is known as mapping . Every process virtual memory is represent by an mm_struct data structure - information about image- points to a number of vm_area_structdata struct . Vm_area_struct<see figure and detail>

  9. mm_struct the mm_struct data structure is used to describe the virtual memory of a task or process. struct mm_struct { int count; pgd_t * pgd; unsigned long context; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack, start_mmap; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rss, total_vm, locked_vm; unsigned long def_flags; struct vm_area_struct * mmap; struct vm_area_struct * mmap_avl; struct semaphore mmap_sem; };

  10. vm_area_structEach vm_area_struct data structure describes an area of virtual memory for a process. struct vm_area_struct { struct mm_struct * vm_mm; /* VM area parameters */ unsigned long vm_start; unsigned long vm_end; pgprot_t vm_page_prot; 保護屬性unsigned short vm_flags; 存取權限和哪些保護屬性可設定/* AVL tree of VM areas per task, sorted by address */ short vm_avl_height; struct vm_area_struct * vm_avl_left; struct vm_area_struct * vm_avl_right;/* linked list of VM areas per task, sorted by address */ struct vm_area_struct * vm_next;

  11. /* for areas with inode, the circular list inode->i_mmap *//* for shm areas, the circular list of attaches *//* otherwise unused */ struct vm_area_struct * vm_nextt_share; struct vm_area_struct * vm_prev_share;/* more */ struct vm_operations_struct * vm_ops; 運算函數位址 unsigned long vm_offset; 作memory mapping struct inode * vm_inode; unsigned long vm_pte; /* shared mem */};

  12. Virtual memory model • Demand paging . Access not valid page table entry . Page fault report address and access type . Search vm_area_struct in a AVL tree to check illegal or legal virtual address (send SIGSEGV signal to process) . If legal virtual address then check type . Else the page fault is legal case note: differentiate between swap file and somewhere on disk

  13. Virtual memory model • How about O.S ? . Physical mode V.S Virtual addressing mode . Physical mode : no page tables / addr transfer . Linux OS run in physical mode

  14. Caches • Buffer Cache . the buffer cache is indexed via the device identifier and desire block number • Page Cache. Used to speed up access to images and data on disk . Bring page not through file system . Page read ahead

  15. Caches • Swap Cache . Only dirty pages are saved in swap file. no need to write it to the swap file if the page is already in the swap file

  16. Caches • Hardware Caches .TLB . To avoid three times of memory reference

  17. Page Allocation and Deallocation • Some data structure . Mem_map - all of physical pages in system are described by - a list of mem_map_t . Mem_map_t - describes a single physical page in system - field : count ->number of used the page age map_nr ->physical frame number

  18. Page Allocation and Deallocation • Some data structure . free _area vector - each element contains information about “block” of page - the block size upwards in power of two i.e. Free_area[0]=1 page per block Free_area[0]=2 page per block Free_area[0]=4 page per block <see figure>

  19. bit N is set if the N’th block is free Map is a point to bitmap to which keeps to track of allocated groups of page of this size

  20. Page Allocation and Deallocation • Buddy algorithm .Allocation- allocation code search free_area for requested size - follow the chain and check the map to find the free block - if no free block , search the twice size chain - break down this block ,then free blocks are queue on appropriate queue <ex: request 2 pages>

  21. Page Allocation and Deallocation • Buddy al gorithm .Deallocation - whenever a block of pages is freed ,the adjacent or buddy block of same size is checked to see if free . - if free then recombine into a bigger block free size. <ex frame 1 to be free >

  22. Page Allocation and Deallocation • Buddy al gorithm . .Conclude allocation tends to fragment memory to ”small” one deallocation tends to recombines pages into “bigger” one

  23. Swapping Out and Discarding pages • Kernel swap daemon (kswapd) . a special type of process,a kernel thread . Make sure that there enough pages in physical memory . Waiting for the kernel swap “timer” to periodically expire . Two scale : free_pages_high , free_page_low

  24. Swapping Out and Discarding pages • when to do ? .num of free pages fallen belowfree_page_high worse still free_page_low - below free_page_high ->swap free 3 pages - below free_page_low ->swap free 6 page .Timer

  25. Swapping Out and Discarding pages • Method .reducing the size of the buffer and page cache - discarding these pages dose not have too many harmful side effect because “caches”!! - check mem_map to see if some page is cached - shared pages are not considered and page can’t in both cache - if not enough cached page then consider shared page • Method . Swapping Out System V shared Memory pages

  26. Swapping Out and Discarding pages • Method .swapping out and discarding pages - look at each “process” in the system in turn to see if it is a good candidate for swapping - not swap or discard “shared” or “locked” page - not swap out all of the swappable pages of the process - decide by “age” in the mem_map_t (old)

  27. Swapping Out and Discarding pages • Method . Swapping Out System V shared Memory pagesi.e. kswapd remember which method that it used last time successfully

More Related