cs 333 introduction to operating systems class 12 - virtual memory (2)
DESCRIPTION
Jonathan Walpole Computer Science Portland State University. CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2). Translation Lookaside Buffer (TLB). Problem: - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/1.jpg)
CS 333Introduction to Operating Systems
Class 12 - Virtual Memory (2)
Jonathan WalpoleComputer Science
Portland State University
![Page 2: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/2.jpg)
Translation Lookaside Buffer (TLB)
Problem: Unless we have hardware support for address
translation, CPU would have to go to memory to access the page table on every memory access!
In Blitz, this is what happens
![Page 3: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/3.jpg)
Translation Lookaside Buffer (TLB)
Problem: Unless we have hardware support for address
translation, CPU would have to go to memory to access the page table on every memory access!
In real computers there is a TLB: Cache the page table entries in a hardware cache Small number of entries (e.g., 64) Each entry contains
• Page number• Other stuff from page table entry
Associatively indexed on page number
![Page 4: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/4.jpg)
Hardware operation of TLB
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
5
37
Key
Other
![Page 5: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/5.jpg)
Hardware operation of TLB
0121323page number offset
0121331frame number offset
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
virtual address
physical address
5
37
Key
Other
![Page 6: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/6.jpg)
Hardware operation of TLB
0121323page number offset
0121331frame number offset
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
physical address
5
37
Key
Other
virtual address
![Page 7: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/7.jpg)
Hardware operation of TLB
0121323page number offset
0121331frame number offset
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
physical address
5
37
Key
Other
virtual address
![Page 8: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/8.jpg)
Hardware operation of TLB
0121323page number offset
0121331frame number offset
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
physical address
5
37
Key
Other
virtual address
![Page 9: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/9.jpg)
Hardware operation of TLB
0121323page number offset
0121331frame number offset
Page Number Frame NumberD R W Vunused
50 D R W Vunused
24 D R W Vunused
19 D R W Vunused
6 D R W Vunused
2317
92
12
physical address
5
37
Key
Other
virtual address
![Page 10: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/10.jpg)
Software operation of TLB
What if the entry is not in the TLB? Go to page table (how?) Find the right entry Move it into the TLB Which entry to replace?
![Page 11: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/11.jpg)
Software operation of TLB
Hardware TLB refill Page tables in specific location and format TLB hardware handles its own misses
Software refill Hardware generates trap (TLB miss fault) Lets the OS deal with the problem Page tables become entirely a OS data structure!
![Page 12: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/12.jpg)
Software operation of TLB
What should we do with the TLB on a context switch?
How can we prevent the next process from using the last process’s address mappings?
Option 1: empty the TLB• New process will generate faults until its pulls
enough of its own entries into the TLB Option 2: just clear the “Valid Bit”
• New process will generate faults until its pulls enough of its own entries into the TLB
Option 3: the hardware maintains a process id tag on each TLB entry
• Hardware compares this to a process id held in a specific register … on every translation
![Page 13: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/13.jpg)
Page tables
Do we access a page table when a process allocates or frees memory?
![Page 14: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/14.jpg)
Page tables
Do we access a page table when a process allocates or frees memory?
Not necessarily Library routines (malloc) can service small
requests from a pool of free memory already allocated within a process address space
When these routines run out of space a new page must be allocated and its entry inserted into the page table
• This allocation is requested using a system call
• Malloc is not a system call
![Page 15: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/15.jpg)
Page tables
We also access a page table during swapping/paging to disk
We know the page frame we want to clear We need to find the right place on disk to store
this process memory Hence, page table needs to be searchable using
physical addresses• Fastest approach, index page table using
page frame numbers
![Page 16: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/16.jpg)
Page tables
In a well provisioned system, TLB miss faults will be the most frequently occurring event
TLB miss fault Given a virtual page number we must find the
right page table entry• Fastest approach – index the page table
using virtual page numbers• …hmm, isn’t that the opposite of what we
said last side? Problem … how to structure our page tables for
efficient access and low space overhead
![Page 17: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/17.jpg)
Page table design issues
Page table size depends on Page size Virtual address length
Memory used for page tables is overhead!
How can we save space? … and still find entries quickly?
Three options Single-level page tables Multi-level page tables Inverted page tables
![Page 18: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/18.jpg)
Single-level page tables
Single-level page table
framesin
memory•••
page number offset21-bits 11-bits
A Virtual Address:
![Page 19: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/19.jpg)
Single-level page tables
Single-level page table
framesin
memory•••
page number offset21-bits 11-bits
![Page 20: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/20.jpg)
Single-level page tables
Single-level page table
framesin
memory•••
page number offset21-bits 11-bits
Problem: requires one pagetable entry per virtual page!
![Page 21: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/21.jpg)
Single-level page tables
Single-level page table
framesin
memory•••
page number offset21-bits 11-bits
32 bit addresses and 2KB pagesmeans 221 page table entries perprocess
![Page 22: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/22.jpg)
Multi-level page tables
Top-levelPage table
2nd-level tables
framesin
memory•••
![Page 23: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/23.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 24: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/24.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 25: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/25.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 26: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/26.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 27: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/27.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 28: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/28.jpg)
Multi-level page tables
A Virtual Address:
Top-levelPage table
2nd-level tables
framesin
memory•••
PT1 offsetPT210-bits 10-bits 12-bits
![Page 29: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/29.jpg)
Multi-level page tables
Ok, but how exactly does this save space?
![Page 30: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/30.jpg)
Multi-level page tables
Ok, but how exactly does this save space? Not all pages within a virtual address space are
allocated Not only do they not have a page frame, but that
range of virtual addresses is not being used So no need to maintain complete information about
it Some intermediate page tables are empty and not
needed
We could also page the page table This saves space but slows access … a lot!
![Page 31: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/31.jpg)
Inverted page tables
Problem: Page table overhead increases with address space size Page tables get too big to fit in memory!
Consider a computer with 64 bit addresses Assume 4 Kbyte pages (12 bits for the offset) Virtual address space = 252 pages! Page table needs 252 entries! This page table is much too large for memory!
But we only need mappings for pages that are in memory!
A 256 Mbyte memory can only hold 64 4Kbyte pages Only need 64 page table entries on this computer!
![Page 32: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/32.jpg)
Inverted page tables
An inverted page table Has one entry for every frame of memory Tells which page is in that frame Is indexed by frame number not page number!
So how can we search it on a TLB miss fault?
![Page 33: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/33.jpg)
Inverted page tables
If we have a page number (from a faulting address) and want to find it page table entry, do we
Do an exhaustive search of all entries?
![Page 34: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/34.jpg)
Inverted page tables
If we have a page number (from a faulting address) and want to find it page table entry, do we
Do an exhaustive search of all entries? No, that’s too slow! Why not maintain a hash table to allow fast access
given a page number?• O(1) lookup time with a good hash function
![Page 35: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/35.jpg)
Inverted page table
![Page 36: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/36.jpg)
Which page table design is best?
The best choice depends on CPU architecture 64 bit systems need inverted page tables Some systems use a combination of regular page
tables together with segmentation (later)
![Page 37: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/37.jpg)
Memory protection
At what granularity should protection be implemented?
page-level? A lot of overhead for storing protection information
for non-resident pages segment level?
Coarser grain than pages Makes sense if contiguous groups of pages share the
same protection status
![Page 38: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/38.jpg)
Memory protection
How is protection checking implemented? compare page protection bits with process
capabilities and operation types on every load/store sounds expensive! Requires hardware support!
How can protection checking be done efficiently? Use the TLB as a protection look-aside buffer Use special segment registers
![Page 39: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/39.jpg)
Protection lookaside buffer
A TLB is often used for more than just “translation”
Memory accesses need to be checked for validity Does the address refer to an allocated segment of
the address space?• If not: segmentation fault!
Is this process allowed to access this memory segment?
• If not: segmentation/protection fault! Is the type of access valid for this segment?
• Read, write, execute …?• If not: protection fault!
![Page 40: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/40.jpg)
Page-grain protection checking with a TLB
![Page 41: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/41.jpg)
Page grain protection in a page table
A typical page table entry with support forpage grain protection
![Page 42: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/42.jpg)
Segment-grain protection
All pages within a segment usually share the same protection status
So we should be able to batch the protection information
Why not just use segment-size pages? Segments vary in size Segments change size dynamically (stack, heap etc)
![Page 43: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/43.jpg)
Segmented address spaces
Traditional Virtual Address Space “flat” address space (1 dimensional)
Segmented Address Space Program made of several “pieces” Each segment is like a mini-address space Addresses within a segment start at zero The program must always say which segment it
means• either embed a segment id in an address• or load a value into a segment register
Addresses:Segment + Offset
Each segment can grow independently of others
![Page 44: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/44.jpg)
Segmentation in a single address space
Example: A compiler
![Page 45: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/45.jpg)
Segmented memory
Each space grows, shrinks independently!
![Page 46: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/46.jpg)
Separate instruction and data spaces
* One address space * Separate I and D spaces
![Page 47: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/47.jpg)
Comparison of paging and segmentation
![Page 48: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/48.jpg)
Segmentation with paging (MULTICS) Each segment is divided up into pages. Each segment descriptor points to a page table.
![Page 49: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/49.jpg)
Segmentation with paging (MULTICS) Each entry in segment table...
![Page 50: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/50.jpg)
Segmentation with paging: MULTICS
Conversion of a 2-part MULTICS address into a main memory address
![Page 51: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/51.jpg)
Segmentation with Paging: TLB operation
Simplified version of the MULTICS TLB Existence of 2 page sizes makes actual TLB more complicated
![Page 52: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/52.jpg)
Spare Slides
![Page 53: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/53.jpg)
Anatomy of a page fault
A
C
E
0
1
2
3
4
B
D
Logical memory 9 V
i
2 V
i
5 V
0
1
2
3
4
Page table
1 off C
E
A
10
1
2
3
6
7
8
9
5
4
0
1
2TLBmiss
3
O.S.
5
4
7
8
Restart Proc.
Update PTE
Find Frame
Get page from backing store
A C
E
B
D
6Bring in page
Page
faultPhysical memory
TLB
![Page 54: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/54.jpg)
Segmentation & paging in the Pentium
Conversion of a (selector, offset) pair to a linear address
![Page 55: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/55.jpg)
Segmentation & paging in the Pentium
A Pentium segment selector
![Page 56: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/56.jpg)
Segmentation & paging in the Pentium
Pentium segment descriptor
![Page 57: CS 333 Introduction to Operating Systems Class 12 - Virtual Memory (2)](https://reader035.vdocuments.us/reader035/viewer/2022070415/56814e8f550346895dbc35d9/html5/thumbnails/57.jpg)
Implementation IssuesOperating System Involvement with Paging
Four times when OS involved with paging Process creation
determine program size create page table
Process execution MMU reset for new process TLB flushed
Page fault time determine virtual address causing fault swap target page out, needed page in
Process termination time release page table, pages