ceng 334 - operating systems 3.2-1 chapter 3.2 : virtual memory what is virtual memory? virtual...

47
Ceng 334 - Operating Systems 3.2-1 Chapter 3.2 : Virtual Memory • What is virtual memory? • Virtual memory management schemes •Paging •Segmentation •Segmentation with paging • Page table management

Post on 21-Dec-2015

225 views

Category:

Documents


0 download

TRANSCRIPT

Ceng 334 - Operating Systems 3.2-1

Chapter 3.2 : Virtual Memory

• What is virtual memory?

• Virtual memory management schemes• Paging• Segmentation• Segmentation with paging

• Page table management

Ceng 334 - Operating Systems 3.2-2

Problems with Memory Management Techniques so far

1. Unused (wasted) memory due to fragmentation

2. Memory may contain parts of program which are not used during a run (ie., some routines may not be accessed in that particular run)

3. Process size is limited with the size of physical memory

Ceng 334 - Operating Systems 3.2-3

Virtual Memory (VM)

Virtual memory of process on disk

Real memory of system

Map (translate)

virtual address to real

Ceng 334 - Operating Systems 3.2-4

Virtual Memory (VM)

• VM is conceptual

• It is constructed on disk

• Size of VM is not limited (usually larger than real memory)

• All process addresses refer to the VM image

• When the process executes all VM addresses are mapped on to real memory

Ceng 334 - Operating Systems 3.2-5

Did We Solve the “Problems”?

1. Unused (wasted) memory due to fragmentation (We’ll see!)

2. Memory may contain parts of program which are not used during a run

– YES! Virtual memory contents are loaded into memory on demand

3. Process size is limited with the size of physical memory

– YES! Process size can be larger than real memory

Ceng 334 - Operating Systems 3.2-6

(Pure) Paging

• Virtual and real memory are divided into fixed sized pages

• Programs are divided into pages• A process address (both in virtual & real memory)

has two components

Page # Offset within page

Ceng 334 - Operating Systems 3.2-7

Interpretation of an Address

• 16 bits for addressing means that the memory addressed is 64K bytes (0000 -FFFF)

• Suppose page size is 4K bytes (12 bits)• The virtual memory has 16 pages (4 bits)• Real memory can have at the most 16 pages• Example :

address : 7 F B C 0111 1111 1011 1100

Page # Offset

Ceng 334 - Operating Systems 3.2-8

The relation between virtual addresses and physical memory addresses

64K Virtual Memory

32K Real Memory

Ceng 334 - Operating Systems 3.2-9

Paging (Cont.)

• When process pages are transferred from VM to real memory, page numbers must be mapped from virtual to real memory addresses

• This mapping is done by software & hardware

• When the process is started only the first page (main) is loaded. Other pages are loaded on demand

Ceng 334 - Operating Systems 3.2-10

Virtual Memory – Memory Management Unit

The position and function of the MMU

Ceng 334 - Operating Systems 3.2-11

Internal operation of MMU with 16 4 KB pages

Note that virtual address is 16 bits (64K virtual memory)

but the physical address is 15 bits (32K real memory)

Ceng 334 - Operating Systems 3.2-12

Page Tables

• Index of page table is the virtual page #

Page Table

0 Page frame #

Page protection

Reference bit

Modification bit

Validity bit

Page Table Entry

1

8

234567

Ceng 334 - Operating Systems 3.2-13

Page Table Entry Fields

• Validity bit is set when the page is in memory

• Reference bit is set set by the hardware whenever the page is referred

• Modified bit is set whenever the page is modified

• Page-protection bits set the access rights (eg., read, write restrictions)

Ceng 334 - Operating Systems 3.2-14

Address Mapping in Paging

Real memory address

Page tables of processes

PTn

PT 1

PT2. .

Page # Offset within pagePage Table Register

+

Catenate

Virtual memory address

Ceng 334 - Operating Systems 3.2-15

Address Mapping in Paging (Cont.)

• During the execution every page reference is checked against the page map table entry

• If the validity bit is set (ie., page is in memory) execution continues

• If the page is not in memory a page fault (interrupt - trap) occurs and the page is fetched into memory

• If the memory is full, pages are written back using a page replacement algorithm

Ceng 334 - Operating Systems 3.2-16

Memory Management Problems : Re-visit due to paging1. Unused (wasted) memory due to fragmentation

– ONLY on the last page (Page Break)

2. Memory may contain parts of program which are not used during a run – Virtual memory contents are loaded into memory on demand

3. Process size is limited with the size of physical memory – Process size can be larger than real memory

• Furthermore, program does not occupy contiguous locations in memory (virtual pages are scattered in real memory)

Ceng 334 - Operating Systems 3.2-17

Segmentation

• Pages are fixed in size, segments are variable sized

• A segment can be a logical entity such as– Main program– Some routines– Data of program– File– Stack

Ceng 334 - Operating Systems 3.2-18

Segmentation (Cont.)• Process addresses are now in the form

Segment # Offset within segment

• Segment Map Table has one entry for each segment and each entry consist of

– Segment number

– Physical segment starting address

– Segment length

Ceng 334 - Operating Systems 3.2-19

Segmentation (1)

• One-dimensional address space with growing tables• One table may bump into another

Ceng 334 - Operating Systems 3.2-20

Segmentation (2)

Allows each table to grow or shrink, independently

Ceng 334 - Operating Systems 3.2-21

Segmentation (3)

Comparison of paging and segmentation

Ceng 334 - Operating Systems 3.2-22

Implementation of Pure Segmentation

(a)-(d) Development of fragmentation(e) Removal of the fragmentation by compaction

Ceng 334 - Operating Systems 3.2-23

Problems with Segmentation

• Similar problems in dynamic partitioning

– Fragmentation in real memory

– Relocation is necessary for compaction

Ceng 334 - Operating Systems 3.2-24

Segmentation with Paging

• Segmentation in virtual memory, paging in real memory

• A segment is composed of pages

• An address has three components

Page # Offset within pageSegment #

• The real memory contains only the demanded pages of a segment, not the full segment

Ceng 334 - Operating Systems 3.2-25

Addressing in Segmentation with Paging

Segment Table Page Tables Pages

Page # Offset within pageSegment #

Ceng 334 - Operating Systems 3.2-26

Segmentation with Paging: MULTICS (1)

• Descriptor segment points to page tables• Segment descriptor – numbers are field lengths

Ceng 334 - Operating Systems 3.2-27

Segmentation with Paging: MULTICS (2)

A 34-bit MULTICS virtual address

Ceng 334 - Operating Systems 3.2-28

Segmentation with Paging: MULTICS (3)

Conversion of a 2-part MULTICS address into a main memory address

Ceng 334 - Operating Systems 3.2-29

Segmentation with Paging: MULTICS (4)

• Simplified version of the MULTICS TLB• Existence of 2 page sizes makes actual TLB more complicated

Ceng 334 - Operating Systems 3.2-30

Segmentation with Paging: Pentium (1)

A Pentium selector

Ceng 334 - Operating Systems 3.2-31

Segmentation with Paging: Pentium (2)

• Pentium code segment descriptor• Data segments differ slightly

Ceng 334 - Operating Systems 3.2-32

Segmentation with Paging: Pentium (3)

Conversion of a (selector, offset) pair to a linear address

Ceng 334 - Operating Systems 3.2-33

Segmentation with Paging: Pentium (4)

Mapping of a linear address onto a physical address

Ceng 334 - Operating Systems 3.2-34

Segmentation with Paging: Pentium (5)

Protection on the Pentium

Level

Ceng 334 - Operating Systems 3.2-35

How Big is a Page Table?

• Consider a full 2 32 byte (4GB) address space

– Assume 4096 byte (2 12 byte) pages

– 4 bytes per page table entry

– The page table has 2 32/2 12 (= 2 20 ) entries (one for each page)

– Page table size would be 2 22 bytes (or 4 megabytes)

Ceng 334 - Operating Systems 3.2-36

Problems with Direct Mapping?

• Although a page table is of variable length depending on the size of process, we can not keep them in registers

• Page table must be in memory for fast access

• Since a page table can be very large (4MB), page tables are stored in virtual memory and be subjected to paging like process pages

Ceng 334 - Operating Systems 3.2-37

How to Solve?

• Two-level Lookup

• Inverted Page Tables

• Translation Lookaside Buffers

Ceng 334 - Operating Systems 3.2-38

Two-Level Lookup

Directory Page Offset

12 bits - 4096 Byte pages

10 bits - 1024 pages

10 bits - 1024 directories

Virtual Address - 32 bits (4 GB)

Ceng 334 - Operating Systems 3.2-39

Two-Level Lookup (Cont.)

Dir Page Offset

+

+

Physical Address

Page Directory

Page Table

Ceng 334 - Operating Systems 3.2-40

Two-Level Lookup (Cont.)

• A process is represented by one or more entries of the page directory (ie., several page tables)

• Typically a page table size is set as one page which makes swapping easier

• This is one of the addressing schemes used by Intel family of chips (Intel chips can use paging, segmentation or a combination of both)

Ceng 334 - Operating Systems 3.2-41

• 32 bit address with 2 page table fields

• Two-level page tables

Second-level page tables

Top-level page table

Two-Level Lookup (Cont.)

Ceng 334 - Operating Systems 3.2-42

Inverted Page Tables

Page # Offset within page

Virtual Address

hash

Hash TablePage Frame Table

PID

Page # 101

Hash # 23

Process # 17

76

Page #

23

17

32213

21

Ceng 334 - Operating Systems 3.2-43

Inverted Page Tables (Cont.)

• The virtual page number is hashed to point to a hash table

• The hash table contains a pointer to the inverted page table

• Inverted page table contains page table entries (one for each real memory page)

• Entries having the same hash codes are chained

Ceng 334 - Operating Systems 3.2-44

Inverted Page Tables (Cont.)

• A fixed portion of memory is used for mapping regardless of the number of processes or virtual pages

• This approach is used by IBM’s AS/400 and RISC System/6000 computers

Ceng 334 - Operating Systems 3.2-45

Translation Lookaside Buffer

Frame # Offset

TLB Hit

TLB Miss

TLB

Page Table

Page # Offset

Virtual Address

Real AddressPage Fault

Ceng 334 - Operating Systems 3.2-46

Translation Lookaside Buffer (Cont.)

• Translation lookaside buffer (TLB) is a cache for page table entries

• TLB contains page table entries that have been most recently used

• Whenever the page table is referred (TLB miss), the page table entry is also copied to the TLB

• TLB is usually an associative memory (content addressable memory)

Ceng 334 - Operating Systems 3.2-47

TLBs – Translation Lookaside Buffers

A TLB to speed up paging