1 / 33

Address Translation

Address Translation. Mark Stanovich Operating Systems COP 4610. Translation table. Data offsets inside blocks (untranslated). Recall from Last Time…. Translation tables are implemented in HW, controlled by SW. Virtual addresses. Physical addresses. This Lecture….

nschwarz
Télécharger la présentation

Address Translation

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. Address Translation Mark Stanovich Operating Systems COP 4610

  2. Translation table Data offsets inside blocks (untranslated) Recall from Last Time… • Translation tables are implemented in HW, controlled by SW Virtual addresses Physical addresses

  3. This Lecture… • Different translation schemes • Base-and-bound translation • Segmentation • Paging • Multi-level translation • Paged page tables • Hashed page tables • Inverted page tables

  4. log2(1GB) = 30 bits for 1GB of RAM 1GB RAM = 230 Assumptions • 32-bit machines • 1-GB RAM max Physical address

  5. Base + Physical address > Error Bound Base-and-Bound Translation • Each process is loaded into a contiguous region of physical memory • Processes are protected from one another Virtual address

  6. base = 6250 code data … stack 6250 + bound Base-and-Bound Translation • Each process “thinks” that it is running on its own dedicated machine, with memory addresses from 0 to bound Virtual addresses Physical addresses 0 code data … stack bound

  7. Base-and-Bound Translation • An OS can move a process around • By copying bits • Changing the base and bound registers

  8. Pros and Cons of Base-and-Bound Translation + Simplicity + Speed - External fragmentation: memory is wasted because the available memory is not contiguous for allocation - Difficult to share programs • Each instance of a program needs to have a copy of the code segment

  9. Pros and Cons of Base-and-Bound Translation - Memory allocation is complex • Need to find contiguous chunks of free memory • Reorganization involves copying - Does not work well when address spaces grow and shrink dynamically

  10. Segmentation • Segment: a region of logically contiguous memory • Segmentation-based translation: use a table of base-and-bound pairs

  11. 0x0 0x0 code data 0x4ff 0x6ff 0x1000 data 0x14ff 0x2000 stack 0x2fff 0x3000 stack 0x3fff 0x4000 code 0x46ff Segmentation Illustrated Virtual addresses Physical addresses

  12. up to 30 bits 30 bits Physical seg base Seg bound 22 entries Physical seg base Seg bound Physical seg base Seg bound up to 30 bits + Phy addr log2(1GB) = 30 bits for 1GB of RAM 32 - 30 = 2 bits for 32-bit machines > Error Segmentation Diagram 0 1 2 Virt seg # Offset

  13. 0x4000 0x700 code 0x0 0x500 data 0x2000 0x1000 stack + 0x2200 > Segmentation Diagram 0 1 2 2 0x200

  14. Segmentation Translation • virtual_address = virtual_segment_number:offset • physical_base_address = segment_table[virtual_segment_number] • physical_address = physical_base_address + offset

  15. Pros and Cons of Segmentation + Easier to grow and shrink individual segments + Finer control of segment accesses • e.g., read-only for shared code segment + More efficient use of physical space + Multiple processes can share the same code segment - Memory allocation is still complex • Requires contiguous allocation

  16. Paging • Paging-based translation: memory allocation via fixed-size chunks of memory, or pages • Translation granularity is a page • The memory manager uses a bitmap to track the allocation status of memory pages • Array of bits (0 or 1) to signify free or used pages

  17. Paging Illustrated Virtual addresses Physical addresses 0x0 0x0 4K pages 0x1000 0x1000 0x2000 0x2000 0x3000 0x3000 0x3fff 0x4000

  18. 32 – 12 = 20 bits for 32-bit machines log2(4KB) = 12 bits for 4-KB pages Virtual page number Physical page number Offset Offset Page table size - 1 > Physical page number 220 entries Physical page number Physical page number Error log2(1GB) = 30 bits for 1GB of RAM Paging Diagram

  19. 0 4 0x400 0x400 3 - 1 > 0 4 1 0 2 2 Paging Example

  20. Paging Translation • virtual_address = virtual_page_number:offset • physical_page_number = page_table[virtual_page_number] • physical_address = physical_page_number:offset

  21. Pros and Cons of Paging + Easier memory allocation + Allows code sharing - Internal fragmentation: allocated pages are not fully used - The page table size can potentially be very large • 32-bit architecture with 1-KB pages can require 4 million table entries

  22. Multi-Level Translation • Segmented-paging translation: breaks the page table into segments • Paged page tables: Two-level tree of page tables

  23. Segmented Paging • Start with a virtual memory address • Look up the page table address in the segment table • Index into the page table to get the physical page number • Concatenate the physical page number to the offset

  24. 30 bits for 1-GB RAM 32 - 3 - 12 = 17 bits Page table base Page table bound 23 entries Page table base Page table bound Page table base Page table bound 12 bits for 4-KB pages 18 bits Seg # Virt page # Offset num of entries defined by bound; up to 217 entries Phy page # log2(6 segments) = 3 bits Phy page # Phy page # Segmented Paging

  25. 32 – 3 – 12 = 17 bits 217 Seg # Virt page # Offset Page table bound-1 > Phy page # Phy page # Phy page # Phy page # Offset Error log2(1GB) = 30 bits for 1GB of RAM Segmented Paging (Cont.) Page table base +

  26. Segmented Paging Translation • virtual_address = segment_number:page_number:offset • page_table (base address)= segment_table[segment_number] • physical_page_number = page_table[virtual_page_number] • physical_address = physical_page_number:offset

  27. Pros and Cons of Segmented Paging + Code sharing + Reduced memory requirements for page tables - Higher overhead and complexity - Page tables still need to be contiguous - Each memory reference now takes two lookups

  28. Paged Page Tables • Start with a virtual memory address • Index into the first page table to find the address to the second page table • Index into the second page table to find the physical page number • Concatenate the physical page number to the offset

  29. 12 bits Page table address (30 bits) Phy page num 12 bits for 4-KB pages Page table address Phy page num Page table address Phy page num 212 entries 28 entries Phy page num (18 bits) Offset Paged Page Tables Page table num Virt page num Offset

  30. Paged Page Table Translation • virtual_address = outer_page_num:inner_page_num:offset • page_table = outer_page_table[outer_page_num] • physical_page_num = inner_page_table[inner_page_num] • physical_address = physical_page_num:offset

  31. Pros and Cons of Paged Page Tables + Can be generalized into multi-level paging - Multiple memory lookups are required to translate a virtual address • Can be accelerated with translation lookaside buffers (TLBs) • Stores recently translated memory addresses for short-term reuses

  32. Hashed Page Tables • Physical_address = hash(virtual_page_num):offset + Conceptually simple - Need to handle collisions - Need one hash table per address space

  33. Inverted Page Table • One hash entry per physical page • physical_address • = hash(pid, virtual_page_num):offset + The number of page table entries is proportional to the size of physical RAM - Collision handling

More Related