Memory Management CPSC 410/611 : Operating Systems

advertisement
CPSC 410/611 : Operating Systems
Memory Management
• Address binding
– Linking, loading
– Logical vs. physical address space
• Fragmentation
• Paging
• Segmentation
• Reading: Silberschatz (8th ed.), Chapter 8
Memory Management
• Observations:
– Process needs at least CPU and memory to run.
– CPU context switching is relatively cheap.
– Swapping memory in/out from/to disk is expensive.
• Need to subdivide memory to accommodate multiple processes!
• How do we manage this memory?
Memory Management: Paging / Segmentation
1
CPSC 410/611 : Operating Systems
Requirements for Memory Management
• Relocation
– We do not know a priori where memory of process will reside.
• Protection
– No uncontrolled references to memory locations of other
processes.
– Memory references must be checked at run-time.
• Sharing
– Data portions and program text portions.
• Logical organization
– Take advantage of semantics of use.
– Data portions (read/write) vs. program text portions (read
only).
• Memory hierarchy
– RAM vs. secondary storage
– Swapping
Preparing a Program for Execution
S1
O1
S2
O2
S3
system library
Ltemp
linker
O3
compiler
dynamically
loaded system
library
Lphys
loader
Si : Source Program
Oi: Object Module
Ltemp: Load Module
Lphys: Memory Image
• compiler: translates symbolic instructions, operands, and addresses
into numerical values.
• linker: resolves external references; i.e. operands or branch
addresses referring to data or instructions within some other
module
• loader: brings program into main memory.
Memory Management: Paging / Segmentation
2
CPSC 410/611 : Operating Systems
Address Binding
•
Compile-time binding:
100
branch A
A: ...
•
assembler
branch 150
150
Load-time binding (static relocation):
00
branch A
A: ...
•
assembler
100
branch 50
linker
50
other progrms
other module
branch 150
150
loader
branch A
A: ...
assembler
100
branch 50
linker
50
branch 1150
1150
Execution-time binding (dynamic relocation):
00
other module
1100
other progrms
other module
branch 150
150
1100
loader
other module
branch 150
1150
MMU
1150
Dynamic Loading, Dynamic Linking
• Dynamic Loading:
– load routine into memory only when it is needed
– routines kept on disk in relocatable format
• Load-time Linking:
– postpone linking until load time.
• Dynamic Linking:
– postpone linking until execution time.
– Problem: Need help from OS!
call x
x:
Memory Management: Paging / Segmentation
stub
load routine
link x to location of routine
3
CPSC 410/611 : Operating Systems
Logical vs. Physical Address Space
•
•
Logical address: address as seen by the process (i.e. as seen by the CPU).
Physical address: address as seen by the memory.
•
Example:
load time:
00
100
branch A assembler branch 50
A: ...
linker
50
1100
branch 150 loader
150
branch 1150
1150
logical = physical
execution time:
00
100
branch A assembler branch 50
A: ...
linker
50
1100
branch 150 loader
150
branch 150
1150
logical
physical
MMU
1150
Logical vs. Physical Memory Space
•
•
Logical address: address as seen by the process (i.e. as seen by the CPU).
Physical address: address as seen by the memory.
limit
register
<
CPU
logical address
space of process
Pi
relocation
register
OS
physical
address
space of
process
Pi
+
addressing error!
Memory Management Unit
partition table
process
P1
P2
P3
base
28
1028
5034
Physical Memory
size
1000
3000
250
Memory Management: Paging / Segmentation
4
CPSC 410/611 : Operating Systems
Swapping
swap_out
OS
swap_in
start
swapping store
ready
ready_sw
memory
running
waiting_sw
waiting
jobs are on disk
jobs are in memory
Fragmentation
Internal Fragmentation
OS
8MB
2MB
4MB
?!
8MB
12MB
External Fragmentation
P1
P1
P1
P2
P2
P3
Memory Management: Paging / Segmentation
P1
P3
?
P4
5
CPSC 410/611 : Operating Systems
Paging
• Contiguous allocation causes (external) fragmentation.
• Solution: Partition memory blocks into smaller subblocks (pages)
and allow them to be allocated non-contiguously.
simple relocation
Memory Management Unit
logical memory
paging
physical memory
Memory Management Unit
logical memory
physical memory
Basic Operations in Paging Hardware
CPU
p
d
f
d
p
d
f
page table
Memory Management Unit
physical
memory
Example: PDP-11 (16-bit address, 8kB pages)
Memory Management: Paging / Segmentation
6
CPSC 410/611 : Operating Systems
Internal Fragmentation in Paging
• Example:
page size 4kB
logical memory
13300B
4084 bytes
wasted!
physical memory
• Last frame allocated may not be completely full.
• Average internal fragmentation per block is typically half frame size.
• Large frames vs. small frames:
• Large frames cause more fragmentation.
• Small frames cause more overhead (page table size, disk I/O)
Implementation of Page Table
• Page table involved in every access to memory. Speed very
important.
• Page table in registers?
– Example: 1MB logical address space, 2kB page size; needs a
page table with 512 entries!
• Page table in memory?
– Only keep a page table base register that points to location
of page table.
– Each access to memory would require two accesses to
memory!
• Cache portions of page table in registers?
– Use translation lookaside buffers (TLBs): typically a few
dozens entries.
– Hit ratio: Percentage of time an entry is found.
Hit ratio must be high in order to minimize overhead.
Memory Management: Paging / Segmentation
7
CPSC 410/611 : Operating Systems
Hierarchical (Multilevel) Paging
•
•
•
Problem: Page tables can become very large! (e.g. 32-bit address space?)
Solution: Page the page table itself! (e.g. page directory vs. page table)
Two-level paging:
– Example: 32 bit logical address, page size 4kB
page directory (10)
page table (10)
page table
base register
offset(12)
f
d
f
•
•
•
Three-level paging (SPARC), four-level paging (68030), ...
AMD64 (48-bit virtual addresses) has 4 levels.
Even deeper for 64 bit address spaces (5 to 6 levels)
Variations: Inverted Page Table
proc id
process id
page no
offset
page no
0
1
2
3
3
offset
…
n
•
•
•
•
•
Array of page numbers indexed by frame number.
– page lookup: search for matching frame entry
Size scales with physical memory.
Single table for system (not per process)
Used in early virt. memory systems, such as the
Atlas computer.
Not practical today. (Why?)
Memory Management: Paging / Segmentation
8
CPSC 410/611 : Operating Systems
Variations: Hashed Page Table
page number
• Used by many 64bit architectures:
– IBM POWER
– HP PA-RISC
– Itanium
• Scales with physical memory
• One table for whole system
• Difficult to share memory between
processes
offset
hash function
proc id
page no
chain
Software-loaded TLBs: Paging - MIPS Style
Process no.
Program (virtual) address
ASID
Address
within page
VPN
TLB
Page table
(in memory)
ASID
VPN/Mask
PFN
Flags
PFN
Flags
refill when
necessary
Physical address
PFN
Memory Management: Paging / Segmentation
Address
within frame
9
CPSC 410/611 : Operating Systems
Recap: Memory Translation -- “VAX style”
1. Split virtual address
2. Concatenate more-significant bits with Process ASID to
form page address.
3. Look in the TLB to see if we find translation entry for
page.
4. If YES, take high-order physical address bits.
– (Extra bits stored with PFN control the access to
frame.)
5. If NO, system must locate page entry in main-memoryresident page table, load it into TLB, and start again.
Memory Translation -- MIPS Style
• In principle: Do the same as VAX, but with as little
hardware as possible.
• Apart from register with ASID, the MMU is just a TLB.
• The rest is all implemented in software!
• When TLB cannot translate an address, a special
exception (TLB refill) is raised.
• Note: This is easy in principle, but tricky to do
efficiently.
Memory Management: Paging / Segmentation
10
CPSC 410/611 : Operating Systems
MIPS TLB Entry Fields
input
output
VPN
ASID
• VPN: higher order bits of
virtual address
• ASID: identifies the address
space
• G: if set, disables the
matching with the ASID
G
PFN
N
Flags
D V
• PFN: Physical frame number
• N: 0 - cacheable, 1 noncacheable
• D: write-control bit (set to 1 if
writeable)
• V: valid bit
MIPS Translation Process
1. CPU generates a program (virtual) address on a instruction fetch,
a load, or a store.
2. The 12 low-end bits are separated off.
3. Case 1: TLB matches key:
1. Matching entry is selected, and PFN is glued to low-order bits
of the program address.
2. Valid?: The V and D bits are checked. If problem, raise
exception, and set BadVAddr register with offending program
address.
3. Cached?: IF C bit is set, the CPU looks in the cache for a copy
of the physical location’s data. If C bit is cleared, it neither
looks in nor refills the cache.
4. Case 2: TLB does not match: TLB Refill Exception (see next page)
Memory Management: Paging / Segmentation
11
CPSC 410/611 : Operating Systems
TLB Refill Exception
• Figure out if this was a correct translation. If not, trap to
handling of address errors.
• If translation correct, construct TLB entry.
• If TLB already full, select an entry to discard.
• Write the new entry into the TLB.
Segmentation
•
•
Users think of memory in terms of segments (data, code, stack, objects, ....)
Data within a segment typically has uniform access restrictions.
paging
Memory Management Unit
logical memory
segmentation
physical memory
Memory Management Unit
logical memory
Memory Management: Paging / Segmentation
physical memory
12
CPSC 410/611 : Operating Systems
Segmentation Hardware
CPU
s
d
<?
+
s
limit base
segment table
Memory Management Unit
physical
memory
Advantages of Segmentation
•
•
•
•
Data in a segment typically semantically related
Protection can be associated with segments
– read/write protection
– range checks for arrays
Data/code sharing
Disadvantages?
s
<?
d
s
s
limit
+
base
<?
d
sharing
+
s
limit
Memory Management: Paging / Segmentation
base
physical
memory
13
CPSC 410/611 : Operating Systems
Solution: Paged Segmentation
• Example: MULTICS
segment number
offset
18bit
16bit
Problem: 64kW segments -> external fragmentation!
Solution: Page the segments.
page
segment number page# offset
18bit
6bit
10bit
Problem: need 2^18 segment entries in segment table
Solution: Page the segment table.
page#
8bit
page
page
page#
offset
offset
10bit
Memory Management: Paging / Segmentation
6bit
10bit
14
Download