Memory Management - Ohio State Computer Science and

Download Report

Transcript Memory Management - Ohio State Computer Science and

Mobile Handset
Memory Management
Outline
Introduction
 Memory Management Basics
 Android Memory Management
 iOS Memory Management

2
Goal of Memory Management
Memory management is part of an operating
system which allocates memory among
competing processes, maximizing memory
utilization and system throughput
 Provide isolation between processes
 Provide a convenient high level abstraction of
low level hardware for programmers and
compilers

3
Tasks of Memory Management
It keeps track of each memory location either it
is allocated to some process or it is free
 It checks how much memory should be
allocated to processes
 It decides which process will get memory at
what time
 It tracks whenever some memory gets
unallocated and correspondingly it updates the
status

4
Memory Management in OS
User Programs
User Interface
Operating
System
System Calls
File
Management
Memory
Management
Process
Management
Network
Management
Power
Management
Hardware
5
Mobile Handset
Memory Management
The memory management in mobile handset is
based on the general computer memory
management techniques
 We first review general memory management
techniques and then choose Android and iOS
as typical mobile platforms to show the
differences

6
Outline
Introduction
 Memory Management Basics
 Android Memory Management
 iOS Memory Management

7
Hardware Facts


The CPU can only access its registers and memory. It
cannot make direct access to the hard drive. Data
stored there must first be transferred into the memory
before CPU processes it
Accesses to registers are very fast, generally 1
nanosecond. Accesses to memory are relatively slow,
generally 100 nanoseconds (use cache to speedup).
Accesses to hard drive are slowest, generally 10
millisecond
8
Some Terms


Register: A high-speed storage area inside the CPU
When a typical program gets loaded into memory, it
consists of four memory areas:
 Stack:
stores temporary variables created by each function
of that program
 Heap: the area particularly for dynamic memory allocation
 Data: stores global and static variables of that program
 Code: stores instructions of that program
9
Major Memory Management
Techniques
Base and limit registers
 Virtual memory
 Swapping
 Segmentation
 Paging

10
Base and Limit Registers(1)
Processes must be restricted so that they can
only access memory locations that belong to
that particular process
 Each process has a base register and limit
register

 The
base register holds the smallest valid memory
address
 The limit register specifies the size of the range
11
Base and Limit Registers(2)

For example, the
valid memory address
for process 2 is from
300040 to 420940
1
2
3
12
Base and Limit Registers(3)

Every memory access from a user process is checked
against these two registers

The OS kernel has access to all memory locations as
it needs to manage the whole memory
13
Virtual Memory (1)

Virtual memory (VM) is the basic abstraction that OS
provides for memory management. “Virtual” means
“using a level of indirection”
 All
programs use virtual memory addresses
 Virtual address is converted to a physical address
 Physical address indicates the real physical location of data
 Physical location can be memory or disk
14
Virtual Memory (2)
Without virtual memory
With virtual memory
Address
Translation
15
Virtual Memory (3)


The translation of virtual
to physical addresses is
handled by the memorymanagement unit (MMU).
MMU uses a relocation
register whose value is
added to every memory
request at the hardware
level
16
Swapping (1)



Swapping is a technique in which a process can be
swapped temporarily out of memory to a backing
store, and then brought back into memory for
continued execution
Backing store is usually a hard drive which is fast in
access and large enough to store copies of memory
images
If there is not enough memory available to keep all
running processes in memory at the same time, some
processes who are not currently using the CPU may
have their memory swapped out to the backing store
17
Swapping (2)
18
Swapping (3)

Swapping is a very slow process. The major
time consuming part is the data transfer time
 E.g.,
if a process occupies 10MB memory and the
transfer rate for the backing store is 40MB per
second, it will take 0.25 second just to do the data
transfer. Adding in the time for swapping in new
data, the overall transfer time can be half a second,
which is a huge delay

Some OSes no longer use swapping because it
is too slow
19
Segmentation (1)


Segmentation is a technique to
break memory into logical pieces
where each piece represents a
group of related information. For
example, stack, heap, data or
code segments for each process,
data segments for OS kernel, etc.
Breaking up the memory into
smaller chucks increases chances
of finding free memory
Logical Address Space
20
Segmentation (2)

Each segment has a pair of registers
 Base
register: contains the starting physical
address where the segment reside in memory
 Limit register: specifies the length of the segment

Segment table stores the base and limit register
information for each segment
Segment 1
Segment 2
limit
base
Segment 3
Segment Table
21
Segmentation (3)
When using segmentation, the virtual memory
address is a pair: <segment number, offset>
 Segment number is used as index into the
segment table to find a specific entry
 Offset is first compared against the limit and
then combined with base address to calculate
the physical memory address

22
Segmentation (4)
Segment Table
Index to segment
table
limit
physical memory
base
segment 0
segment #
offset
segment 1
virtual memory address
segment 2
<?
no
raise
eorr
yes
+
Physical
Address
segment 3
segment 4
23
Paging (1)
Sometimes the available memory is broken up
into lots of little pieces, none of which is big
enough to satisfy the next memory
requirement, although the sum total could
 This problem is called fragmentation and many
memory allocation strategies suffer from it

24
Paging (2)
Paging is a memory management technique
that allows the process’s physical memory to
be discontinuous
 It eliminates the fragmentation problem by
allocating memory in equal sized blocks
known as pages
 It is the predominant memory management
technique now

25
Paging (3)
Paging divides physical memory into a number
of equal sized blocks called frames and divides
a process’s logical memory space into equal
sized blocks called pages
 Any page from any process can be placed into
any available frame
 A page table is used to look up what frame a
particular page is stored in at the moment

26
Paging (4)
virtual address space
physical address space
Page Table
page 2
…
page 3
page X
0
frame 1
1
frame 2
2
3
Y
2
…
page 1
frame 0
…
page 0
frame Y
X
1
27
Paging (5)
When using paging, a virtual memory address
if a pair: <page number, offset >
 Page number is used as an index into the page
table to find the entry for this page
 Offset is combined with base address to define
the physical memory address

28
Paging (6)
virtual address
offset
physical memory
frame 0
page table
frame 1
physical address
Frame number
frame number
offset
frame 2
frame 3
…
page number
frame Y
29
Paging (7)

An example of address translation for paging
 Virtual
memory address is 0x13325328
 Page table entry 0x13325 contains value 0x03004
 What is the physical address

Physical address is 0x03004328
 Page
number is 0x13325 and offset is 0x328
 The corresponding frame number is 0x03004
30
Outline
Introduction
 Memory Management Basics
 Android Memory Management
 iOS Memory Management

31
Android Memory Management (1)
Android uses virtual memory and paging
 Android does not support swapping

 It
uses flash memory for persistent storage like the
hard drives in a desktop, so there is not as much
space available
 Flash memory can only be written to a limited
number of times before it becomes unreliable
 The bandwidth to flash memory is lower
32
Android Memory Management (2)

Processes can share memory
 Each
process is forked from the Zygote process (as
we talked in last class).
 The Zygote process starts when the system boots
and loads common framework code and resources
into memory
 Memory pages of framework code and resources
can be shared across all application processes
33
Android Memory Management (3)

Dalvik garbage collection:
 Each
Android app runs in a Dalvik virtual machine and has
its own Dalvik garbage collector
 The garbage collector maintains a free list which contains
all the free memory blocks
 If a process requests a free block and the free list is empty,
the garbage collector will be triggered to work:



Each block has a bit to indicate if it is in use
Mark the bits for blocks that are in use and cannot be collected.
These mark bits are stored in a separate memory area
Sweep and collect all unmarked blocks and put them back to the
free list
34
Android Memory Management (4)

Restricting application memory:
 Android
sets a hard limit on the heap size for each
application
 If an app has reached the heap capacity and tries to
allocated more memory, it will receive an
OutOfMemoryError
35
Android Memory Management (5)

Switching apps:
 When
the user switches between apps, Android keeps apps
which are not currently visible to the user in a least-recently
used (LRU) cache
 When the user later returns to the cached app, the app is
reused for faster switching
 When the system runs low on memory, it will kill apps in
the LRU cache beginning with the one least recently used
36
Outline
Introduction
 Memory Management Basics
 Android Memory Management
 iOS Memory Management

37
iOS Memory Management (1)
iOS include a fully-integrated virtual memory
system that is always on
 Like Android, iOS does not support swapping
for the same reason (in fact, most mobile
platform does not support swapping)

38
iOS Memory Management (2)

The principles to free up memory
 Read-only
data which has a copy on the flash is
simply removed from memory and reloaded from
flash as needed
 Modified data is never removed from memory by
the OS
 The system asks the running apps to free up
memory voluntarily to make room for new data
 Apps that fail to free up sufficient memory will be
terminated by the OS
39
iOS Memory Management (3)
iOS also uses the concept of paging
 Besides, it divides the virtual address space of
a process into a number of regions. Each
region contains a known number of pages
 The kernel associates a virtual memory (VM)
object with each region and uses VM objects
to track and manage the memory

40
Summary

Compared with general techniques
Android
iOS
Similarity
Use virtual memory and
paging
Do not use swapping
Use virtual memory and
paging
Do not use swapping
Difference
Memory share
Garbage collection
Heap restriction
Application cache
Voluntarily memory free up
principle
Memory region concept
VM objects
41
References (1)






https://www.cs.rutgers.edu/~pxk/416/notes/09-memory.html
http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMem
ory.html
http://www.tutorialspoint.com/operating_system/os_memory_management.
htm
http://developer.android.com/training/articles/memory.html
https://mobworld.wordpress.com/2010/07/05/memory-management-inandroid/
http://courses.cs.washington.edu/courses/cse451/13au/lectures.html
42