0% found this document useful (0 votes)
20 views

M4 Virtual Memory PDF

Virtual memory is the separation of user logical memory from physical memory. This separation allows programmers to have a very large virtual memory when only a small physical memory is available. A demand-paging system is similar to paging with swapping, but only swaps necessary pages into memory lazily. When a process needs a page not in memory, a page fault occurs. The OS must then select a page to replace using an algorithm like FIFO or LRU in order to load the needed page from disk.

Uploaded by

Jason De Lara
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

M4 Virtual Memory PDF

Virtual memory is the separation of user logical memory from physical memory. This separation allows programmers to have a very large virtual memory when only a small physical memory is available. A demand-paging system is similar to paging with swapping, but only swaps necessary pages into memory lazily. When a process needs a page not in memory, a page fault occurs. The OS must then select a page to replace using an algorithm like FIFO or LRU in order to load the needed page from disk.

Uploaded by

Jason De Lara
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

APPLIED OPERATING

SYSTEM
MODULE 4
VIRTUAL MEMORY
Upon completion of this module, you will be able to:
• Explain virtual memory and its benefits;
• Discuss the concept of demand paging and page replacement
algorithms;
• Apply different page-replacement algorithms such as First-In
First-Out (FIFO), Optimal Algorithm, and Least Recently Used
(LRU) Algorithm in solving demand paging problems;
The various memory management strategies that are used in
computer systems have the same goal: to keep many
processes in memory simultaneously to allow
multiprogramming.

However, they tend to require the entire process to be in memory


before the process can execute.
Virtual Memory is a technique that allows the execution of
processes that may not be completely in memory. One major
advantage of this scheme is that programs can be larger than
physical memory.

Further, virtual memory abstracts main memory into an extremely


large, uniform array of storage, separating logical memory as
viewed by the user from physical memory.
This technique frees programmers from the concerns of memory-
storage limitations. Requiring that the entire process to be in main
memory before they can be executed limits the size of a program to
the size of physical memory.
However, an examination of real programs shows that, it need not be
in main memory at the same time.
For example:
1. Programs often have code to handle unusual error conditions.
Since these errors seldom, if ever, occur in practice, this code is
almost never executed.
The ability to execute a program that is only partially in memory
would confer many benefits:
1. A program would no longer be constrained by the amount of
physical memory that is available. Users would be able to write
programs for an extremely large virtual-address space.
2. Because each user program could take less physical memory,
more programs could run at the same time.
3. Less I/O would be needed to load or swap each user program
into memory, so each program would run faster.
page 0
page 1
Virtual memory is the page 2

separation of user logical page 3

memory from physical


memory. This separation .
allows programmers to have .
.

a very large virtual memory memory


map
when only a small physical
physical
memory is available. memory
page n

virtual
memory
A demand-paging system 0
1
is similar to a paging system valid-invalid
bit
2
0 A 3
with swapping. However, 1 B 0
1
4 v
i 4 A
instead of swapping the 2 C 2
3
4
6 v
i
i
5
A B
3 D 5 9 v 6 C
entire process into memory, 4 E 6
7
i
i 7 C D E

the OS (particular the pager) 5


6
F
G
page
table
8
9 F
F

swaps only the necessary 7 H 10


11
pages into memory (lazy logical
memory 12
swapping). 13

physical
memory
• There is an additional bit in the page table which is the valid-
invalid bit.
• This bit is set to valid to indicate that a corresponding page is
in memory.
• This bit is set to invalid to indicate that the corresponding
page is in secondary storage.
• If a process tries to use a page that is not in physical memory,
then a page-fault will occur. This will cause a trap to the
operating system indicating an invalid address error.
• In the extreme case, the system could start executing a process
with no pages in memory. The process would immediately fault
for the page with the first instruction.
• After the first page is brought into memory, the process would
continue to execute, faulting as necessary until every page that
it needed was actually in memory.
• This is pure demand paging: never bring a page into memory
until it is required.
• The principle of locality of reference ensures that programs
do not access a new page of memory with each instruction
execution.
• The effectiveness of the demand paging is based on a
property of computer programs called the locality of reference.
• Analysis of programs shows that most of their execution time
is spent on routines in which many instructions are executed
repeatedly.
• These instructions may constitute a simple loop, nested loops,
or a few procedures or functions that repeatedly call each other.
• It is important to keep the page-fault rate low in a demand-
paging system.
• Otherwise, the effective access time increases, slowing down
process execution dramatically.
• A problem occurs if there is a need to transfer a page from disk
to memory but there is no memory space available (there are no
free frames). In other words, memory is over-allocated.
• The operating system has several options at this point:
• It could terminate the user process. However, demand
paging is the operating system’s attempt to improve the
computer system’s utilization and throughput.
• Users should not be aware their processes are running on a
paged system – paging should be logically transparent to the
user.
• Another possibility is page replacement. In this scheme, the
operating system removes or replaces one of the existing
pages in memory to give way for the incoming page.
• A page replacement algorithm is necessary to select which
among the pages currently residing in memory will be replaced.
• Page replacement takes the following approach:
• If no frame is free, the system finds one that is currently
being used and frees it.
• Freeing a frame means transferring its contents to the disk
and changing the page table (and all other tables) to
indicate that the page is no longer in memory.
1 swap out
2
f 0 v i change to victim page
invalid
f victim
f v 4 reset page
table for new
page
3 swap desired
page table page in

physical
memory
The page fault service routine is now modified to include page
replacement:
1. Find the location of the desired page on the disk.
2. Find a free frame:
3. If there is a free frame, use it.
4. Otherwise, use a page-replacement algorithm to select a victim
frame.
5. Write the victim page to the disk; change the page and frame
tables accordingly.
6. Read the desired page into the (newly) free frame; change the
page and frame tables.
7. Restart the user process.
• Notice that, if no frames are free, two page transfers (one out and
one in) are required. This situation effectively doubles the page-
fault service time and will increase the effective access time
accordingly.
• To reduce this overhead, a modify or dirty bit is necessary for
each page or frame.
• The modify bit for a page is set whenever any word or byte is
written into, indicating that the page has been modified.
• It is no longer necessary to swap out pages whose modify bit
is 0 (there was no modification). An incoming page may simply
overwrite an unchanged page.
• There are two major problems in the implementation of demand
paging:
• Frame Allocation
How many frames will the operating system allocate to a
process, particularly if there are multiple processes?
• Page Replacement
How will the operating system select pages that are to be
removed from memory to give way for incoming pages?
• Page replacement algorithms are the techniques using which
an OS decides which memory pages to swap out, write to disk
when a page of memory needs to be allocated.
• A good page-replacement algorithm is one with a low page-
fault rate.
• An algorithm is evaluated by running it on a particular string of
memory references and computing the number of page faults.
The string of memory references is called the reference string.
• Common Page-replacement algorithms or techniques are First-
In, First-Out (FIFO), Optimal, and Least Recently Used (LRU)
Page Algorithm.
First-In First-Out (FIFO) Algorithm
This is the simplest page-replacement algorithm. When a
page must be replaced, the oldest page is chosen.

Example:
Assume that there are three frames in memory and that the
following is the page reference string:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
First-In First-Out (FIFO) Algorithm

There are 15 page faults.


Page fault
First-In First-Out (FIFO) Algorithm
• It is not strictly necessary to record the time when a page is
brought in. The OS simply creates a FIFO queue to hold all
pages in memory. The page at the head of the queue is replaced
if a frame is needed. When a page is brought into memory, it is
inserted at the tail of the queue.
• The FIFO page-replacement algorithm is easy to understand and
program. However, its performance is not always good. The
page replaced may be an initialization module that was used a
long time ago and is no longer needed.
First-In First-Out (FIFO) Algorithm
• Notice that, even if algorithm selects for replacement a page that
is in active use, everything still works correctly. After an active
page is removed to bring in a new one, a fault occurs almost
immediately to retrieve the active page.
• Thus, a bad replacement choice increases the page-fault rate
and slow process execution, but does not cause incorrect
execution.
First-In First-Out (FIFO) Algorithm
• As a general rule, the more frames available in physical
memory, the lower the page-fault rate.

• However, there are some instances where the page-fault rate


may increase as the number of physical memory frames
increases. This is known as Belady’s Anomaly.
First-In First-Out (FIFO) Algorithm suffers from Belady’s Anomaly.
Example:
Consider the reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

14

number of page faults


12
10
8
6
4
2

1 2 3 4 5 6
number of frames
Optimal Algorithm
• This algorithm has the lowest page-fault rate of all algorithms.
• In an optimal algorithm, the page that will be replaced is the one
that will not be used for the longest period of time.

There are 9 page faults.


Optimal Algorithm
• In the example, the optimal page-replacement algorithm produced
only 9 page faults as compared to the FIFO algorithm which
produced 15 page faults.
• If the first three page faults were ignored (since all algorithms suffer
from these initialization page faults), then the optimal algorithm is
twice as good as FIFO.
• Unfortunately, this algorithm is difficult to implement, since it
requires future knowledge of the reference string. The optimal
algorithm is used mainly for comparison studies.
Least Recently Used (LRU) Algorithm
• This algorithm uses the recent past to approximate the near
future. It simply replaces the page that has not been used for
the longest period of time.

Page Hit
There are 12 page faults.
Least Recently Used (LRU) Algorithm
• The LRU algorithm produced 12 page faults. Although it is not
as good as the 9 of the optimal algorithm (in fact, no other
algorithm will produce less than 9 page faults for this example), it
is much better than the 15 of the FIFO algorithm.
• The LRU policy is often used as a page replacement algorithm
and is considered to be quite good. The major problem is how to
implement LRU replacement.
• Siberschatz, A. (2018). Operating System Concepts,
Wiley.
• Tomsho, G. (2019). Guide to Operating Systems,
Cengage Learning.

You might also like