Memory Management
Memory Management
1
Objectives and Outline
Objectives Outline
• Describe ways of organizing memory • Background
hardware – Address space
• discuss various memory-management – Logical address space
techniques, including paging and – MMU
segmentation
• Contiguous Memory Allocation
• Description of the Intel Pentium, which
• Paging
supports both pure segmentation and
segmentation with paging – Structure of the Page Table
• Segmentation
• Example: The Intel Pentium
2
Background
• Program must be brought (from disk) into memory and placed within a
process for it to be run
• Main memory and registers are only storage CPU can access directly
• Register access in one CPU clock (or less)
• Main memory can take many cycles
• Cache sits between main memory and CPU registers
• Protection of memory required to ensure correct operation
3
Background
Main Memory
CPU cache
instructions
Registers
data Process
program image
in memory
Operating
System
Disk
4
Program addresses and memory
5
Program addresses and memory
physical addresses
RAM of RAM
Assume they are physical addresses
44
40
Program 36
32
Add 12 28
Mov 8 24
… 4 20
Jump 8 0 16
Add 12
Mov 8
… 4
Jump 8 0
6
Program addresses and memory
physical addresses
RAM of RAM
44
40
36
32
Cmp 28
Program 2
Sub 24
Program 1 Program 2
… 20
Jump 12 16
Add 12 Cmp 12
Add 12
Mov 8 Sub 8 Program 1
Mov 8
… 4 … 4
… 4
Jump 8 0 Jump 12 0
Jump 8 0
7
Logical address space concept
8
Base and Limit Registers
A pair of base and limit registers define the address space of a process
A process should be accessing
and using that range.
9
Logical vs. Physical Address Space
• Logical and physical addresses are the same in compile-time and load-time
address-binding schemes; logical (virtual) and physical addresses differ in
execution-time address-binding scheme
10
Logical and physical addresses
CPU Main Memory (RAM)
base limit 60
24 32 56
int x 52
PC int y; 48
physical addresses
M[28+base] cmp .. 44
IR mov r1, M[28] mov r1, M[28] 40
M[28+24] mov r2, M[24] 36
M[52] add r1, r2, r3
a relocatable program 32
jmp 16 28
28 int x mov .. 24
logical addresses
24 int y;
20
20 cmp ..
16
16 mov r1, M[28]
12
12 mov r2, M[24]
08
08 add r1, r2, r3
04
04 jmp 16
00
00 mov ..
11
Memory-Management Unit (MMU)
• In MMU scheme, the value in the relocation register (i.e., base register) is
added to every address generated by a user process at the time it is sent to
memory
• The user program deals with logical addresses; it never sees the real physical
addresses
12
Dynamic relocation using a relocation
register
13
Binding of Instructions and Data to
Memory
• Address binding of instructions and data to RAM
(physical) memory addresses can happen
at three different stages
– Compile time: If memory location
known a priori, absolute code can be a program
generated; must recompile code if
Program
starting location changes ?
data
– Load time: Must generate relocatable
code if memory location is not known at
compile time instructions
– Execution time: Binding delayed until
run time if the process can be moved
during its execution from one memory
segment to another. Need hardware
support for address maps (e.g., base
and limit registers)
14
Multistep Processing of a User Program
15
Dynamic Loading
16
Dynamic Linking
17
Contiguous Memory Allocation
(Dynamic Memory Allocation Problem)
18
Contiguous Allocation
• Relocation registers used to protect user processes from each other, and from
changing operating-system code and data
– Base register contains value of smallest physical address
– Limit register contains range of logical addresses – each logical address
must be less than the limit register
– MMU maps logical addresses dynamically
19
Basic Memory Allocation Strategies
– 1) Contiguous allocation
– 2) Paging
– 3) Segmentation
20
Hardware Support for Relocation and Limit
Registers
21
Contiguous Allocation (Cont)
• Multiple-partition allocation
– Hole – block of available memory; holes of various size are scattered throughout
memory
– When a process arrives, it is allocated memory from a hole large enough to
accommodate it
– Operating system maintains information about:
a) allocated partitions b) free partitions (hole)
OS OS OS OS
process 8 process 10
22
Dynamic Storage-Allocation Problem
23
Paging
24
Fragmentation
25
Paging
26
Paging
RAM (Physical Memory)
a program
0
0
logical address space
1 a frame
1 (size = 2x)
2
2
3
3
4 physical memory:
4
5 set of fixed sized
5 frames
7
program: set of pages
6
8
Page size = Frame size
9
27
Paging
RAM
a program
0
0
0 1
1
2 2
2
3
3 load
1 4
4
5
5 0 mapped_to 1
1 mapped_to 4 3 7
2 mapped_to 2 5 6
3 mapped_to 7
4 mapped_to 9 8
5 mapped_to 6 4 9
page table
28
Example
29
Address Translation Scheme
30
Simple example
Assume m is 3 and n is 2
Logical addresses
000 000
001 001 page0
010 010
011 011
100 100
101 101 page1
110 110
111 111
31
Paging Hardware:
address translation
32
Paging Example
LA = 5
page size = 4 bytes
PA = ?
= 22
5 is 0101
PA = 11001
32 byte memory
LA = 11
PA = ?
11 is 1011
PA = 00111
offset
page (dispacement) LA = 13
number inside PA = ?
page
13 is 1101
PA = 01001
33
Address translation example 1
15 000 0
16 bit logical address 14 000 0
0010000000000100 13 000 0
12 000 0 page size = 4096 bytes
p# offset (offset is 12 bits)
11 111 1
10 000 0
9 101 1
8 000 0
mapping 7 000 0
6 000 0
5 011 1
frame number
4 100 1
valid/invalid bit
f# offset 3 000 1
2 110 1
110 000000000100 1 001 1
15 bit physical address 0 010 1
page table
34
Address translation example 2
OS keeps info
about the frames
in its frame table
• The two memory access problem can be solved by the use of a special fast-
lookup hardware cache called associative memory or translation look-aside
buffers (TLBs)
• Some TLBs store address-space identifiers (ASIDs) in each TLB entry –
uniquely identifies each process to provide address-space protection for that
process
37
Implementation of Page Table
RAM
Program Program
CPU
P1 P2
PC
Currently running
process is process 1 (P1)
PCB1 PCB2
38
TLB Associative Memory
39
Paging Hardware With TLB
40
Effective Memory Access Time
41
Memory Protection
42
Valid (v) or Invalid (i) Bit In A Page Table
43
Page Table Entry Structure
• A typical size of a page table entry can be 32 bits. Depends on the architecture
44
Shared Pages
• Shared code
– One copy of read-only (reentrant) code shared among processes (i.e., text
editors, compilers, window systems).
– Shared code must appear in same location in the logical address space of
all processes
45
Shared Pages Example
46
Structure of the Page Table
Structure of the Page Table
• Hierarchical Paging
48
Hierarchical Page Tables
00
01
00
01
10
11
10
PT
11
PT
Log Mem Log Mem
49
Two-Level Paging Scheme
50
Two-Level Paging Scheme
logical address logical address
offset offset
00
0000 01
0001 10
0010 11
0011
0100 00
0101 01
0110 00 10
0111 01 11
1000 10
1001 11 00
1010 01
1011 10
1100 11
1101
1110
1111 two-level 00
01
single level page table 10
Page table 11
51
Two-Level Paging Example
• A logical address (on 32-bit machine with 1K page size) is divided into:
– a page number consisting of 22 bits
– a page offset consisting of 10 bits
• Since the page table is paged, the page number is further divided into:
– a 12-bit page number
– a 10-bit page offset
• Thus, a logical address is as follows:
52
Address-Translation Scheme
53
Example: two level page table need
54
Example: two level page table need
56
Example: two level page table need
57
Three-level Paging Scheme
64 bit addresses
58
Hashed Page Tables
• Virtual page numbers are compared in this chain searching for a match
– If a match is found, the corresponding physical frame is extracted
59
Hashed Page Table
frame number
virtual page number
60
Inverted Page Table
• Entry consists of the page number of the virtual page stored in that real
memory location (frame), with information about the process that owns that
page
– Entry content: <pid, virtual page number>
• Decreases memory needed to store each page table, but increases time
needed to search the table when a page reference occurs
61
Inverted Page Table Architecture
62
Segmentation
63
Segmentation
64
User’s View of a Program
65
Logical View of Segmentation
segment 1
4
1
3 2
4
66
Segmentation Architecture
67
Segmentation Hardware
68
Segmentation Architecture (Cont.)
• Protection
– With each entry in segment table associate:
• validation bit = 0 illegal segment
• read/write/execute privileges
• Protection bits associated with segments; code sharing occurs at segment level
– Code segment: READONLY; sharable; …
– Data segment: RED-WRITE; not-sharable
69
Example of Segmentation
70
Intel Pentium
Example: The Intel Pentium
• Supports both segmentation and segmentation with paging
72
Logical to Physical Address Translation in
Pentium
SEGMENTATION PAGING
UNIT UNIT
segment s
d
74
Intel Pentium Segmentation
base
base+offset
75
Pentium Paging Architecture
• For 4 MB pages, we can skip the inner page tables (secondary page table). A top level
page table entry will point directly to a 4 MB page.
76
Pentium Paging Architecture
77
Linux on Pentium: Segmentation
• Linux is designed to run on a lot of hardware platforms: Pentium, Arm, Motorola, Sparc,
MIPS, …
• Therefore it does not rely on segmentation and makes minimal use of segmentation in
Pentium.
78
Linux on Pentium: Paging
79
Linear Address in Linux
Broken into four parts:
• In a 32 bit Intel machine, that uses two-level paging, we ignore the middle directory (its
size is 0), and use 3 parts.
80
Three-level Paging in Linux
81
Linux Paging: some kernel structures
struct task_struct
{
…
…
struct mm_struct *mm;
struct mm_struct
} {
the PCB object …
top level
of a process X pgd_t *pgd;
page table
….
of process X
}
(called
mm object
page
of process X
global
(keeps memory
directory)
management
related
information)
82
References
• The slides here are adapted/modified from the textbook and its slides:
Operating System Concepts, Silberschatz et al., 7th & 8th editions, Wiley.
• Operating System Concepts, 7th and 8th editions, Silberschatz et al. Wiley.
• Modern Operating Systems, Andrew S. Tanenbaum, 3rd edition, 2009.
83
Additional Study Material
84
Swapping
• A process can be swapped temporarily out of memory to a backing store, and then
brought back into memory for continued execution
• Backing store – fast disk large enough to accommodate copies of all memory images
for all users; must provide direct access to these memory images
• Roll out, roll in – swapping variant used for priority-based scheduling algorithms; lower-
priority process is swapped out so higher-priority process can be loaded and executed
• Major part of swap time is transfer time; total transfer time is directly proportional to the
amount of memory swapped
• Modified versions of swapping are found on many systems (i.e., UNIX, Linux, and
Windows)
• System maintains a ready queue of ready-to-run processes which have memory images
on disk
85
Schematic View of Swapping
86