Chap 8 Main Memory
Chap 8 Main Memory
Background
Swapping
Contiguous Memory Allocation
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.2 Silberschatz, Galvin and Gagne ©2013
Objectives Background
To provide a detailed description of various ways of Program must be brought (from disk) into memory and
organizing memory hardware placed within a process for it to be run
To discuss various memory-management techniques, Main memory and registers are only storage CPU can
including paging and segmentation access directly
To provide a detailed description of the Intel Pentium, which Memory unit only sees a stream of addresses + read
supports both pure segmentation and segmentation with requests, or address + data and write requests
paging
Register access in one CPU clock (or less)
Main memory can take many cycles, causing a stall
Cache sits between main memory and CPU registers
Protection of memory required to ensure correct operation
Operating System Concepts – 9th Edition 8.3 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.4 Silberschatz, Galvin and Gagne ©2013
Base and Limit Registers Hardware Address Protection
A pair of base and limit registers define the logical address space
CPU must check every memory access generated in user mode to
be sure it is between base and limit for that user
Operating System Concepts – 9th Edition 8.5 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.6 Silberschatz, Galvin and Gagne ©2013
Programs on disk, ready to be brought into memory to execute form an Address binding of instructions and data to memory addresses
input queue can happen at three different stages
Without support, must be loaded into address 0000
Compile time: If memory location known a priori, absolute
Inconvenient to have first user process physical address always at 0000 code can be generated; must recompile code if starting
How can it not be? location changes
Further, addresses represented in different ways at different stages of a Load time: Must generate relocatable code if memory
program’s life location is not known at compile time
Source code addresses usually symbolic
Execution time: Binding delayed until run time if the
Compiled code addresses bind to relocatable addresses process can be moved during its execution from one memory
i.e. “14 bytes from beginning of this module” segment to another
Linker or loader will bind relocatable addresses to absolute addresses Need hardware support for address maps (e.g., base and
i.e. 74014 limit registers)
Each binding maps one address space to another
Operating System Concepts – 9th Edition 8.7 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.8 Silberschatz, Galvin and Gagne ©2013
Multistep Processing of a User Program Logical vs. Physical Address Space
Operating System Concepts – 9th Edition 8.9 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.10 Silberschatz, Galvin and Gagne ©2013
Hardware device that at run time maps virtual to physical Routine is not loaded until it is
address called
Many methods possible, covered in the rest of this chapter Better memory-space utilization;
To start, consider simple scheme where the value in the unused routine is never loaded
relocation register is added to every address generated by a All routines kept on disk in
user process at the time it is sent to memory relocatable load format
Base register now called relocation register Useful when large amounts of
MS-DOS on Intel 80x86 used 4 relocation registers code are needed to handle
infrequently occurring cases
The user program deals with logical addresses; it never sees the
No special support from the
real physical addresses
operating system is required
Execution-time binding occurs when reference is made to Implemented through program
location in memory design
Logical address bound to physical addresses OS can help by providing libraries
to implement dynamic loading
Operating System Concepts – 9th Edition 8.11 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.12 Silberschatz, Galvin and Gagne ©2013
Dynamic Linking Swapping
Static linking – system libraries and program code combined by A process can be swapped temporarily out of memory to a
the loader into the binary program image backing store, and then brought back into memory for continued
execution
Dynamic linking –linking postponed until execution time Total physical memory space of processes can exceed
Small piece of code, stub, used to locate the appropriate physical memory
memory-resident library routine Backing store – fast disk large enough to accommodate copies
of all memory images for all users; must provide direct access to
Stub replaces itself with the address of the routine, and executes these memory images
the routine Roll out, roll in – swapping variant used for priority-based
Operating system checks if routine is in processes’ memory scheduling algorithms; lower-priority process is swapped out so
address higher-priority process can be loaded and executed
Major part of swap time is transfer time; total transfer time is
If not in address space, add to address space directly proportional to the amount of memory swapped
Dynamic linking is particularly useful for libraries System maintains a ready queue of ready-to-run processes
which have memory images on disk
System also known as shared libraries
Consider applicability to patching system libraries
Versioning may be needed
Operating System Concepts – 9th Edition 8.13 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.14 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.15 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.16 Silberschatz, Galvin and Gagne ©2013
Context Switch Time including Swapping Context Switch Time and Swapping (Cont.)
If next processes to be put on CPU is not in memory, need to Other constraints as well on swapping
swap out a process and swap in target process
Pending I/O – can’t swap out as I/O would occur to wrong
Context switch time can then be very high process
100MB process swapping to hard disk with transfer rate of Or always transfer I/O to kernel space, then to I/O device
50MB/sec
Known as double buffering, adds overhead
Swap out time of 2000 ms
Standard swapping not used in modern operating systems
Plus swap in of same sized process
But modified version common
Total context switch swapping component time of 4000ms
Swap only when free memory extremely low
(4 seconds)
Can reduce if reduce size of memory swapped – by knowing
how much memory really being used
System calls to inform OS of memory use via
request_memory() and release_memory()
Operating System Concepts – 9th Edition 8.17 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.18 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.19 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.20 Silberschatz, Galvin and Gagne ©2013
Contiguous Allocation (Cont.) Hardware Support for Relocation and Limit Registers
Operating System Concepts – 9th Edition 8.21 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.22 Silberschatz, Galvin and Gagne ©2013
First-fit and best-fit better than worst-fit in terms of speed and storage
utilization
Operating System Concepts – 9th Edition 8.23 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.24 Silberschatz, Galvin and Gagne ©2013
Fragmentation Fragmentation (Cont.)
External Fragmentation – total memory space exists to Reduce external fragmentation by compaction
satisfy a request, but it is not contiguous
Shuffle memory contents to place all free memory together
Internal Fragmentation – allocated memory may be slightly in one large block
larger than requested memory; this size difference is memory
Compaction is possible only if relocation is dynamic, and is
internal to a partition, but not being used
done at execution time
First fit analysis reveals that given N blocks allocated, 0.5 N
I/O problem
blocks lost to fragmentation
Latch job in memory while it is involved in I/O
1/3 may be unusable -> 50-percent rule
Do I/O only into OS buffers
Now consider that backing store has same fragmentation
problems
Operating System Concepts – 9th Edition 8.25 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.26 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.27 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.28 Silberschatz, Galvin and Gagne ©2013
Logical View of Segmentation Segmentation Architecture
Logical address consists of a two tuple:
1
<segment-number, offset>,
4
1 Segment table – maps two-dimensional physical addresses; each
table entry has:
2
base – contains the starting physical address where the
segments reside in memory
3 2 limit – specifies the length of the segment
4
Segment-table base register (STBR) points to the segment
3 table’s location in memory
Operating System Concepts – 9th Edition 8.29 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.30 Silberschatz, Galvin and Gagne ©2013
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
Since segments vary in length, memory allocation is a
dynamic storage-allocation problem
A segmentation example is shown in the following diagram
Operating System Concepts – 9th Edition 8.31 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.32 Silberschatz, Galvin and Gagne ©2013
Paging Address Translation Scheme
Physical address space of a process can be noncontiguous; Address generated by CPU is divided into:
process is allocated physical memory whenever the latter is Page number (p) – used as an index into a page table which
available contains base address of each page in physical memory
Avoids external fragmentation Page offset (d) – combined with base address to define the
Avoids problem of varying sized memory chunks physical memory address that is sent to the memory unit
Divide physical memory into fixed-sized blocks called frames
page number page offset
Size is power of 2, between 512 bytes and 16 Mbytes
p d
Divide logical memory into blocks of same size called pages
m -n n
Keep track of all free frames
To run a program of size N pages, need to find N free frames and For given logical address space 2m and page size 2n
load program
Set up a page table to translate logical to physical addresses
Backing store likewise split into pages
Still have Internal fragmentation
Operating System Concepts – 9th Edition 8.33 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.34 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.35 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.36 Silberschatz, Galvin and Gagne ©2013
Paging Example Paging (Cont.)
Operating System Concepts – 9th Edition 8.37 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.38 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.39 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.40 Silberschatz, Galvin and Gagne ©2013
Implementation of Page Table (Cont.) Associative Memory
Some TLBs store address-space identifiers (ASIDs) in each Associative memory – parallel search
TLB entry – uniquely identifies each process to provide
address-space protection for that process Page # Frame #
Operating System Concepts – 9th Edition 8.41 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.42 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.43 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.44 Silberschatz, Galvin and Gagne ©2013
Memory Protection Valid (v) or Invalid (i) Bit In A Page Table
Operating System Concepts – 9th Edition 8.45 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.46 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.47 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.48 Silberschatz, Galvin and Gagne ©2013
Structure of the Page Table Hierarchical Page Tables
Memory structures for paging can get huge using straight- Break up the logical address space into multiple page
forward methods tables
Consider a 32-bit logical address space as on modern A simple technique is a two-level page table
computers
We then page the page table
Page size of 4 KB (212)
Page table would have 1 million entries (232 / 212)
If each entry is 4 bytes -> 4 MB of physical address space /
memory for page table alone
That amount of memory used to cost a lot
Don’t want to allocate that contiguously in main memory
Hierarchical Paging
Hashed Page Tables
Inverted Page Tables
Operating System Concepts – 9th Edition 8.49 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.50 Silberschatz, Galvin and Gagne ©2013
Since the page table is paged, the page number is further divided into:
a 12-bit page number
a 10-bit page offset
Operating System Concepts – 9th Edition 8.51 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.52 Silberschatz, Galvin and Gagne ©2013
Address-Translation Scheme 64-bit Logical Address Space
Operating System Concepts – 9th Edition 8.53 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.54 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.55 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.56 Silberschatz, Galvin and Gagne ©2013
Hashed Page Table Inverted Page Table
Rather than each process having a page table and keeping track
of all possible logical pages, track all physical pages
One entry for each real page of memory
Entry consists of the virtual address of the page stored in that
real memory location, with information about the process that
owns that page
Decreases memory needed to store each page table, but
increases time needed to search the table when a page
reference occurs
Use hash table to limit the search to one — or at most a few —
page-table entries
TLB can accelerate access
But how to implement shared memory?
One mapping of a virtual address to the shared physical
address
Operating System Concepts – 9th Edition 8.57 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.58 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.59 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.60 Silberschatz, Galvin and Gagne ©2013
Oracle SPARC Solaris (Cont.) Example: The Intel 32 and 64-bit Architectures
TLB holds translation table entries (TTEs) for fast hardware lookups
Dominant industry chips
A cache of TTEs reside in a translation storage buffer (TSB)
Includes an entry per recently accessed page
Pentium CPUs are 32-bit and called IA-32 architecture
Virtual address reference causes TLB search
If miss, hardware walks the in-memory TSB looking for the TTE
Current Intel CPUs are 64-bit and called IA-64 architecture
corresponding to the address
If match found, the CPU copies the TSB entry into the TLB
and translation completes Many variations in the chips, cover the main ideas here
If no match found, kernel interrupted to search the hash table
– The kernel then creates a TTE from the appropriate hash
table and stores it in the TSB, Interrupt handler returns
control to the MMU, which completes the address
translation.
Operating System Concepts – 9th Edition 8.61 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.62 Silberschatz, Galvin and Gagne ©2013
Example: The Intel IA-32 Architecture Example: The Intel IA-32 Architecture (Cont.)
Supports both segmentation and segmentation with paging CPU generates logical address
Each segment can be 4 GB Selector given to segmentation unit
Up to 16 K segments per process Which produces linear addresses
Divided into two partitions
First partition of up to 8 K segments are private to
process (kept in local descriptor table (LDT)) Linear address given to paging unit
Second partition of up to 8K segments shared among all Which generates physical address in main memory
processes (kept in global descriptor table (GDT))
Paging units form equivalent of MMU
Pages sizes can be 4 KB or 4 MB
Operating System Concepts – 9th Edition 8.63 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.64 Silberschatz, Galvin and Gagne ©2013
Logical to Physical Address Translation in IA-32 Intel IA-32 Segmentation
Operating System Concepts – 9th Edition 8.65 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.66 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 8.67 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.68 Silberschatz, Galvin and Gagne ©2013
Intel x86-64 Example: ARM Architecture
Current generation Intel x86 architecture Dominant mobile platform chip
(Apple iOS and Google Android
64 bits is ginormous (> 16 exabytes) devices for example)
32 bits
Operating System Concepts – 9th Edition 8.69 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 8.70 Silberschatz, Galvin and Gagne ©2013
End of Chapter 8
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013