0% found this document useful (0 votes)
114 views48 pages

Operating Systems: Memory Management (Chapter 8: 8.1-8.6)

The document discusses memory management techniques used in operating systems. It describes simple memory management where only one process resides in memory at a time. It then covers multiprocessing with fixed memory partitions that results in wasted memory. The document introduces the concept of paging which divides memory into pages and frames to allow non-contiguous allocation and improve memory utilization through dynamic allocation. Paging maps logical addresses to physical addresses using a page table that stores the frame number for each page.

Uploaded by

Rachit Singhal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views48 pages

Operating Systems: Memory Management (Chapter 8: 8.1-8.6)

The document discusses memory management techniques used in operating systems. It describes simple memory management where only one process resides in memory at a time. It then covers multiprocessing with fixed memory partitions that results in wasted memory. The document introduces the concept of paging which divides memory into pages and frames to allow non-contiguous allocation and improve memory utilization through dynamic allocation. Paging maps logical addresses to physical addresses using a page table that stores the frame number for each page.

Uploaded by

Rachit Singhal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 48

Operating Systems

Memory Management
(Chapter 8: 8.1-8.6)
Overview
• Provide Services (done)
– processes (done)
– files (after memory management)
• Manage Devices
– processor (done)
– memory (next!)
– disk (done after files)
Simple Memory Management
• One process in memory, using it all
– each program needs I/O drivers
– until 1960

I/O drivers

RAM User
Prog
Simple Memory Management
• Small, protected OS, drivers
– DOS
Device
OS ROM Drivers
ROM

User User
RAM Prog RAM User RAM Prog
Prog

OS OS

• “Mono-programming” -- No multiprocessing!
- Early efforts used “Swapping”, but slooooow
Multiprocessing w/Fixed Partitions
Simple!
Partition 4 Partition 4
900k
Partition 3 Partition 3
500k
Partition 2 Partition 2
300k
Partition 1 Partition 1
200k
OS OS
(a) (b)

• Unequal queues • Waste large partition


• Skip small jobs
Hey, processes can be in different memory locations!
Address Binding
• Compile Time Source
– maybe absolute binding (.com)
Compile
• Link Time
– dynamic or static libraries Object
• Load Time Link
– relocatable code Load
• Run Time Module
– relocatable memory segments Load
– overlays RAM
– paging Binary
Run
Normal Linking and Loading
Printf.c Main.c
gcc gcc

Printf.o Main.o
Linker
ar X Window code:
- 500K minimum
Static a.out - 450K libraries
Library
Loader

Memory
Load Time Dynamic Linking
Printf.c Main.c
gcc gcc

Printf.o Main.o
• Save disk space.
Linker • Libraries move?
ar
• Moving code?
Dynamic a.out • Library versions?
Library • Load time still
Loader
the same.

Memory
Run-Time Dynamic Linking
Printf.c Main.c
gcc gcc

Printf.o Main.o
Linker
ar Save disk space.
Startup fast.
Dynamic a.out Might not need all.
Library
Loader
Run-time
Loader

Memory
Memory Linking Performance
Comparisons
Linking Disk Load Run Run Run Time
Method Space Time Time Time (0 used)
(4 used) (2 used)
Static 3Mb 3.1s 0 0 0

Load 1Mb 3.1s 0 0 0


Time
Run 1Mb 1.1s 2.4s 1.2s 0
Time
Design Technique: Static vs. Dynamic
• Static solutions
– compute ahead of time
– for predictable situations
• Dynamic solutions
– compute when needed
– for unpredictable situations
• Some situations use dynamic because static
too restrictive (malloc)
• ex: memory allocation, type checking
Logical vs. Physical Addresses
• Compile-Time + Load Time addresses same
• Run time addresses different

Logical Relocation Physical


Address Register Address
CPU 14000 Memory
346 14346
+
MMU

• User goes from 0 to max


• Physical goes from R+0 to R+max
Relocatable Code Basics
• Allow logical addresses
• Protect other processes
Limit Reg Reloc Reg Memory

yes
CPU < +
physical
no address
MMU
error

• Addresses must be contiguous!


Variable-Sized Partitions
• Idea: want to remove “wasted” memory that
is not needed in each partition
• Definition:
– Hole - a block of available memory
– scattered throughout physical memory
• New process allocated memory from hole
large enough to fit it
Variable-Sized Partitions
OS OS OS OS
process 5 process 5 process 5

8 done process 9 process 9


9 arrv 10 arrv
process 8
process 10
5 done

process 2 process 2 process 2 process 2

• OS keeps track of:


– allocated partitions
– free partitions (holes)
– queues!
Memory Request?
• What if a request for additional memory?

OS

process 3
malloc(20k)?

process 8

process 2
Internal Fragmentation
• Have some “empty” space for each
processes
A stack
Allocated to A Room for growth
A data
A program
OS

• Internal Fragmentation - allocated memory


may be slightly larger than requested
memory and not being used.
External Fragmentation
• External Fragmentation - total memory
space exists to satisfy request but it is not
contiguous OS
50k

process 3
125k Process 9 ?
process 8
100k

process 2

“But, how much does this matter?”


Analysis of External Fragmentation
• Assume:
– system at equilibrium
– process in middle
– if N processes, 1/2 time process, 1/2 hole
+ ==> 1/2 N holes!
– Fifty-percent rule
– Fundamental:
+ adjacent holes combined
+ adjacent processes not combined
Compaction
• Shuffle memory contents to place all free
memory together in one large block
• Only if relocation dynamic!
• Same I/O DMA problem (a) (b)
OS OS OS
50k process 3
process 3 90k process 8
125k Process 9
process 8 60k process 8
100k process 3
process 2 process 2 process 2
Cost of Compaction
process 1 process 1
50k process 3
process 3 90k process 8

process 8 60k process 2

100k

process 2

• 2 GB RAM, 10 nsec/access (cycle time)


 5 seconds to compact!
• Disk much slower!
Solution?
• Want to minimize external fragmentation
– Large Blocks
– But internal fragmentation!
• Tradeoff
– Sacrifice some internal fragmentation for
reduced external fragmentation
– Paging
Where Are We?
• Memory Management
– fixed partitions (done)
– linking and loading (done)
– variable partitions (done)
• Paging 
• Misc
Paging
• Logical address space noncontiguous;
process gets memory wherever available
– Divide physical memory into fixed-size blocks
+ size is a power of 2, between 512 and 8192 bytes
+ called Frames
– Divide logical memory into bocks of same size
+ called Pages
Paging
• Address generated by CPU divided into:
– Page number (p) - index to page table
+ page table contains base address of each page in
physical memory (frame)
– Page offset (d) - offset into page/frame

CPU p d f d
physical
f memory

page table
Paging Example
0
• Page size 4 bytes
• Memory size 32 bytes (8 pages) 1 Page 0

Page 0 3 Page 2
0 1
4 Page 1
Page 1 1 4
Page 2 5
2 3
Page 3 3 7 6
7 Page 3
Logical Page Table
Memory Physical
Memory
Paging Example
Offset
000 000
Page 0

001 0 0 1 0 1 1 001

010 010
Page 1

Page Frame
011 00 01 011

100 100
Page 2

01 11
101 101
10 00
110 110
Page 3

11 10
111 111
Page Table
Logical Physical
Memory Memory
Paging Hardware

• address space 2m
• page offset 2n phsical
memory
• page number 2m-n 2m bytes

page number page offset


p d
m-n n

• note: not losing any bytes!


Paging Example
• Consider:
– Physical memory = 128 bytes
– Physical address space = 8 frames
• How many bits in an address?
• How many bits for page number?
• How many bits for page offset?
• Can a logical address space have only 2
pages? How big would the page table be?
Another Paging Example
• Consider:
– 8 bits in an address
– 3 bits for the frame/page number
• How many bytes (words) of physical memory?
• How many frames are there?
• How many bytes is a page?
• How many bits for page offset?
• If a process’ page table is 12 bits, how many
logical pages does it have?
Page Table Example b=7

0
Page 0 0 3
1 Page 0A
Page 1 1 7
2
Page Table
Process B
3 Page 0B
page number page offset
p d 4 Page 1A

m-n=3 n=4
5
Page 0 0 1
6
Page 1 1 4
7 Page 1B
Process A Page Table
Physical
Memory
Paging Tradeoffs
• Advantages
– no external fragmentation (no compaction)
– relocation (now pages, before were processes)
• Disadvantages
– internal fragmentation
+ consider: 2048 byte pages, 72,766 byte proc
– 35 pages + 1086 bytes = 962 bytes
+ avg: 1/2 page per process
+ small pages!
– overhead
+ page table / process (context switch + space)
+ lookup (especially if page to disk)
Implementation of Page Table
• Page table kept in registers
• Fast!
• Only good when number of frames is small
• Expensive!

Registers
Memory

Disk
Implementation of Page Table
• Page table kept in main memory
• Page Table Base Register (PTBR) 0 1 4

Page 0 0 1 1 Page 1

Page 1 1 4 PTBR 2 Page 0

Logical 3
Page Table
Memory Physical
Memory
• Page Table Length
• Two memory accesses per data/inst access.
– Solution? Associative Registers
Associative Registers
logical
address p d 10-20% mem time

CPU page frame


number number f d
hit

physical
address
physical
memory
associative
registers
f
miss
(Intel P3 has 32 entries) Also called Translation
page table Lookaside Buffer (TLB)
(Intel P4 has 128 entries)
Associative Register Performance
• Hit Ratio - percentage of times that a page
number is found in associative registers
Effective access time =
hit ratio x hit time + miss ratio x miss time
• hit time = reg time + mem time
• miss time = reg time + mem time * 2
• Example:
– 80% hit ratio, reg time = 20 nanosec, mem time
= 100 nanosec
– .80 * 120 + .20 * 220 = 140 nanoseconds
Protection
• Protection bits with each frame
• Store in page table
• Expand to more perms Protection
Bit

0 1 v
Page 0 0 Page 1
1 0 v
Page 1 1 Page 0
2 3 v
Page 2 2
3 0 i
3 Page 2
Logical Page Table
Memory Physical
Memory
Large Address Spaces
• Typical logical address spaces:
– 4 Gbytes => 232 address bits (4-byte address)
• Typical page size:
– 4 Kbytes = 212 bits
• Page table may have:
– 232 / 212 = 220 = 1million entries
• Each entry 3 bytes => 3MB per process!
• Do not want that all in RAM
• Solution? Page the page table
– Multilevel paging
Multilevel Paging
page number page offset
p1 p2 d
10 10 12
...

Page 0
...
...
...
...

Logical ...
Memory Outer Page
Table

Page Table
Multilevel Paging Translation
page number page offset
p1 p2 d

p1
p2
d
outer page desired
table inner page page
table
Inverted Page Table
• Page table maps to physical addresses

CPU pid p d
i d

i
search

pid p Physical
Memory

• Still need page per process --> backing store


• Memory accesses longer! (search + swap)
Memory View
• Paging lost users’ view of memory
• Need “logical” memory units that grow and contract

ex: stack, subroutine


shared library
main stack

• Solution? symbol table


• Segmentation!
Segmentation
• Logical address: <segment, offset>
• Segment table - maps two-dimensional user
defined address into one-dimensional
physical address
– base - starting physical location
– limit - length of segment
• Hardware support
– Segment Table Base Register
– Segment Table Length Register
Segmentation
logical
address s d

CPU

main
limit base
+
< physical
yes address
stack
no
error

(“Er, what have we gained?”) physical


 Paged segments! memory
Memory Management Outline
• Basic (done)
– Fixed Partitions (done)
– Variable Partitions (done)
• Paging (done)
– Basic (done)
– Enhanced (done)
• Specific 
– Windows
– Linux
Memory Management in
Windows
• 32 bit addresses (232 = 4 GB address space)
– Upper 2GB shared by all processes (kernel mode)
– Lower 2GB private per process
• Page size is 4 KB (212, so offset is 12 bits)
• Multilevel paging (2 levels)
– 10 bits for outer page table (page directory)
– 10 bits for inner page table
– 12 bits for offset
Memory Management in
Windows
• Each page-table entry has 32 bits
– only 20 needed for address translation
– 12 bits “left-over”
• Characteristics
– Access: read only, read-write
– States: valid, zeroed, free …
• Inverted page table
– points to page table entries
– list of free frames
Memory Management in Linux
• Page size:
– Alpha AXP has 8 Kbyte page
– Intel x86 has 4 Kbyte page
• Segments
– Kernel code, kernel data, user code, user data …
• Multilevel paging (3 levels)
– Makes code more portable
– Even though no hardware support on x86!
+ “middle-layer” defined to be 0

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy