You are on page 1of 51

본 강의 자료는 Wiley 출판사에서 저작한 것을 강의용으로 수정 편집한 것이고, 본 영상은

명지대학교 데이터테크놀로지 전공 강의용으로 제작되었습니다. 본 강의 자료 및 영상의 무단


복제 및 배포는 저작권법에 위배되어 해당 법령에 의해 처벌될 수 있음을 유의 바랍니다.

Chapter 9
Main Memory

Operating System Concepts


Tenth Edition
Silberschatz, Galvin and Gagne
Chapter 9: Main Memory
◆ Background
◆ Contiguous Memory Allocation
◆ Paging
◆ Structure of the Page Table
◆ Swapping
◆ Example: The Intel 32- and 64-bit Architectures
◆ Example: ARMv8 Architecture
Objectives
◆ Explain the difference between a logical and a physical address
and the role of the memory management unit(MMU) in translating
addresses
◆ Apply first-, best-, worst-fit strategies for allocating memory
contiguously.
◆ Explain the distinction between internal and external
fragmentation.
◆ Translate logical to physical addresses in a paging system that
includes a translation look-aside buffer(TLB).
◆ Describe hierarchical paging, hashed paging, and inverted page
tables.
◆ Describe address translation for IA-32, x86-64, and ARMv8
architectures
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
◆ Memory unit only sees a stream of addresses + read requests, or
address + data and write requests
◆ 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
Base and Limit Registers
◆ Each process has a separate
memory space
◆ A pair of base
base and limit
limit registers
regigsters
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
Hardware Address Protection

trap to operating system


illegal addressing error
Address Binding 1
◆ Programs must be brought into
memory to execute from a disk
➢ Which part of the physical memory ?

◆ Addresses represented in different


ways at different stages of a
program’s life
➢ Source code – symbolic address
➢ Compiled code addresses bind
to relocatable addresses
➢ Linker or loader will bind
relocatable addresses to
absolute addresses
➢ Each binding maps one address
space to another
Address Binding 2
◆ Address binding of instructions and data to memory addresses can
happen at three different stages
◆ Compile time binding
➢ If memory location known at compile time, compiler generate absolute
code
➢ must recompile code if starting location changes
◆ Load time binding
➢ Compiler must generate relocatable code if memory location is not
known at compile time
➢ loader generate absolute code
◆ Execution time binding
➢ 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,
MMU)
Logical vs. Physical Address Space
◆ Logical
Logicaladdress
address (= virtual address)
➢ address generated by the CPU
◆ Physical
Physical address
address
➢ address seen by the memory unit
➢ loaded into memory-address register of memory
◆ 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
◆ Logical address space
➢ the set of all logical addresses generated by a program
◆ Physical address space
➢ the set of all physical addresses corresponding to logical addresses
◆ The concept of a logical address space that is bound to a separate
physical address space is central to proper memory management
Memory-Management Unit (MMU)
◆ Memory-Management
Memory-Management Unit
Unit (MMU)
(MMU)
➢ hardware device doing run-time mapping from virtual to physical
address
Dynamic Relocation
◆ Simple example of MMU scheme
➢ base
baseregister
register
(= relocation register)
is added to every
address generated
by a user process
at the time it is
sent to memory
limit
< register

◆ The user program deals


with logical addresses;
it never sees the real Dynamic relocation using a relocation register
physical addresses
Dynamic Loading
◆ Routine is not loaded until it is called
◆ Better memory-space utilization; unused routine is never loaded
◆ All routines kept on disk in relocatable load format
◆ Useful when large amounts of code are needed to handle
infrequently occurring cases(i.e. error routine)
◆ No special support from the operating system is required
➢ Implemented through program design
➢ OS can help by providing libraries to implement dynamic loading
Dynamic Linking and shard libraries
◆ Static linking – system libraries and program code combined by the
loader into the binary program image
◆ Dynamic linking –linking postponed until execution time
◆ Dynamically linked libraries(DLLs) – system libraries that are
linked to user programs when the programs are run
◆ DLLs can be shared among multiple processes, known as shared
libraries
◆ Dynamic linking is particularly useful for libraries
➢ can be extended to library updates, replaced by new versions
◆ Dynamic linking and shard libraries generally require help from OS
Contiguous Memory Allocation
◆ Main memory must support both OS and user processes
◆ Limited resource, must allocate efficiently
◆ Contiguous allocation is one early method
◆ Main memory usually into two partitions:
➢ Operating system, held in either low or high memory addresses
(depends on many factors, such as interrupt vector)
➢ Many OS(windows, Linux) held in high memory
➢ Each user process is contained in a single contiguous section of
memory
Memory Protection
◆ Relocation and limit registers used to protect user processes from
each other, and from changing operating-system code and data
➢ MMU maps logical address dynamically
➢ Dispatcher loads value of
relocation and limit range of smallest
logical physical
registers as part of addresses address
context switch

➢ Can then allow actions


such as kernel code
being transient and
kernel changing size
Contiguous Memory Allocation
◆ Variable-partition scheme
➢ assign processes to variably sized partitions, where each partition
contain exactly one process

high
memory

low
memory

➢ 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
➢ Process exiting frees its partition, adjacent free partitions combined
➢ Operating system maintains information about:
a) allocated partitions b) free partitions (hole)
Dynamic Storage-Allocation Problem
◆ How to satisfy a request of size n from a list of free holes?

◆ First-fit: Allocate the first hole that is big enough


First-fit
◆ Best-fit: Allocate the smallest hole that is big enough; must search
Best-fit
entire list, unless ordered by size
➢ Produces the smallest leftover hole
◆ Worst-fit: Allocate the largest hole; must also search entire list
Worst-fit
➢ Produces the largest leftover hole

◆ First-fit and best-fit better than worst-fit in terms of speed and


storage utilization
Fragmentation
◆ External Fragmentation– enough total memory space exists to
ExternalFragmentation
satisfy a request, but the available memory space is not contiguous:
storage is fragmented into many small holes.
◆ Internal Fragmentation– allocated memory may be slightly larger
InternalFragmentation
than requested memory; this size difference is memory internal to a
partition, but not being used
◆ First fit analysis reveals that given N blocks allocated, 0.5 N blocks
lost to fragmentation
➢ 1/3 may be unusable -> 50-percent rule
◆ Compaction – a solution to reduce external fragmentation
➢ Shuffle memory contents to place all free holes together in one large block
➢ Compaction is possible only if relocation is dynamic and is done at
execution time
➢ expensive
Paging
◆ Physical address space of a process can be noncontiguous; process is
allocated physical memory whenever the latter is available
➢ Avoids external fragmentation
➢ Avoids problem of varying sized memory chunks
◆ frames
Divide physical memory into fixed-sized blocks called frames
◆ Divide logical memory into blocks of same size called pages
pages
◆ Keep track of all free frames
◆ To run a program of size N pages, need to find N free frames and load
program
◆ Set up a page
pagetable
tableto translate logical to physical addresses
◆ Backing store likewise split into pages
◆ No external fragmentation. But still have internal fragmentation
Paging Model of Logical & Physical M.
Address Translation Scheme
◆ Address generated by CPU is divided into:
➢ Page number (p) – used as an index into a page table which contains
base address of each page in physical memory
➢ Page offset (d) – the location in the frame being referenced. combined
with base address to define the physical memory address that is sent to
the memory unit

◆ Page size(=frame size) power of 2, between 4KB ~ 1GB


➢ For given logical address space 2m and page size 2n

page number page offset


p d
m -n n
Paging Hardware
Paging
Example
n=2 and m=4
32-byte memory
with 4-byte pages
Paging 2
◆ Internal fragmentation example:
➢ Page size = 2,048 bytes
➢ Process size = 72,766 bytes (35 pages + 1,086 bytes)
➢ Internal fragmentation of 2,048 - 1,086 = 962 bytes
◆ Internal fragmentation
최악의 경우 : 마지막 프레임에 1바이트만 있음.
➢ Worst case: 1 frame – 1 byte 프레임 사이즈를 줄이면 페이지 테이블이
➢ Average: 1 / 2 frame size 너무 많아지게 됨
➢ So small frame sizes desirable?
➢ But each page table entry involves overhead
➢ Page sizes growing over time. typically 4KB or 8KB
✓ Windows 10 supports two page sizes – 4 KB and 2 MB
◆ Process view and physical memory now very different
◆ By implementation process can only access its own memory
Free Frames
할당 x

할당 o

Before allocation After allocation


Implementation of Page Table 1
◆ A pointer to page table is stored in PCB of each process.
◆ Page table is kept in main memory
◆ Page-table
Page-tablebase
baseregister
register (PTBR)
(PTBR) points to the page table
◆ Page-table
Page-tablelength
lengthregister (PTLR) indicates size of the page table
register (PTLR)
◆ In this scheme every data/instruction access requires two memory
accesses. One for the page table and one for the data / instruction
◆ 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
translation look-asidebuffers
buffers(TLBs)
(TLBs)

2번씩 접근
TLB에 들어있는지 확인
TLB에 의해 알아낸 번호로 hit
Paging Hardware With TLB 메인메모리 1번 접근
TLB miss가 일어나면 페이지
테이블을 찾아감.
페이지와 프레임 번호를 TLB에
복사를 해놈(page table)
저장

페이지 테이블에 대한 캐시 역할

메인메모리 안에 있음
Implementation of Page Table 2
◆ Associative memory – parallel search
◆ Address translation (p, d)
➢ If p is in associative register, get frame # out
➢ Otherwise get frame # from page table in memory
◆ TLBs typically small (64 to 1,024 entries). TLB contains only a few
of the page-table entries.
◆ On a TLB miss, value is loaded into the TLB for faster access next
time
➢ Replacement policies must be considered(LRU, RR, ….)
➢ Some entries can be wired down for permanent fast access
◆ Some TLBs store address-space identifiers (ASIDs) in each TLB
entry – uniquely identifies each process to provide address-space
protection for that process 이게 없으면 매번 페이지 프레임 번호를 바꿔야 함.
➢ Otherwise need to flush at every context switch
Effective Access Time
◆ Associative memory lookup time = 
◆ memory cycle time = 1
◆ Hit ratio =  TLB에 들어있을 확률
➢ percentage of times that a page number is found in the associative
registers; ratio related to number of associative registers
◆ Effective Access Time (EAT)
= (1 + )  + (2 + )(1 – )

◆ Consider  = 80%, 0ns for TLB search, 10ns for memory access
➢ EAT = 0.80 x 10 + 0.20 x 20= 12ns
◆ Consider  = 99%,  = 0ns for TLB search, 10ns for memory access
➢ EAT = 0.99 x 10 + 0.01 x 20 = 10.1ns
Memory Protection
◆ Memory protection implemented by associating protection bit with
each frame to indicate if read-only or read-write access is allowed
➢ Can also add more bits to indicate page execute-only, and so on
◆ Valid-invalid
Valid-invalid bit attached to each entry in the page table:
➢ “valid” indicates that the associated page is in the process’ logical
address space, and is thus a legal page
➢ “invalid” indicates that the page is not in the process’ logical address
space
➢ Or use page-table length
page-table register
length (PTLR)
register (PTLR)
◆ Any violations result in a trap to the kernel
Valid(v) / Invalid(i) Bit in a Page Table
◆ Ex: 14-bit address space (0~16383)
➢ program use only address 0~10468
➢ page size 2KB
Shared Pages
◆ Shared code
➢ One copy of read-only (reentrant) code shared among processes (i.e.,
text editors, compilers, window systems)
➢ Similar to multiple threads sharing the same process space
➢ Also useful for interprocess communication if sharing of read-write
pages is allowed
◆ Private code and data
➢ Each process keeps a separate copy of the code and data
➢ The pages for the private code and data can appear anywhere in the
logical address space
페이지 테이블을 이용해서 중복되는
Shared Pages Example 것을 방지해줌
Structure of the Page Table
◆ Memory structures for paging can get huge using straight-forward
methods
➢ Consider a 32-bit logical address space
➢ Page size of 4 KB (212)
➢ Page table would have 1M entries (232 / 212)
➢ If each entry is 4 bytes -> 4 MB of physical address space / memory for
page table alone
✓ Don’t want to allocate that contiguously in main memory

◆ Hierarchical
Hierarchical Paging
Paging
◆ Hashed
HashedPage Tables
Page Tables
◆ Inverted
Inverted Page Tables
Page Tables
Hierarchical Paging
◆ Break up the logical address space into multiple page tables
◆ A simple technique is a two-level page table
◆ We then page the page table
Two-Level Page-Table Scheme

logical address
Address-Translation
for two-level 32-bit page-table scheme
Two-Level Paging Example
◆ A logical address (on 32-bit machine with 4K page size) is divided
into:
➢ a page number consisting of 20 bits
➢ a page offset consisting of 12 bits
◆ Since the page table(each entry in page table: 4B) is paged, the
page number is further divided into:
➢ a 10-bit page number
➢ a 10-bit page offset
◆ Thus, a logical address is as follows:

◆ where p1 is an index into the outer page table, and p2 is the


displacement within the page of the inner page table
◆ Known as forward-mapped page table
64-bit Logical Address Space
◆ Even two-level paging scheme not sufficient
◆ If page size is 4 KB (212)
➢ Then page table has 252 entries
➢ If two level scheme, inner page tables could be 210 4-byte entries

➢ Outer page table has 242 entries or 244 bytes


➢ One solution is to add a 2nd outer page table

➢ But in the following example the 2nd outer page table is still 234 bytes in size
✓ And possibly 4 memory access to get to one physical memory location
Hashed Page Tables 시간 절약이 중요!

◆ Common in address spaces > 32 bits


◆ The virtual page number is hashed into a page table
➢ This page table contains a chain of elements hashing to the same
location
◆ Each element contains (1) the virtual page number (2) the value of
the mapped page frame (3) a pointer to the next element
◆ Virtual page numbers are compared in this chain searching for a
match
➢ If a match is found, the corresponding physical frame is extracted
◆ Variation for 64-bit addresses is clustered page tables
➢ Similar to hashed but each entry refers to several pages (such as 16)
rather than 1
➢ Especially useful for sparse address spaces (where memory references
are non-contiguous and scattered)
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
Inverted Page Table Architecture

frame number

page number
Swapping
◆ A process can be swapped temporarily out of memory to a backing
store, and then brought back into memory for continued execution
◆ (+) Total physical memory space of all processes can exceed
physical memory ➔ increase degree of multiprogramming
◆ Backing store
➢ fast disk large enough to accommodate copies of all memory images for
all users
➢ must provide direct access to these memory images
Standard Swapping
◆ Moving entire processes between main memory and a backing store
◆ When a process is swapped out, data structures associated with
process must be written to backing store and can be restored when
swapped in.
◆ Idle processes are
candidates for swapping
◆ Generally no longer
used in contemporary
OS, because of the
amount of time required
to move entire
processes
Swapping with Paging

◆ Most systems(Linux,
Windows) now use a
variation of swapping in
which pages of a process
can be swapped
◆ paging refers to
swapping with paging
◆ page page in
page out & page in

Copyright © 2020 John Wiley & Sons, Inc. 46


Swapping on Mobile Systems
◆ Not typically supported
➢ Flash memory based
✓ Small amount of space
✓ Limited number of write cycles
✓ Poor throughput between flash memory and main memory on mobile
platform

◆ Instead use other methods to free memory if low


➢ iOS asks apps to voluntarily relinquish allocated memory
✓ Read-only data thrown out and reloaded from flash if needed
✓ Failure to free can result in termination
➢ Android terminates apps if low free memory, but first writes application
state to flash for fast restart
Summary
Summary
Summary
Copyright

Copyright © 2020 John Wiley & Sons, Inc.


All rights reserved. Reproduction or translation of this work beyond that
permitted in Section 117 of the 1976 United States Act without the express
written permission of the copyright owner is unlawful. Request for further
information should be addressed to the Permissions Department, John
Wiley & Sons, Inc. The purchaser may make back-up copies for his/her own
use only and not for distribution or resale. The Publisher assumes no
responsibility for errors, omissions, or damages, caused by the use of these
programs or from the use of the information contained herein.

Copyright © 2020 John Wiley & Sons, Inc. 51

You might also like