SlideShare a Scribd company logo
OPERATING SYSTEM
Deadlocks and Memory
management
Ekta Assistant
Professor
Resources
 Operating system resources are the physical or
virtual components of limited availability within a
computer system.
 Every (physical) device connected to a computer
system is a resource.
 Virtual system resources include files, network
connections and memory areas.
 CPU time, memory, secondary storage like hard
disks, network throughput, battery power, external
devices are all resources of a computer which an
operating system manages.
Resources
 A system resource is any usable part of a computer that can be
controlled and assigned by the operating system so all of
the hardware and software on the computer can work together as
designed.
 In most cases, the term "system resources" is used to refer to
how much memory, or RAM, your computer has available.
 For example, if you have 1.0 GB (1024 MB) of RAM installed on
your machine, then you have a total of 1024 MB of system
resources. However, as soon as your computer boots up, it loads
the operating system into the RAM. This means some of your
computer's resources are always being used by the operating
system. Other programs and utilities that are running on your
machine also use your computer's memory. If your operating
system uses 300 MB of RAM and your active programs are using
200 MB, then you would have 524 MB of "available system
resources." To increase your available system resources, you can
close active programs or increase your total system resources by
adding more RAM.
Resources
 System resources can also refer to what software
is installed on your machine. This includes the
programs, utilities, fonts, updates, and other
software that is installed on your hard drive. For
example, if a file installed with a certain program
is accidentally removed, the program may fail to
open. The error message may read, "The program
could not be opened because the necessary
resources were not found."
Deadlock
 A process in operating systems uses different
resources in following way.
1) Requests a resource
2) Use the resource
2) Releases the resource
 Deadlocks are a set of blocked processes each
holding a resource and waiting to acquire a
resource held by another process.
Deadlock
Deadlock
 Deadlock can arise if following four conditions
hold simultaneously
Mutual Exclusion: One or more than one
resource are non-sharable (Only one process can
use at a time)
Hold and Wait: A process is holding at least one
resource and waiting for resources.
No Pre-emption: A resource cannot be taken
from a process unless the process releases the
resource.
Circular Wait: A set of processes are waiting for
Deadlock Modelling
 Resource-Allocation Graph
 In some cases deadlocks can be understood more
clearly through the use of Resource-Allocation
Graphs, having the following properties:
 A set of resource categories, { R1, R2, R3, . . ., RN },
which appear as square nodes on the graph. Dots inside
the resource nodes indicate specific instances of the
resource. ( E.g. two dots might represent two laser
printers. )
 A set of processes, { P1, P2, P3, . . ., PN }
 Request Edges - A set of directed arcs from Pi to Rj,
indicating that process Pi has requested Rj, and is
currently waiting for that resource to become available.
 Assignment Edges - A set of directed arcs from Rj to Pi
indicating that resource Rj has been allocated to process
Pi, and that Pi is currently holding resource Rj.
Deadlock Modelling
 Resource-Allocation Graph
Resource allocation graph
with a deadlock
Resource allocation graph with a
cycle but no deadlock
Deadlock Modelling
 certain conclusions can be drawn based on the
graph’s structure:
• If the graph has no cycles, then there is no
deadlock.
• If the graph does have a cycle, then there might
be deadlock (i.e., the existence of a cycle is
necessary but not sufficient):
o If the resource types involved in the cycle have
only one instance, then we have deadlock.
o In other words, the existence of a cycle becomes
necessary and sufficient when we only have one
instance per resource type in the cycle
Deadlock Detection and Recovery
 Deadlock Detection
 Deadlock detection is the process of actually
determining that a deadlock exists and identifying the
processes and resources involved in the deadlock.
 1. If resources have single instance:
In this case for Deadlock detection we can run an
algorithm to check for cycle in the Resource Allocation
Graph. Presence of cycle in the graph is the sufficient
condition for deadlock.
 In the next diagram, resource 1 and resource 2 have
single instances. There is a cycle R1–>P1–>R2–>P2.
So Deadlock is Confirmed.
Deadlock Detection and Recovery
Deadlock Detection and Recovery
 Recovery From Deadlock
1. Process Termination
 Two basic approaches, both of which recover
resources allocated to processes:
 Terminate all processes involved in the deadlock.
This definitely solves the deadlock, but at the
expense of terminating more processes than would
be absolutely necessary.
 Terminate processes one by one until the deadlock is
broken. This is more conservative, but requires doing
deadlock detection after each step.
Deadlock Detection and Recovery
 Recovery From Deadlock
 In the latter case i.e., terminating the processes one
by one, there are many factors that can go into
deciding which processes to terminate next:
 Process priorities.
 How long the process has been running, and how close it
is to finishing.
 How many and what type of resources is the process
holding. ( Are they easy to preempt and restore? )
 How many more resources does the process need to
complete.
 How many processes will need to be terminated
 Whether the process is interactive or batch.
 ( Whether or not the process has made non-restorable
changes to any resource. )
Deadlock Detection and Recovery
2. Resource Pre-emption
 When pre-empting resources to relieve deadlock, there
are three important issues to be addressed:
 Selecting a victim - Deciding which resources to pre-empt
from which processes involves many of the same decision
criteria outlined above.
 Rollback - Ideally one would like to roll back a pre-empted
process to a safe state prior to the point at which that resource
was originally allocated to the process. Unfortunately it can be
difficult or impossible to determine what such a safe state is,
and so the only safe rollback is to roll back all the way back to
the beginning. ( I.e. abort the process and make it start over. )
 Starvation - How do you guarantee that a process won't starve
because its resources are constantly being pre-empted? One
option would be to use a priority system, and increase the
priority of a process every time its resources get pre-empted.
Eventually it should get a high enough priority that it won't get
pre-empted any more.
Deadlock Avoidance
 This approach to the deadlock problem
anticipates deadlock before it actually occurs.
 we can try to avoid deadlocks by making use prior
knowledge about the usage of resources by
processes including resources available,
resources allocated, future requests and future
releases by processes.
 Most deadlock avoidance algorithms need every
process to tell in advance the maximum number
of resources of each type that it may need. Based
on all these info we may decide if a process
should wait for a resource or not, and thus avoid
Deadlock Avoidance
 If a system is already in a safe state, we can try to
stay away from an unsafe state and avoid deadlock.
 Deadlocks cannot be avoided in an unsafe state.
 A system can be considered to be in safe state if it is
not in a state of deadlock and can allocate resources
up to the maximum available.
 Deadlock avoidance algorithms try not to allocate
resources to a process if it will make the system in an
unsafe state.
 Since resource allocation is not done right away in
some cases, deadlock avoidance algorithms also
Deadlock Avoidance
1. Banker’s Algorithm
 Banker’s Algorithm is resource allocation and deadlock avoidance
algorithm which test all the request made by processes for
resources, it check for safe state, if after granting request system
remains in the safe state it allows the request and if their is no
safe state it don’t allow the request made by the process.
 Inputs to Banker’s Algorithm
1. Max need of resources by each process.
2. Currently allocated resources by each process.
3. Max free available resources in the system.
 Request will only be granted under below condition.
1. If request made by process is less than equal to max need to
that process.
 2. If request made by process is less than equal to freely available
resource in the system.
Deadlock Avoidance
2. Resource Allocation Graph is generally used to avoid
deadlocks.
 If there are no cycles in the resource allocation graph, then there
are no deadlocks.
 If there are cycles, there may be a deadlock.
 If there is only one instance of every resource, then a cycle
implies a deadlock.
 Vertices of the resource allocation graph are resources and
processes.
 The resource allocation graph has request edges and assignment
edges.
 An edge from a process to resource is a request edge and an
edge from a resource to process is an allocation edge.
 A calm edge denotes that a request may be made in future and is
represented as a dashed line.
 Based on calm edges we can see if there is a chance for a cycle
and then grant requests if the system will again be in a safe state.
Deadlock Avoidance
If R2 is allocated to p2 and if P1 request for R2,
there will be a deadlock.
Safe
State
Deadlock
State
Deadlock Prevention
 We can prevent Deadlock by eliminating any of
the four conditions due to which deadlock might
occur i.e., Mutual exclusion, Hold and Wait, No
Pre-emption and Circular wait.
Memory Management
 Memory is part of computer which stores data.
 The part of operating system that manages the
memory is called memory manager.
 The computer is able to change only data that is in
main memory (RAM). Therefore, every program we
execute and every file we access must be copied
from a storage device into main memory.
 The main task of memory manager is to keep track of
which parts of memory are used or which part is not
used, which location is to allocate for process and
when the process complete, how to de-allocate the
main memory etc.
 Another task is to swap between main memory and
Memory Management-Dynamic
Loading and Linking
 All the programs are loaded in the main memory for
execution. Sometimes complete program is loaded
into the memory, but some times a certain part or
routine of the program is loaded into the main
memory only when it is called by the program, this
mechanism is called Dynamic Loading, this
enhances the performance.
 Also, at times one program is dependent on some
other program. In such a case, rather than loading all
the dependent programs, CPU links the dependent
programs to the main executing program when its
required. This mechanism is known as Dynamic
Linking.
Memory Management- Paging and
Swapping
In computer operating systems, paging is
a memory management scheme by which a
computer stores and retrieves data from secondary
storage for use in main memory. In this scheme, the
operating system retrieves data from secondary
storage in same-size blocks called
pages.
Swapping: A process needs to be in memory for
execution. But sometimes there is not enough main
memory to hold all the currently active processes in
a timesharing system. So, excess process are kept
on disk and brought in to run dynamically.
Swapping is the process of bringing in each
Memory Management- Paging and
Swapping
Basic Memory Management
Monoprogramming without Swapping
or Paging
Mainframes and Minicomputers PDAs and Embedded
Systems
PCs and MS-
DOS
Three simple ways of organizing memory
- an operating system with one user process
Monoprogramming without Swapping
or Paging
 One process in memory at all times.
 Process has entire memory available to it.
 Only one process at a time can be running.
 Not practical for multiprogramming.
 Used on older OS such as MS-DOS.
 As soon as the user types a command, the operating
system copies the requested program from disk to
memory and executes it.
 When the process finishes, the operating system
displays a prompt character and waits for a new user
command.
 When the operating system receives the command, it
loads a new program into memory, overwriting the
first one.
MULTIPROGRAMMING WITH
FIXED PARTITION
 In a multiprogramming environment, several
programs reside in primary memory at a time and
the CPU passes its control rapidly between these
programs.
 One way to support multiprogramming is to divide
the main memory into several partitions each of
which is allocated to a single process.
 Depending upon how and when partitions are
created, there may be two types of memory
partitioning:
(1) Static
MULTIPROGRAMMING WITH
FIXED PARTITION
Static partitioning
Division of memory into number of partitions and
its size is made in the beginning (during the
system generation process) and remain fixed
thereafter.
Dynamic partitioning
The size and the number of partitions are decided
during the run time by the operating system
MULTIPROGRAMMING WITH
FIXED PARTITION
Memory management schemes based on
contiguous allocation
1. The basic approach here is to divide memory
into several fixed size partitions where each
partition will accommodate only one program for
execution. The number of programs residing in
memory will be bound by the number of partitions.
When a program terminates, that partition is free
for another program waiting in a queue.
MULTIPROGRAMMING WITH
FIXED PARTITION
2. Create an input queue to place processes in the
smallest partition that is large enough to hold the
process.
• Problems: – Some memory partitions may have
processes waiting while other partitions are unused
and also the space in the partition, which is larger
than the process memory requirement, is not used -
thus it is wasted.
• May be used for batch systems, where memory
requirements can be modelled.
• Not good for interactive systems that often have
dynamic memory requirements.
MULTIPROGRAMMING WITH
FIXED PARTITION
Relocation and Protection
 As soon as we introduce multiprogramming we have two problems that we need
to address.
 Relocation : When a program is run it does not know in advance what location it
will be loaded at. Therefore, the program cannot simply generate static addresses
(e.g. from jump instructions). Instead, they must be made relative to where the
program has been loaded.
 Protection : Once you can have two programs in memory at the same time there
is a danger that one program can write to the address space of another program.
This is obviously dangerous and should be avoided.
 In order to cater for relocation we could make the loader modify all the relevant
addresses as the binary file is loaded. The OS/360 worked in this way but the
scheme suffers from the following problems
 · The program cannot be moved, after it has been loaded without going through
the same process.
· Using this scheme does not help the protection problem as the program can still
generate illegal addresses (maybe by using absolute addressing).
· The program needs to have some sort of map that tells the loader which
addresses need to be modified.
Relocation and Protection
 A solution, which solves both the relocation and
protection problem is to equip the machine with two
registers called the base and limit registers.
 The base register stores the start address of the
partition and the limit register holds the length of the
partition. Any address that is generated by the
program has the base register added to it. In addition,
all addresses are checked to ensure they are within
the range of the partition.
 An additional benefit of this scheme is that if a
program is moved within memory, only its base
register needs to be amended. This is obviously a lot
Virtual Memory
 Virtual memory is a memory
management capability of an OS that allows a
computer to address more memory than the
amount physically installed on the system. This
extra memory is actually called virtual
memory and it is a section of a hard disk that's set
up to emulate the computer's RAM.
 large programs can store themselves in form of
pages in virtual memory while their execution and
only the required pages or portions of processes
are loaded into the main memory.
Virtual Memory
 In real scenarios, most processes never need all
their pages at once, for following reasons :
(a) Error handling code is not needed unless that
specific error occurs, some of which are quite rare.
(b) Arrays are often over-sized for worst-case
scenarios, and only a small fraction of the arrays
are actually used in practice.
(c) Certain features of certain programs are rarely
used.
Virtual Memory
 Benefits of having Virtual Memory :
 Large programs can be written, as virtual space
available is huge compared to physical memory.
 Less I/O required, leads to faster and easy swapping
of processes.
 More physical memory available, as programs are
stored on virtual memory, so they occupy very less
space on actual physical memory.
 Each user program could take less physical memory,
more programs could be run the same time, with a
corresponding increase in CPU utilization and
Virtual Memory
Demand paging
 The basic idea behind demand paging is that when a
process is swapped in, its pages are not swapped in
all at once. Rather they are swapped in only when the
process needs them (on demand).
 There is a Memory Management Unit in CPU whose
job is to translate virtual addresses into physical
addresses.
 The relation between virtual addresses and
physical
memory addresses is given by page table
Virtual Memory
Virtual Memory-Demand Paging
Virtual Memory - Page Table
 A page table is the data structure used by a virtual
memory system in a computer operating system to
store the mapping between virtual
addresses and physical addresses.
 When a process requests access to data in its
memory, it is the responsibility of the operating
system to map the virtual address provided by the
process to the physical address of the actual
memory where that data is stored.
 Each mapping is known as a page table
entry (PTE).
Virtual Memory
Page Replacement Algorithms
 PRA are needed to decide which page needed to
be replaced when new page comes in.
 Whenever a new page is referred and not present
in memory, page fault occurs and Operating
System replaces one of the existing pages with
newly needed page.
 Page Fault
A page fault is a type of interrupt, raised by the
hardware when a running program accesses a
memory page that is mapped into the virtual
address space, but not loaded in physical memory.
Page Replacement Algorithms
 First In First Out
This is the simplest page replacement algorithm. In this algorithm,
operating system keeps track of all pages in the memory in a
queue, oldest page is in the front of the queue. When a page
needs to be replaced page in the front of the queue is selected for
removal.
 For example, consider page reference string 1, 3, 0, 3, 5, 6 and 3
page slots.
 Initially all slots are empty, so when 1, 3, 0 came they are allocated
to the empty slots —> 3 Page Faults.
when 3 comes, it is already in memory so —> 0 Page Faults.
Then 5 comes, it is not available in memory so it replaces the
oldest page slot i.e 1. —>1 Page Fault.
Finally 6 comes, it is also not available in memory so it replaces
the oldest page slot i.e 3 —>1 Page Fault.
 So, the fault rate will be 5/6=0.83
Page Replacement Algorithms
 Belady’s anomaly
Belady’s anomaly proves that it is possible to have
more page faults when increasing the number of
page frames while using the First in First Out
(FIFO) page replacement algorithm. For example,
if we consider the reference string
0 1 2 3 0 1 4 0 1 2 3 4
and 3 slots, we get 9 total page faults, but if we
increase slots to 4, we get 10 page faults.
Page Replacement Algorithms
Optimal Replacement Algorithm
Page Replacement Algorithms
Page Replacement Algorithms
Least Recently Used (LRU) algorithm
 Page which has not been used for the longest time
in main memory is the one which will be selected
for replacement.
 Easy to implement, keep a list, replace pages by
looking back into time.
Page Replacement Algorithms
LRU Example
Page Replacement Algorithms
The Not Recently Used Page Replacement
Algorithm
 In order to allow the operating system to collect
useful page usage statistics, most computers with
virtual memory have two status bits, R and M,
associated with each page.
 R is set whenever the page is referenced (read or
written). M is set when the page is written to (i.e.,
modified).
 The bits are contained in each page table entry.
Page Replacement Algorithms
The Not Recently Used Page Replacement
Algorithm
 When a page fault occurs, the operating system
inspects all the pages and divides them into four
categories based on the current values of their R
and M bits:
 Class 0: not referenced, not modified.
 Class 1: not referenced, modified.
 Class 2: referenced, not modified.
 Class 3: referenced, modified.
Page Replacement Algorithms
The Not Recently Used Page Replacement
Algorithm
 Although class 1 pages seem, at first glance,
impossible, they occur when a class 3 page has its R
bit cleared by a clock interrupt.
 Clock interrupts do not clear the M bit because this
information is needed to know whether the page has
to be rewritten to disk or not.
 Clearing R but not M leads to a class 1 page.
 Implicit in this algorithm is the idea that it is better to
remove a modified page that has not been referenced
in at least one clock tick (typically about 20 msec) than
a clean page that is in heavy use.
Page Replacement Algorithms
The Second-Chance Page Replacement
Algorithm
 A simple modification to FIFO
 Avoids the problem of throwing out a heavily used
page is to inspect the R bit of the oldest page.
 If it is 0, the page is both old and unused, so it is
replaced immediately.
 If the R bit is 1, the bit is cleared, the page is put
onto the end of the list of pages
 its load time is updated as though it had just
Page Replacement Algorithms
0 3 7 8 12 14 15 17
A B C D E F G H
3 7 8 12 14 15 17 20
B C D E F G H A
Page Loaded
First
Most Recently
Loaded Page
A is treated like a
newly loaded
page
Page Replacement Algorithms
 What second chance is looking for is an old page that
has not been referenced in the most recent clock
interval.
 If all the pages have been referenced, second chance
degenerates into pure FIFO.
 Imagine that all the pages have their R bits set.
 One by one, the operating system moves the pages to
the end of the list, clearing the R bit each time it
appends a page to the end of the list.
 Eventually, it comes back to page A, which now has its
R bit cleared. At this point A is evicted.
Page Replacement Algorithms
The Clock Page Replacement Algorithm
 Second chance algorithm, is unnecessarily inefficient
because it is constantly moving pages around on its list.
 A better approach is to keep all the page frames on a
circular list in the form of a clock.
 The hand points to the oldest page.
 When a page fault occurs, the page being pointed to by
the hand is inspected.
 If its R bit is 0, the page is evicted, the new page is
inserted into the clock in its place, and the hand is
advanced one position.
 If R is 1, it is cleared and the hand is advanced to the next
page.
Page Replacement Algorithms
A
G
D
J
B
C
L
L
K
I
H F
E
The Clock Page Replacement Algorithm
Page Replacement Algorithms
Working Set Page Replacement Algorithm
 During any phase of execution, the process
references only a relatively small fraction of its pages.
 The set of pages that a process is currently using is
called its working set.
 If the entire working set is in memory, the process will
run without causing many faults.
 But, if the available memory is too small to hold the
entire working set, the process will cause many page
faults and run slowly since executing an instruction
takes a few nanoseconds and reading in a page from
the disk typically takes 10 milliseconds.
Page Replacement Algorithms
 A program causing page faults every few instructions
is said to be thrashing.
 In a multiprogramming system, processes are
frequently moved to disk (i.e., all their pages are
removed from memory) to let other processes have a
turn at the CPU.
 What to do when a process is brought back in again?
 The process will just cause page faults until its
working set has been loaded. The problem is that
having 20, 100, or even 1000 page faults every time a
process is loaded is slow, and it also wastes
considerable CPU time, since it takes the operating
system a few milliseconds of CPU time to process a
Page Replacement Algorithms
 Therefore, many paging systems try to keep track
of each process' working set and make sure that it
is in memory before letting the process run.
 This approach is called the working set model.
 At any instant of time, t, there exists a set k
consisting of all the pages used by the most recent
memory references. This set, w(k, t), is the
working set.
 Current Virtual Time
 how much CPU time this process has seen.
Page Replacement Algorithms
 Implementation
 On each timer interrupt, look at each page Was it
referenced?
 Yes: Make a note of Current Virtual Time
 If a page has not been used in the last T msec, It
is not in the working set!
 Evict it;
Page Replacement Algorithms
Design issues for Paging systems
 Most modern systems use demand paging, that is,
pages are loaded only on demand, not in advance.
 Demand paging means that when a process
starts, lots of page faults will occur. However due
to locality of reference, after a while, the process
has most of the pages it needs and settles down to
run with relatively few page faults.
Design issues for Paging systems
 The resident set of a process is the portion of it that is
currently in memory (the number of physical frames it
occupies). The resident set is a runtime property of a
process (do not confuse it with the working set).
 The resident set management refers to deciding how
much memory to allocate to a particular process.
• Small resident set: page faults increase and cause
thrashing, i.e., a program causing page faults every
few instructions. When thrashing occurs, the system is
busy doing I/O rather than working on useful things.
• Large resident set: due to locality, does not
significantly improve page fault rates, wasting
memory.
 We want to allocate enough frames to a process, but
Design issues for Paging systems
1. Local versus Global Allocation
 In the next figure, three processes, A, B, and C, make
up the set of runnable processes.
 Suppose A gets a page fault.
 Should the page replacement algorithm try to find the
least recently used page considering only the six
pages currently allocated to A, or should it consider all
the pages in memory?
 If it looks only at A’s pages, the page with the lowest
age value is A5, so we get the situation of Fig. (B).
 On the other hand, if the page with the lowest age
value is removed without regard to whose page it is,
page B3 will be chosen and we will get the situation of
Fig. (C).
Design issues for Paging systems
 The algorithm of Fig. B is said to be a local page
replacement algorithm, whereas that of Fig. C is
said to be a global algorithm.
 In general, global algorithms work better,
especially when the working set size can vary a lot
over the lifetime of a process.
 If a local algorithm is used and the working set
grows, thrashing will result, even if there are a
sufficient number of free page frames. If the
working set shrinks, local algorithms waste
memory.
Design issues for Paging systems
(A) (B) (C)
A0
A1
A2
A3
A4
A5
B0
B1
B2
B3
B4
B5
B6
C1
10
7
5
4
6
3
9
4
6
2
5
6
12
3
A0
A1
A2
A3
A4
A6
B0
B1
B2
B3
B4
B5
B6
C1
A0
A1
A2
A3
A4
A6
B0
B1
B2
A6
B4
B5
B6
C1
Design issues for Paging systems
 One way is to periodically determine the number
of running processes and allocate each process
an equal share.
 But, it makes little sense to give equal shares of
the memory to a 10-KB process and a 300-KB
process.
 Instead, pages can be allocated in proportion to
each process’ total size.
 Eg: with a 300-KB process getting 30 times the
allotment of a 10-KB process.
 It is probably wise to give each process some
minimum number, so that it can run no matter how
Design issues for Paging systems
 If a global algorithm is used, it may be possible to
start each process up with some number of pages
proportional to the process’ size, but the allocation
has to be updated dynamically as the processes
run.
 One way to manage the allocation is to use the
PFF (Page Fault Frequency) algorithm. It tells
when to increase or decrease a process’ page
allocation but says nothing about which page to
replace on a fault.
 It just controls the size of the allocation set.
Design issues for Paging systems
 If the page fault rate of a process is unacceptably
high, the faulting process is given more page
frames to reduce the fault rate.
 If the page fault rate of a process is so low that we
can assume the process has too much memory. In
this case, page frames may be taken away from it.
 Thus, PFF tries to keep the paging rate for each
process within acceptable bounds.
Design issues for Paging systems
2. Load Control
 Even with the best page replacement algorithm and
optimal global allocation of page frames to processes,
it can happen that the system thrashes.
 In fact, whenever the combined working sets of all
processes exceed the capacity of memory, thrashing
can be expected.
 One symptom of this situation is that the PFF
algorithm indicates that some processes need more
memory but no processes need less memory.
 In this case, there is no way to give more memory to
those processes needing it without hurting some other
processes.
 The only real solution is to temporarily get rid of some
Design issues for Paging systems
 For example, one process can be swapped to disk
and its page frames divided up among other
processes that are thrashing.
 If the thrashing stops, the system can run for a
while this way. If it does not stop, another process
has to be swapped out, and so on, until the
thrashing stops.
 Swapping processes out to relieve the load on
memory is reminiscent of two level scheduling, in
which some processes are put on disk and a
short-term scheduler is used to schedule the
Design issues for Paging systems
3. Page Size
Large or Small?
Two arguments support for a smaller page size:
(a) If a randomly data does not fill an integral
number of pages. On the average, half of the final
pages will be empty. The extra space in that page
is wasted.
This wastage is called internal fragmentation.
With n segments in memory and a page size of p
bytes, np/2 bytes will be wasted on internal
Design issues for Paging systems
(b) Less wastage of memory space
 With a 32-KB page size, the program must be
allocated 32 KB all the time. With a 16-KB page
size, it needs only 16 KB. With a page size of 4 KB
or smaller, it requires only 4 KB at any instant.
 So in general, a large page size will cause more
wasted space to be in memory than a small page
size.
Design issues for Paging systems
Arguments dissupportive of smaller page sizes:
 Small pages mean that programs will need many
pages, and thus a large page table.
 Eg: A 32-KB program needs only four 8-KB pages, but
64
512-byte pages.
 Transfers to and from the disk are generally a page at
a time, with most of the time being for the seek and
rotational delay, so that transferring a small page
takes almost as much time as transferring a large
page.
Design issues for Paging systems
 Also, small pages use up much valuable space in
the page table.
 To balance all these trade-offs, operating systems
sometimes use different page sizes for different
parts of the system.
 For instance, large pages for the kernel and
smaller ones for user processes.
Design issues for Paging systems
4. Separate Instruction and Data Spaces
 Most computers have a single address space that
holds both programs and data.
 If this address space is large enough, everything
works
fine. However, if it’s too small, it becomes a tough
task for the programmers to fit everything into the
address space.
Design issues for Paging systems
 One solution, pioneered is to have separate
address
spaces for instructions (program text) and data,
called I-space and D-space, respectively.
 Each address space runs from 0 to some
maximum, typically 216-1 or 232 − 1.
 The linker must know when separate I and D-
spaces are being used, because when they are,
the data are relocated to virtual address 0 instead
of starting after the program.
Design issues for Paging systems
Single Address Space
232
0
Dat
a
Progra
m
0
232
Program
I Space D Space
Data
Unuse
d
Space
Design issues for Paging systems
 In a computer with this kind of design, both address
spaces can be paged, independently from one
another.
 Each one has its own page table, with its own
mapping of virtual pages to physical page frames.
 When the hardware wants to fetch an instruction, it
knows that it must use I-space and the I-space page
table.
 Similarly, data must go through the D-space page
table.
 Other than this distinction, having separate I- and D-
Design issues for Paging systems
5. Shared Pages
 In a large multiprogramming system, it is common for
several users to be running the same program at the
same time.
 It is clearly more efficient to share the pages.
 One problem is that not all pages are sharable.
 such as program text, can be shared, but for data
pages, sharing is more complicated.
 Suppose that processes A and B are both running the
editor and sharing its pages.
 If the scheduler decides to remove A from memory,
evicting all its pages and filling the empty page frames
with some other program will cause B to generate a
large number of page faults to bring them back in
Design issues for Paging systems
 Each of these processes is given its own page table and
have both of them point to the same set of pages. Thus no
copying of pages is done.
 However, all the data pages are mapped into both processes
as READ ONLY.
 As long as both processes just read their data, without
modifying it, this situation can continue.
 As soon as either process updates a memory word, the
violation of the read-only protection causes a trap to the
operating system.
 A copy is then made of the offending page so that each
process now has its own private copy.
 Both copies are now set to READ/WRITE, so subsequent
writes to either copy proceed without trapping.
 This approach is called copy on write.
Design issues for Paging systems
6. Shared Libraries
 In modern systems, there are many large libraries
used by many processes, for example, multiple I/O
and graphics libraries.
 Statically binding all these libraries to every
executable program on the disk would make them
even more bloated than they already are.
 Instead, a common technique is to use shared
libraries (which are called DLLs or Dynamic
Link Libraries on Windows).
Design issues for Paging systems
 When a program is linked with shared libraries ,
instead of including the actual function called, the
linker includes a small stub routine that binds to the
called function at run time.
 Depending on the system and the configuration
details, shared libraries are loaded either when the
program is loaded or when functions in them are
called for the first time.
 If another program has already loaded the shared
library, there is no need to load it again.
 When a shared library is loaded or used, the entire
library is not read into memory in a single blow.
 It is paged in, page by page, as needed, so functions
that are not called will not be brought into RAM.
Design issues for Paging systems
7. Mapped Files
 A process can issue a system call to map a file onto a
portion of its virtual address space.
 In most implementations, no pages are brought in at the
time of the mapping, they are demand paged in one page
at a time, using the disk file.
 Mapped files provide an alternative model for I/O. Instead,
of doing reads and writes, the file can be accessed as a
big character array in memory.
 If two or more processes map onto the same file at the
same time, they can communicate over shared memory.
 Writes done by one process to the shared memory are
immediately visible when the other one reads from the part
of its virtual address space mapped onto the file.
Design issues for Paging systems
8. Cleaning Policy
 Paging works best when there is an abundant supply
of free page frames that can be claimed as page faults
occur.
 If every page frame is full, before a new page can be
brought in, an old page must first be written to disk.
 To ensure a plentiful supply of free page frames,
paging systems generally have a background process,
called the paging daemon, that sleeps most of the
time but is awakened periodically to inspect the state
of memory.
Design issues for Paging systems
 Keeping a supply of page frames around yields
better performance than using all of memory and
then trying to find a frame at the moment it is
needed.
 One way to implement this cleaning policy is with
a two-handed clock.
 The front hand is controlled by the paging
daemon. When it points to a dirty page, that page
is written back to disk and the front hand is
advanced.
 When it points to a clean page, it is just advanced.
 The back hand is used for page replacement, as in
Design issues for Paging systems
9. Virtual Memory Interface
 in some advanced systems, programmers have some
control over the memory map and can use it in non
traditional ways to enhance program behaviour.
 1. If programmers can name regions of their memory, it
may be possible for one process to give another process
the name of a memory region so that process can also
map it in.
 2. Normally, when messages are passed, the data are
copied from one address space to another, at considerable
cost.
 If processes can control their page map, a message can
be passed by having the sending process unmap the page
containing the message, and the receiving process
mapping it in.
Implementation issues for Paging
systems
1. Operating System Involvement with Paging
 There are four times when the operating system
has paging-related work to do:
(a) process creation time
(b) process execution time
(c) page fault time
(d) process termination time
Implementation issues for Paging
systems
(a) Process creation time
 When a new process is created in a paging system,
the operating system has to determine how large the
program and data will be (initially) and create a page
table for them. Space has to be allocated in memory
for the page table and it has to be initialized.
 In addition, space has to be allocated in the swap area
on disk so that when a page is swapped out, it has
somewhere to go.
 The swap area also has to be initialized with program
text and data.
Implementation issues for Paging
systems
(b) process execution time
 When a process is scheduled for execution, the
MMU has to be reset for the new process and the
TLB flushed, to get rid of traces of the previously
executing process.
 The new process’ page table has to be made
current.
 Optionally, some or all of the process’ pages can
be brought into memory to reduce the number of
page faults initially.
Implementation issues for Paging
systems
(c) page fault time
 When a page fault occurs, the operating system
has to read out hardware registers to determine
which virtual address caused the fault.
 From this information, it must compute which page
is needed and locate that page on disk.
 It must then find an available page frame in which
to put the new page, evicting some old page if
needed.
 Finally, it must back up the program counter to
have it point to the faulting instruction and let that
instruction execute again.
Implementation issues for Paging
systems
(d) process termination time
 When a process exits, the operating system must
release its page table, its pages, and the disk
space that the pages occupy when they are on
disk.
 If some of the pages are shared with other
processes, the pages in memory and on disk can
be released only when the last process using them
has terminated.
Implementation issues for Paging
systems
2. Page Fault Handling
sequence of events on a page fault.
1. Save the program counter on the stack. On most
machines, some information about the state of the
current instruction is saved in special CPU registers.
2. The operating system discovers that a page fault has
occurred, and tries to discover which virtual page is
needed.
3. Once the virtual address that caused the fault is
known, the system checks to see if this address is
valid, the system checks to see if a page frame is free.
Implementation issues for Paging
systems
4. If the page frame selected is dirty, the page is
scheduled for transfer to the disk, and a context switch
takes place, suspending the faulting process and
letting another one run until the disk transfer has
completed.
In any event, the frame is marked as busy to prevent it
from being used for another purpose.
5. As soon as the page frame is clean, the operating
system looks up the disk address where the needed
page is, and schedules a disk operation to bring it in.
6. When the disk interrupt indicates that the page has
arrived, the page tables are updated to reflect its
position, and the frame is marked as being in the
Implementation issues for Paging
systems
7. The faulting instruction is backed up to the state it
had when it began and the program counter is
reset to point to that instruction.
8. The faulting process is scheduled, and the
operating system returns to the routine that called
it.
9. This routine reloads the registers and other state
information and returns to user space to continue
execution, as if no fault had occurred.
Implementation issues for Paging
systems
3. Instruction Backup
 When a program references a page that is not in memory,
the instruction causing the fault is stopped partway through
and a trap to the operating system occurs.
 Consider a CPU that has instructions with two addresses,
such as the Motorola 680x0, widely used in embedded
systems.
 The instruction MOV.L #6(A1),2(A0), is 6 bytes, In order to
restart the instruction, the operating system must
determine where the first byte of the instruction is.
 we have an instruction starting at address 1000 that
makes three memory references: the instruction word and
two offsets for the operands.
Implementation issues for Paging
systems
MOVE
6
2
16 bits
1000
1002
1004
Opcode
First
operand
Second
operand
• Depending on which of these three memory references
caused the
page fault, the program counter might be 1000, 1002, or 1004
at
the time of the fault.
• It is frequently impossible for the operating system to
determine
Implementation issues for Paging
systems
 Some 680x0 addressing modes use auto-
incrementing, which means that a side effect of
executing the instruction is to increment one register.
 Depending on the details of the microcode, the
increment may be done before the memory reference,
in which case the operating system must decrement
the register in software before restarting the
instruction.
 Or, the auto-increment may be done after the memory
reference, in which case it will not have been done at
the time of the trap and must not be undone by the
operating
system.
 Auto-decrement mode also exists and causes a
Implementation issues for Paging
systems
 Solution: a hidden internal register into which the
program counter is copied just before each
instruction is executed.
 Or a second register telling which registers have
already been auto-incremented or auto-
decremented, and by how much.
Implementation issues for Paging
systems
4. Locking Pages in Memory
 Consider a process that has just issued a system call to read from
some file into a buffer within its address space.
 While waiting for the I/O to complete, the process is suspended
and another process is allowed to run.
 This other process gets a page fault.
 If the paging algorithm is global, there is a chance that the page
containing the I/O buffer will be chosen to be removed from
memory.
 Removing it will cause part of the data to be written in the buffer
where they belong, and part of the data to be written over the just-
loaded page.
 One solution to this problem is to lock pages engaged in I/O in
memory so that they will not be removed.
 Locking a page is often called pinning it in memory.
 Another solution is to do all I/O to kernel buffers and then copy the
data to user pages later.
Implementation issues for Paging
systems
5. Backing Store
 In page replacement algorithms, a page is selected for
removal. Where on the disk it is put when it is paged out.
 The simplest algorithm for allocating page space on the
disk is to have a special swap partition on the disk.
 When the system is booted, this swap partition is empty
and is represented in memory as a single entry giving its
origin and size.
 When the first process is started, a chunk of the partition
area the size of the first process is reserved and the
remaining area reduced by that amount.
 As new processes are started, they are assigned chunks
of the swap partition equal in size to their core images.
 As they finish, their disk space is freed.
Implementation issues for Paging
systems
 Calculating the address to write a page: add the
offset of the page within the virtual address space
to the start of the swap area.
 problem: processes can increase in size after
starting. the program text is usually fixed, the data
area can sometimes grow and the stack can
always grow.
 It may be better to reserve separate swap areas
for the text, data, and stack and allow each of
these areas to consist of more than one chunk on
the disk.
Implementation issues for Paging
systems
 Dynamic location: allocate nothing in advance and
allocate disk space for each page when it is swapped out
and de-allocate it when it is swapped back in.
 The disadvantage is that a disk address is needed in
memory to keep track of each page on disk.
 There must be a table per process telling for each page on
disk where it is.
 Executable File: Since the program text of every process
came from some (executable) file in the file system, the
executable file can be used as the swap area.
 Better yet, since the program text is generally read only,
when memory is tight and program pages have to be
evicted from memory, they are just discarded and read in
again from the executable file when needed.
 Shared libraries can also work this way.
Implementation issues for Paging
systems
Implementation issues for Paging
systems
6. Separation of Policy and Mechanism
Here the memory management system is divided into
three parts:
1. A low-level MMU handler.
2. A page fault handler that is part of the kernel.
3. An external pager running in user space.
 MMU works are encapsulated in the MMU handler,
which is machine-dependent code and has to be
rewritten for each new platform the operating system
is ported to.
 The page-fault handler is machine-independent code
and contains most of the mechanism for paging.
 The policy is largely determined by the external pager,
which runs as a user process.
Implementation issues for Paging
systems
 When a process starts up, the external pager is
notified in order to set up the process’ page map and
allocate the necessary backing store on the disk if
need be.
 As the process runs, it may map new objects into its
address space, so the external pager is once again
notified.
 If page fault: The fault handler figures out which virtual
page is needed and sends a message to the external
pager.
 The external pager then reads the needed page in
from the disk and copies it to a portion of its own
address space.
 Then it tells the fault handler where the page is.
Implementation issues for Paging
systems
Implementation issues for Paging
systems
 Issue: where to place the page replacement
algorithm.
1. If in the external pager
it does not have access to the R and M bits of all
the pages. These bits play a role in many of the
paging algorithms. Thus, either some mechanism
is needed to pass this information up to the
external pager.
2. If in the kernel
the fault handler tells the external pager which
page it has selected for eviction and provides the
Implementation issues for Paging
systems
Advantage: more modular code and greater
flexibility.
Disadvantage: extra overhead of crossing the
user-kernel boundary several times and the
overhead of the various messages being sent
between the pieces of the system.
Segmentation
 The virtual memory discussed so far is one-
dimensional because the virtual addresses go from 0
to some maximum address, one address after
another.
 For example, a compiler has many tables that are built
up as compilation proceeds:
1. The source text being saved for the printed listing.
2. The symbol table, containing the names and
attributes of variables.
3. The table containing all the integer and floating-
point constants used.
4. The parse tree, containing the syntactic analysis of
the program.
5. The stack used for procedure calls within the
Segmentation
Call Stack
Parse Tree
Constant Table
Source Text
Symbol Table
Virtual Address Space
Address space
allocated to the Parse
tree
Free
Symbol table has
bumped into the source
Segmentation
 Consider what happens if a program has a much
larger than usual number of variables but a normal
amount of everything else.
 The chunk of address space allocated for the symbol
table may fill up, but there may be lots of room in the
other tables.
 What is needed is a way of freeing the programmer
from having to manage the expanding and contracting
tables. Solution: Segments
 Each segment consists of a linear sequence of
addresses, starting at 0 and going up to some
maximum value.
 Different segments may, and usually do, have different
lengths. Moreover, segment lengths may change
Segmentation
 To specify an address in this segmented or two-
dimensional memory, the program must supply a
two-part address, a segment number, and an
address within the segment.
 Modern workstations that run advanced window
systems often have extremely large graphical
libraries compiled
into nearly every program.
 In a segmented system, the graphical library can
be put
in a segment and shared by multiple processes,
eliminating the need for having it in every process’
Segmentation
 Since each segment forms a logical entity that
programmers know about, such as a procedure, or
an array, different segments can have different
kinds of protection.
 Eg: A procedure segment can be specified as
execute only, prohibiting attempts to read from or
store into it.
 A floating-point array can be specified as
read/write
but not execute.
 Such protection is helpful in catching bugs.
Segmentation
Need the programmer be
aware
that this technique is being
used?
No Yes
How many linear address
spaces are there?
1 Many
Can the total address
space
exceed the size of physical
memory?
Yes Yes
Can procedures and data
be
distinguished and
separately
protected?
No Yes
Can tables whose size No Yes
Consideration Paging Segmentation
Segmentation
Implementation of Pure Segmentation
example:
physical memory initially containing five segments.
if segment 1 is evicted and segment 7, which is smaller, is
put in its place.
 Between segment 7 and segment 2 is an unused area—
that is, a hole. Then segment 4 is replaced by segment 5,
and segment 3 is replaced by segment 6.
 After the system has been running for a while, memory will
be divided up into a number of chunks, some containing
segments and some containing holes.
 This phenomenon, called checkerboarding or external
fragmentation, wastes memory in the holes.
 It can be dealt with by compaction
Segmentation
Segmentation
Segmentation with Paging: MULTICS
 If the segments are large, it may be inconvenient, to keep
them in main memory in their entirety.
 Solution: paging, so that only those pages of a segment
that are actually needed have to be around.
 MULTICS operating system ran on the Honeywell 6000
machines.
 provided each program with a virtual memory of up to 218
segments, each of which was up to 65,536 (36-bit) words
long.
 To implement this, the MULTICS designers chose to page
each segment , combining the advantages of paging
(uniform page size and not having to keep the whole
segment in memory if only part of it was being used) with
Segmentation
 Each MULTICS program had a segment table,
with one descriptor per segment.
 A segment descriptor contained an indication of
whether the segment was in main memory or not.
 If the segment was in memory, its descriptor
contained an 18-bit pointer to its page table.
 The normal page size was 1024 words.
 An address in MULTICS consisted of two parts:
the segment number and the address within the
segment.
Segmentation
When a memory reference occurred, the following algorithm was
carried out.
1. The segment number was used to find the segment
descriptor.
2. A check was made to see if the segment’s page table was in
memory. If it was, it was located. If it was not, a segment fault
occurred. If there was a protection violation, a trap occurred.
3. The page table entry for the requested virtual page was
examined.
4. If the page was not in memory, a page fault was triggered. If
it
was in memory, the main-memory address of the start of the
page was extracted from the page table entry.
5. The offset was added to the page origin to give the main
memory address where the word was located.
6. The read or store finally took place.
Segmentation
Segment number
Page
number
Offset within the page
18
6 10
Address within the segment
Segmentation
 If the preceding algorithm were actually carried out by the
operating system on every instruction, programs would not
run very fast.
 the MULTICS hardware contained a 16-word high-speed
TLB that could search all its entries in parallel for a given
key.
 This was the first system to have a TLB, something used
in all modern architectures.
 When an address was presented to the computer, the
addressing hardware first checked to see if the virtual
address was in the TLB.
 If so, it got the page frame number directly from the TLB
and formed the actual address of the referenced word
without having to look in the descriptor segment or page
table.

More Related Content

What's hot

deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidance
wahab13
 
Packet Switching and X.25 Protocol
Packet Switching and X.25 ProtocolPacket Switching and X.25 Protocol
Packet Switching and X.25 Protocol
Miles Kevin Galario
 

What's hot (20)

Operating System - Monitors (Presentation)
Operating System - Monitors (Presentation)Operating System - Monitors (Presentation)
Operating System - Monitors (Presentation)
 
ELEMENTS OF TRANSPORT PROTOCOL
ELEMENTS OF TRANSPORT PROTOCOLELEMENTS OF TRANSPORT PROTOCOL
ELEMENTS OF TRANSPORT PROTOCOL
 
Congestion control
Congestion controlCongestion control
Congestion control
 
Multi processor scheduling
Multi  processor schedulingMulti  processor scheduling
Multi processor scheduling
 
Operating Systems: Virtual Memory
Operating Systems: Virtual MemoryOperating Systems: Virtual Memory
Operating Systems: Virtual Memory
 
Csma
CsmaCsma
Csma
 
Deadlock ppt
Deadlock ppt Deadlock ppt
Deadlock ppt
 
deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidance
 
Critical Section in Operating System
Critical Section in Operating SystemCritical Section in Operating System
Critical Section in Operating System
 
Methods for handling deadlocks
Methods for handling deadlocksMethods for handling deadlocks
Methods for handling deadlocks
 
Packet Switching and X.25 Protocol
Packet Switching and X.25 ProtocolPacket Switching and X.25 Protocol
Packet Switching and X.25 Protocol
 
Scheduling algorithms
Scheduling algorithmsScheduling algorithms
Scheduling algorithms
 
Linguistic hedges in fuzzy logic
Linguistic hedges in fuzzy logicLinguistic hedges in fuzzy logic
Linguistic hedges in fuzzy logic
 
Mutual exclusion and sync
Mutual exclusion and syncMutual exclusion and sync
Mutual exclusion and sync
 
Reference models in Networks: OSI & TCP/IP
Reference models in Networks: OSI & TCP/IPReference models in Networks: OSI & TCP/IP
Reference models in Networks: OSI & TCP/IP
 
Leaky Bucket & Tocken Bucket - Traffic shaping
Leaky Bucket & Tocken Bucket - Traffic shapingLeaky Bucket & Tocken Bucket - Traffic shaping
Leaky Bucket & Tocken Bucket - Traffic shaping
 
Peterson Critical Section Problem Solution
Peterson Critical Section Problem SolutionPeterson Critical Section Problem Solution
Peterson Critical Section Problem Solution
 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"
 
Operating system Dead lock
Operating system Dead lockOperating system Dead lock
Operating system Dead lock
 
Presentation Routing algorithm
Presentation Routing algorithmPresentation Routing algorithm
Presentation Routing algorithm
 

Similar to Deadlock and memory management -- Operating System

Deadlock in distribute system by saeed siddik
Deadlock in distribute system by saeed siddikDeadlock in distribute system by saeed siddik
Deadlock in distribute system by saeed siddik
Saeed Siddik
 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlocks
tech2click
 
Os presentation final.pptxjjjjjdakajwsjjdhdfjff
Os presentation final.pptxjjjjjdakajwsjjdhdfjffOs presentation final.pptxjjjjjdakajwsjjdhdfjff
Os presentation final.pptxjjjjjdakajwsjjdhdfjff
ZeelGoyani
 

Similar to Deadlock and memory management -- Operating System (20)

Module3
Module3Module3
Module3
 
OS 7.pptx
OS 7.pptxOS 7.pptx
OS 7.pptx
 
Deadlock
DeadlockDeadlock
Deadlock
 
Deadlocks prefinal
Deadlocks prefinalDeadlocks prefinal
Deadlocks prefinal
 
Deadlocksprefinal 161014115456
Deadlocksprefinal 161014115456Deadlocksprefinal 161014115456
Deadlocksprefinal 161014115456
 
Operating system - Deadlock
Operating system - DeadlockOperating system - Deadlock
Operating system - Deadlock
 
Os module 2 d
Os module 2 dOs module 2 d
Os module 2 d
 
Distributed deadlock
Distributed deadlockDistributed deadlock
Distributed deadlock
 
Deadlock in distribute system by saeed siddik
Deadlock in distribute system by saeed siddikDeadlock in distribute system by saeed siddik
Deadlock in distribute system by saeed siddik
 
Deadlocks final
Deadlocks finalDeadlocks final
Deadlocks final
 
Deadlocks
DeadlocksDeadlocks
Deadlocks
 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlocks
 
Os presentation final.pptxjjjjjdakajwsjjdhdfjff
Os presentation final.pptxjjjjjdakajwsjjdhdfjffOs presentation final.pptxjjjjjdakajwsjjdhdfjff
Os presentation final.pptxjjjjjdakajwsjjdhdfjff
 
4.3 Deadlock [Autosaved].pptx
4.3 Deadlock [Autosaved].pptx4.3 Deadlock [Autosaved].pptx
4.3 Deadlock [Autosaved].pptx
 
Deadlock in Distributed Systems
Deadlock in Distributed SystemsDeadlock in Distributed Systems
Deadlock in Distributed Systems
 
Gp1242 007 oer ppt
Gp1242 007 oer pptGp1242 007 oer ppt
Gp1242 007 oer ppt
 
Operating system Deadlock
Operating system DeadlockOperating system Deadlock
Operating system Deadlock
 
Deadlock.ppt
Deadlock.pptDeadlock.ppt
Deadlock.ppt
 
Implementation of Banker’s Algorithm Using Dynamic Modified Approach
Implementation of Banker’s Algorithm Using Dynamic Modified ApproachImplementation of Banker’s Algorithm Using Dynamic Modified Approach
Implementation of Banker’s Algorithm Using Dynamic Modified Approach
 
Implementation of Banker’s Algorithm Using Dynamic Modified Approach
Implementation of Banker’s Algorithm Using Dynamic Modified ApproachImplementation of Banker’s Algorithm Using Dynamic Modified Approach
Implementation of Banker’s Algorithm Using Dynamic Modified Approach
 

Recently uploaded

Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
AbrahamGadissa
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
Kamal Acharya
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
Kamal Acharya
 
Fruit shop management system project report.pdf
Fruit shop management system project report.pdfFruit shop management system project report.pdf
Fruit shop management system project report.pdf
Kamal Acharya
 

Recently uploaded (20)

Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
 
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and VisualizationKIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf
 
Toll tax management system project report..pdf
Toll tax management system project report..pdfToll tax management system project report..pdf
Toll tax management system project report..pdf
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docxThe Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
fluid mechanics gate notes . gate all pyqs answer
fluid mechanics gate notes . gate all pyqs answerfluid mechanics gate notes . gate all pyqs answer
fluid mechanics gate notes . gate all pyqs answer
 
Construction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptxConstruction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptx
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Pharmacy management system project report..pdf
Pharmacy management system project report..pdfPharmacy management system project report..pdf
Pharmacy management system project report..pdf
 
Fruit shop management system project report.pdf
Fruit shop management system project report.pdfFruit shop management system project report.pdf
Fruit shop management system project report.pdf
 

Deadlock and memory management -- Operating System

  • 1. OPERATING SYSTEM Deadlocks and Memory management Ekta Assistant Professor
  • 2. Resources  Operating system resources are the physical or virtual components of limited availability within a computer system.  Every (physical) device connected to a computer system is a resource.  Virtual system resources include files, network connections and memory areas.  CPU time, memory, secondary storage like hard disks, network throughput, battery power, external devices are all resources of a computer which an operating system manages.
  • 3. Resources  A system resource is any usable part of a computer that can be controlled and assigned by the operating system so all of the hardware and software on the computer can work together as designed.  In most cases, the term "system resources" is used to refer to how much memory, or RAM, your computer has available.  For example, if you have 1.0 GB (1024 MB) of RAM installed on your machine, then you have a total of 1024 MB of system resources. However, as soon as your computer boots up, it loads the operating system into the RAM. This means some of your computer's resources are always being used by the operating system. Other programs and utilities that are running on your machine also use your computer's memory. If your operating system uses 300 MB of RAM and your active programs are using 200 MB, then you would have 524 MB of "available system resources." To increase your available system resources, you can close active programs or increase your total system resources by adding more RAM.
  • 4. Resources  System resources can also refer to what software is installed on your machine. This includes the programs, utilities, fonts, updates, and other software that is installed on your hard drive. For example, if a file installed with a certain program is accidentally removed, the program may fail to open. The error message may read, "The program could not be opened because the necessary resources were not found."
  • 5. Deadlock  A process in operating systems uses different resources in following way. 1) Requests a resource 2) Use the resource 2) Releases the resource  Deadlocks are a set of blocked processes each holding a resource and waiting to acquire a resource held by another process.
  • 7. Deadlock  Deadlock can arise if following four conditions hold simultaneously Mutual Exclusion: One or more than one resource are non-sharable (Only one process can use at a time) Hold and Wait: A process is holding at least one resource and waiting for resources. No Pre-emption: A resource cannot be taken from a process unless the process releases the resource. Circular Wait: A set of processes are waiting for
  • 8. Deadlock Modelling  Resource-Allocation Graph  In some cases deadlocks can be understood more clearly through the use of Resource-Allocation Graphs, having the following properties:  A set of resource categories, { R1, R2, R3, . . ., RN }, which appear as square nodes on the graph. Dots inside the resource nodes indicate specific instances of the resource. ( E.g. two dots might represent two laser printers. )  A set of processes, { P1, P2, P3, . . ., PN }  Request Edges - A set of directed arcs from Pi to Rj, indicating that process Pi has requested Rj, and is currently waiting for that resource to become available.  Assignment Edges - A set of directed arcs from Rj to Pi indicating that resource Rj has been allocated to process Pi, and that Pi is currently holding resource Rj.
  • 9. Deadlock Modelling  Resource-Allocation Graph Resource allocation graph with a deadlock Resource allocation graph with a cycle but no deadlock
  • 10. Deadlock Modelling  certain conclusions can be drawn based on the graph’s structure: • If the graph has no cycles, then there is no deadlock. • If the graph does have a cycle, then there might be deadlock (i.e., the existence of a cycle is necessary but not sufficient): o If the resource types involved in the cycle have only one instance, then we have deadlock. o In other words, the existence of a cycle becomes necessary and sufficient when we only have one instance per resource type in the cycle
  • 11. Deadlock Detection and Recovery  Deadlock Detection  Deadlock detection is the process of actually determining that a deadlock exists and identifying the processes and resources involved in the deadlock.  1. If resources have single instance: In this case for Deadlock detection we can run an algorithm to check for cycle in the Resource Allocation Graph. Presence of cycle in the graph is the sufficient condition for deadlock.  In the next diagram, resource 1 and resource 2 have single instances. There is a cycle R1–>P1–>R2–>P2. So Deadlock is Confirmed.
  • 13. Deadlock Detection and Recovery  Recovery From Deadlock 1. Process Termination  Two basic approaches, both of which recover resources allocated to processes:  Terminate all processes involved in the deadlock. This definitely solves the deadlock, but at the expense of terminating more processes than would be absolutely necessary.  Terminate processes one by one until the deadlock is broken. This is more conservative, but requires doing deadlock detection after each step.
  • 14. Deadlock Detection and Recovery  Recovery From Deadlock  In the latter case i.e., terminating the processes one by one, there are many factors that can go into deciding which processes to terminate next:  Process priorities.  How long the process has been running, and how close it is to finishing.  How many and what type of resources is the process holding. ( Are they easy to preempt and restore? )  How many more resources does the process need to complete.  How many processes will need to be terminated  Whether the process is interactive or batch.  ( Whether or not the process has made non-restorable changes to any resource. )
  • 15. Deadlock Detection and Recovery 2. Resource Pre-emption  When pre-empting resources to relieve deadlock, there are three important issues to be addressed:  Selecting a victim - Deciding which resources to pre-empt from which processes involves many of the same decision criteria outlined above.  Rollback - Ideally one would like to roll back a pre-empted process to a safe state prior to the point at which that resource was originally allocated to the process. Unfortunately it can be difficult or impossible to determine what such a safe state is, and so the only safe rollback is to roll back all the way back to the beginning. ( I.e. abort the process and make it start over. )  Starvation - How do you guarantee that a process won't starve because its resources are constantly being pre-empted? One option would be to use a priority system, and increase the priority of a process every time its resources get pre-empted. Eventually it should get a high enough priority that it won't get pre-empted any more.
  • 16. Deadlock Avoidance  This approach to the deadlock problem anticipates deadlock before it actually occurs.  we can try to avoid deadlocks by making use prior knowledge about the usage of resources by processes including resources available, resources allocated, future requests and future releases by processes.  Most deadlock avoidance algorithms need every process to tell in advance the maximum number of resources of each type that it may need. Based on all these info we may decide if a process should wait for a resource or not, and thus avoid
  • 17. Deadlock Avoidance  If a system is already in a safe state, we can try to stay away from an unsafe state and avoid deadlock.  Deadlocks cannot be avoided in an unsafe state.  A system can be considered to be in safe state if it is not in a state of deadlock and can allocate resources up to the maximum available.  Deadlock avoidance algorithms try not to allocate resources to a process if it will make the system in an unsafe state.  Since resource allocation is not done right away in some cases, deadlock avoidance algorithms also
  • 18. Deadlock Avoidance 1. Banker’s Algorithm  Banker’s Algorithm is resource allocation and deadlock avoidance algorithm which test all the request made by processes for resources, it check for safe state, if after granting request system remains in the safe state it allows the request and if their is no safe state it don’t allow the request made by the process.  Inputs to Banker’s Algorithm 1. Max need of resources by each process. 2. Currently allocated resources by each process. 3. Max free available resources in the system.  Request will only be granted under below condition. 1. If request made by process is less than equal to max need to that process.  2. If request made by process is less than equal to freely available resource in the system.
  • 19. Deadlock Avoidance 2. Resource Allocation Graph is generally used to avoid deadlocks.  If there are no cycles in the resource allocation graph, then there are no deadlocks.  If there are cycles, there may be a deadlock.  If there is only one instance of every resource, then a cycle implies a deadlock.  Vertices of the resource allocation graph are resources and processes.  The resource allocation graph has request edges and assignment edges.  An edge from a process to resource is a request edge and an edge from a resource to process is an allocation edge.  A calm edge denotes that a request may be made in future and is represented as a dashed line.  Based on calm edges we can see if there is a chance for a cycle and then grant requests if the system will again be in a safe state.
  • 20. Deadlock Avoidance If R2 is allocated to p2 and if P1 request for R2, there will be a deadlock. Safe State Deadlock State
  • 21. Deadlock Prevention  We can prevent Deadlock by eliminating any of the four conditions due to which deadlock might occur i.e., Mutual exclusion, Hold and Wait, No Pre-emption and Circular wait.
  • 22. Memory Management  Memory is part of computer which stores data.  The part of operating system that manages the memory is called memory manager.  The computer is able to change only data that is in main memory (RAM). Therefore, every program we execute and every file we access must be copied from a storage device into main memory.  The main task of memory manager is to keep track of which parts of memory are used or which part is not used, which location is to allocate for process and when the process complete, how to de-allocate the main memory etc.  Another task is to swap between main memory and
  • 23. Memory Management-Dynamic Loading and Linking  All the programs are loaded in the main memory for execution. Sometimes complete program is loaded into the memory, but some times a certain part or routine of the program is loaded into the main memory only when it is called by the program, this mechanism is called Dynamic Loading, this enhances the performance.  Also, at times one program is dependent on some other program. In such a case, rather than loading all the dependent programs, CPU links the dependent programs to the main executing program when its required. This mechanism is known as Dynamic Linking.
  • 24. Memory Management- Paging and Swapping In computer operating systems, paging is a memory management scheme by which a computer stores and retrieves data from secondary storage for use in main memory. In this scheme, the operating system retrieves data from secondary storage in same-size blocks called pages. Swapping: A process needs to be in memory for execution. But sometimes there is not enough main memory to hold all the currently active processes in a timesharing system. So, excess process are kept on disk and brought in to run dynamically. Swapping is the process of bringing in each
  • 26. Basic Memory Management Monoprogramming without Swapping or Paging Mainframes and Minicomputers PDAs and Embedded Systems PCs and MS- DOS Three simple ways of organizing memory - an operating system with one user process
  • 27. Monoprogramming without Swapping or Paging  One process in memory at all times.  Process has entire memory available to it.  Only one process at a time can be running.  Not practical for multiprogramming.  Used on older OS such as MS-DOS.  As soon as the user types a command, the operating system copies the requested program from disk to memory and executes it.  When the process finishes, the operating system displays a prompt character and waits for a new user command.  When the operating system receives the command, it loads a new program into memory, overwriting the first one.
  • 28. MULTIPROGRAMMING WITH FIXED PARTITION  In a multiprogramming environment, several programs reside in primary memory at a time and the CPU passes its control rapidly between these programs.  One way to support multiprogramming is to divide the main memory into several partitions each of which is allocated to a single process.  Depending upon how and when partitions are created, there may be two types of memory partitioning: (1) Static
  • 29. MULTIPROGRAMMING WITH FIXED PARTITION Static partitioning Division of memory into number of partitions and its size is made in the beginning (during the system generation process) and remain fixed thereafter. Dynamic partitioning The size and the number of partitions are decided during the run time by the operating system
  • 30. MULTIPROGRAMMING WITH FIXED PARTITION Memory management schemes based on contiguous allocation 1. The basic approach here is to divide memory into several fixed size partitions where each partition will accommodate only one program for execution. The number of programs residing in memory will be bound by the number of partitions. When a program terminates, that partition is free for another program waiting in a queue.
  • 31. MULTIPROGRAMMING WITH FIXED PARTITION 2. Create an input queue to place processes in the smallest partition that is large enough to hold the process. • Problems: – Some memory partitions may have processes waiting while other partitions are unused and also the space in the partition, which is larger than the process memory requirement, is not used - thus it is wasted. • May be used for batch systems, where memory requirements can be modelled. • Not good for interactive systems that often have dynamic memory requirements.
  • 33. Relocation and Protection  As soon as we introduce multiprogramming we have two problems that we need to address.  Relocation : When a program is run it does not know in advance what location it will be loaded at. Therefore, the program cannot simply generate static addresses (e.g. from jump instructions). Instead, they must be made relative to where the program has been loaded.  Protection : Once you can have two programs in memory at the same time there is a danger that one program can write to the address space of another program. This is obviously dangerous and should be avoided.  In order to cater for relocation we could make the loader modify all the relevant addresses as the binary file is loaded. The OS/360 worked in this way but the scheme suffers from the following problems  · The program cannot be moved, after it has been loaded without going through the same process. · Using this scheme does not help the protection problem as the program can still generate illegal addresses (maybe by using absolute addressing). · The program needs to have some sort of map that tells the loader which addresses need to be modified.
  • 34. Relocation and Protection  A solution, which solves both the relocation and protection problem is to equip the machine with two registers called the base and limit registers.  The base register stores the start address of the partition and the limit register holds the length of the partition. Any address that is generated by the program has the base register added to it. In addition, all addresses are checked to ensure they are within the range of the partition.  An additional benefit of this scheme is that if a program is moved within memory, only its base register needs to be amended. This is obviously a lot
  • 35. Virtual Memory  Virtual memory is a memory management capability of an OS that allows a computer to address more memory than the amount physically installed on the system. This extra memory is actually called virtual memory and it is a section of a hard disk that's set up to emulate the computer's RAM.  large programs can store themselves in form of pages in virtual memory while their execution and only the required pages or portions of processes are loaded into the main memory.
  • 36. Virtual Memory  In real scenarios, most processes never need all their pages at once, for following reasons : (a) Error handling code is not needed unless that specific error occurs, some of which are quite rare. (b) Arrays are often over-sized for worst-case scenarios, and only a small fraction of the arrays are actually used in practice. (c) Certain features of certain programs are rarely used.
  • 37. Virtual Memory  Benefits of having Virtual Memory :  Large programs can be written, as virtual space available is huge compared to physical memory.  Less I/O required, leads to faster and easy swapping of processes.  More physical memory available, as programs are stored on virtual memory, so they occupy very less space on actual physical memory.  Each user program could take less physical memory, more programs could be run the same time, with a corresponding increase in CPU utilization and
  • 38. Virtual Memory Demand paging  The basic idea behind demand paging is that when a process is swapped in, its pages are not swapped in all at once. Rather they are swapped in only when the process needs them (on demand).  There is a Memory Management Unit in CPU whose job is to translate virtual addresses into physical addresses.  The relation between virtual addresses and physical memory addresses is given by page table
  • 41. Virtual Memory - Page Table  A page table is the data structure used by a virtual memory system in a computer operating system to store the mapping between virtual addresses and physical addresses.  When a process requests access to data in its memory, it is the responsibility of the operating system to map the virtual address provided by the process to the physical address of the actual memory where that data is stored.  Each mapping is known as a page table entry (PTE).
  • 43. Page Replacement Algorithms  PRA are needed to decide which page needed to be replaced when new page comes in.  Whenever a new page is referred and not present in memory, page fault occurs and Operating System replaces one of the existing pages with newly needed page.  Page Fault A page fault is a type of interrupt, raised by the hardware when a running program accesses a memory page that is mapped into the virtual address space, but not loaded in physical memory.
  • 44. Page Replacement Algorithms  First In First Out This is the simplest page replacement algorithm. In this algorithm, operating system keeps track of all pages in the memory in a queue, oldest page is in the front of the queue. When a page needs to be replaced page in the front of the queue is selected for removal.  For example, consider page reference string 1, 3, 0, 3, 5, 6 and 3 page slots.  Initially all slots are empty, so when 1, 3, 0 came they are allocated to the empty slots —> 3 Page Faults. when 3 comes, it is already in memory so —> 0 Page Faults. Then 5 comes, it is not available in memory so it replaces the oldest page slot i.e 1. —>1 Page Fault. Finally 6 comes, it is also not available in memory so it replaces the oldest page slot i.e 3 —>1 Page Fault.  So, the fault rate will be 5/6=0.83
  • 45. Page Replacement Algorithms  Belady’s anomaly Belady’s anomaly proves that it is possible to have more page faults when increasing the number of page frames while using the First in First Out (FIFO) page replacement algorithm. For example, if we consider the reference string 0 1 2 3 0 1 4 0 1 2 3 4 and 3 slots, we get 9 total page faults, but if we increase slots to 4, we get 10 page faults.
  • 46. Page Replacement Algorithms Optimal Replacement Algorithm
  • 48. Page Replacement Algorithms Least Recently Used (LRU) algorithm  Page which has not been used for the longest time in main memory is the one which will be selected for replacement.  Easy to implement, keep a list, replace pages by looking back into time.
  • 50. Page Replacement Algorithms The Not Recently Used Page Replacement Algorithm  In order to allow the operating system to collect useful page usage statistics, most computers with virtual memory have two status bits, R and M, associated with each page.  R is set whenever the page is referenced (read or written). M is set when the page is written to (i.e., modified).  The bits are contained in each page table entry.
  • 51. Page Replacement Algorithms The Not Recently Used Page Replacement Algorithm  When a page fault occurs, the operating system inspects all the pages and divides them into four categories based on the current values of their R and M bits:  Class 0: not referenced, not modified.  Class 1: not referenced, modified.  Class 2: referenced, not modified.  Class 3: referenced, modified.
  • 52. Page Replacement Algorithms The Not Recently Used Page Replacement Algorithm  Although class 1 pages seem, at first glance, impossible, they occur when a class 3 page has its R bit cleared by a clock interrupt.  Clock interrupts do not clear the M bit because this information is needed to know whether the page has to be rewritten to disk or not.  Clearing R but not M leads to a class 1 page.  Implicit in this algorithm is the idea that it is better to remove a modified page that has not been referenced in at least one clock tick (typically about 20 msec) than a clean page that is in heavy use.
  • 53. Page Replacement Algorithms The Second-Chance Page Replacement Algorithm  A simple modification to FIFO  Avoids the problem of throwing out a heavily used page is to inspect the R bit of the oldest page.  If it is 0, the page is both old and unused, so it is replaced immediately.  If the R bit is 1, the bit is cleared, the page is put onto the end of the list of pages  its load time is updated as though it had just
  • 54. Page Replacement Algorithms 0 3 7 8 12 14 15 17 A B C D E F G H 3 7 8 12 14 15 17 20 B C D E F G H A Page Loaded First Most Recently Loaded Page A is treated like a newly loaded page
  • 55. Page Replacement Algorithms  What second chance is looking for is an old page that has not been referenced in the most recent clock interval.  If all the pages have been referenced, second chance degenerates into pure FIFO.  Imagine that all the pages have their R bits set.  One by one, the operating system moves the pages to the end of the list, clearing the R bit each time it appends a page to the end of the list.  Eventually, it comes back to page A, which now has its R bit cleared. At this point A is evicted.
  • 56. Page Replacement Algorithms The Clock Page Replacement Algorithm  Second chance algorithm, is unnecessarily inefficient because it is constantly moving pages around on its list.  A better approach is to keep all the page frames on a circular list in the form of a clock.  The hand points to the oldest page.  When a page fault occurs, the page being pointed to by the hand is inspected.  If its R bit is 0, the page is evicted, the new page is inserted into the clock in its place, and the hand is advanced one position.  If R is 1, it is cleared and the hand is advanced to the next page.
  • 57. Page Replacement Algorithms A G D J B C L L K I H F E The Clock Page Replacement Algorithm
  • 58. Page Replacement Algorithms Working Set Page Replacement Algorithm  During any phase of execution, the process references only a relatively small fraction of its pages.  The set of pages that a process is currently using is called its working set.  If the entire working set is in memory, the process will run without causing many faults.  But, if the available memory is too small to hold the entire working set, the process will cause many page faults and run slowly since executing an instruction takes a few nanoseconds and reading in a page from the disk typically takes 10 milliseconds.
  • 59. Page Replacement Algorithms  A program causing page faults every few instructions is said to be thrashing.  In a multiprogramming system, processes are frequently moved to disk (i.e., all their pages are removed from memory) to let other processes have a turn at the CPU.  What to do when a process is brought back in again?  The process will just cause page faults until its working set has been loaded. The problem is that having 20, 100, or even 1000 page faults every time a process is loaded is slow, and it also wastes considerable CPU time, since it takes the operating system a few milliseconds of CPU time to process a
  • 60. Page Replacement Algorithms  Therefore, many paging systems try to keep track of each process' working set and make sure that it is in memory before letting the process run.  This approach is called the working set model.  At any instant of time, t, there exists a set k consisting of all the pages used by the most recent memory references. This set, w(k, t), is the working set.  Current Virtual Time  how much CPU time this process has seen.
  • 61. Page Replacement Algorithms  Implementation  On each timer interrupt, look at each page Was it referenced?  Yes: Make a note of Current Virtual Time  If a page has not been used in the last T msec, It is not in the working set!  Evict it;
  • 63. Design issues for Paging systems  Most modern systems use demand paging, that is, pages are loaded only on demand, not in advance.  Demand paging means that when a process starts, lots of page faults will occur. However due to locality of reference, after a while, the process has most of the pages it needs and settles down to run with relatively few page faults.
  • 64. Design issues for Paging systems  The resident set of a process is the portion of it that is currently in memory (the number of physical frames it occupies). The resident set is a runtime property of a process (do not confuse it with the working set).  The resident set management refers to deciding how much memory to allocate to a particular process. • Small resident set: page faults increase and cause thrashing, i.e., a program causing page faults every few instructions. When thrashing occurs, the system is busy doing I/O rather than working on useful things. • Large resident set: due to locality, does not significantly improve page fault rates, wasting memory.  We want to allocate enough frames to a process, but
  • 65. Design issues for Paging systems 1. Local versus Global Allocation  In the next figure, three processes, A, B, and C, make up the set of runnable processes.  Suppose A gets a page fault.  Should the page replacement algorithm try to find the least recently used page considering only the six pages currently allocated to A, or should it consider all the pages in memory?  If it looks only at A’s pages, the page with the lowest age value is A5, so we get the situation of Fig. (B).  On the other hand, if the page with the lowest age value is removed without regard to whose page it is, page B3 will be chosen and we will get the situation of Fig. (C).
  • 66. Design issues for Paging systems  The algorithm of Fig. B is said to be a local page replacement algorithm, whereas that of Fig. C is said to be a global algorithm.  In general, global algorithms work better, especially when the working set size can vary a lot over the lifetime of a process.  If a local algorithm is used and the working set grows, thrashing will result, even if there are a sufficient number of free page frames. If the working set shrinks, local algorithms waste memory.
  • 67. Design issues for Paging systems (A) (B) (C) A0 A1 A2 A3 A4 A5 B0 B1 B2 B3 B4 B5 B6 C1 10 7 5 4 6 3 9 4 6 2 5 6 12 3 A0 A1 A2 A3 A4 A6 B0 B1 B2 B3 B4 B5 B6 C1 A0 A1 A2 A3 A4 A6 B0 B1 B2 A6 B4 B5 B6 C1
  • 68. Design issues for Paging systems  One way is to periodically determine the number of running processes and allocate each process an equal share.  But, it makes little sense to give equal shares of the memory to a 10-KB process and a 300-KB process.  Instead, pages can be allocated in proportion to each process’ total size.  Eg: with a 300-KB process getting 30 times the allotment of a 10-KB process.  It is probably wise to give each process some minimum number, so that it can run no matter how
  • 69. Design issues for Paging systems  If a global algorithm is used, it may be possible to start each process up with some number of pages proportional to the process’ size, but the allocation has to be updated dynamically as the processes run.  One way to manage the allocation is to use the PFF (Page Fault Frequency) algorithm. It tells when to increase or decrease a process’ page allocation but says nothing about which page to replace on a fault.  It just controls the size of the allocation set.
  • 70. Design issues for Paging systems  If the page fault rate of a process is unacceptably high, the faulting process is given more page frames to reduce the fault rate.  If the page fault rate of a process is so low that we can assume the process has too much memory. In this case, page frames may be taken away from it.  Thus, PFF tries to keep the paging rate for each process within acceptable bounds.
  • 71. Design issues for Paging systems 2. Load Control  Even with the best page replacement algorithm and optimal global allocation of page frames to processes, it can happen that the system thrashes.  In fact, whenever the combined working sets of all processes exceed the capacity of memory, thrashing can be expected.  One symptom of this situation is that the PFF algorithm indicates that some processes need more memory but no processes need less memory.  In this case, there is no way to give more memory to those processes needing it without hurting some other processes.  The only real solution is to temporarily get rid of some
  • 72. Design issues for Paging systems  For example, one process can be swapped to disk and its page frames divided up among other processes that are thrashing.  If the thrashing stops, the system can run for a while this way. If it does not stop, another process has to be swapped out, and so on, until the thrashing stops.  Swapping processes out to relieve the load on memory is reminiscent of two level scheduling, in which some processes are put on disk and a short-term scheduler is used to schedule the
  • 73. Design issues for Paging systems 3. Page Size Large or Small? Two arguments support for a smaller page size: (a) If a randomly data does not fill an integral number of pages. On the average, half of the final pages will be empty. The extra space in that page is wasted. This wastage is called internal fragmentation. With n segments in memory and a page size of p bytes, np/2 bytes will be wasted on internal
  • 74. Design issues for Paging systems (b) Less wastage of memory space  With a 32-KB page size, the program must be allocated 32 KB all the time. With a 16-KB page size, it needs only 16 KB. With a page size of 4 KB or smaller, it requires only 4 KB at any instant.  So in general, a large page size will cause more wasted space to be in memory than a small page size.
  • 75. Design issues for Paging systems Arguments dissupportive of smaller page sizes:  Small pages mean that programs will need many pages, and thus a large page table.  Eg: A 32-KB program needs only four 8-KB pages, but 64 512-byte pages.  Transfers to and from the disk are generally a page at a time, with most of the time being for the seek and rotational delay, so that transferring a small page takes almost as much time as transferring a large page.
  • 76. Design issues for Paging systems  Also, small pages use up much valuable space in the page table.  To balance all these trade-offs, operating systems sometimes use different page sizes for different parts of the system.  For instance, large pages for the kernel and smaller ones for user processes.
  • 77. Design issues for Paging systems 4. Separate Instruction and Data Spaces  Most computers have a single address space that holds both programs and data.  If this address space is large enough, everything works fine. However, if it’s too small, it becomes a tough task for the programmers to fit everything into the address space.
  • 78. Design issues for Paging systems  One solution, pioneered is to have separate address spaces for instructions (program text) and data, called I-space and D-space, respectively.  Each address space runs from 0 to some maximum, typically 216-1 or 232 − 1.  The linker must know when separate I and D- spaces are being used, because when they are, the data are relocated to virtual address 0 instead of starting after the program.
  • 79. Design issues for Paging systems Single Address Space 232 0 Dat a Progra m 0 232 Program I Space D Space Data Unuse d Space
  • 80. Design issues for Paging systems  In a computer with this kind of design, both address spaces can be paged, independently from one another.  Each one has its own page table, with its own mapping of virtual pages to physical page frames.  When the hardware wants to fetch an instruction, it knows that it must use I-space and the I-space page table.  Similarly, data must go through the D-space page table.  Other than this distinction, having separate I- and D-
  • 81. Design issues for Paging systems 5. Shared Pages  In a large multiprogramming system, it is common for several users to be running the same program at the same time.  It is clearly more efficient to share the pages.  One problem is that not all pages are sharable.  such as program text, can be shared, but for data pages, sharing is more complicated.  Suppose that processes A and B are both running the editor and sharing its pages.  If the scheduler decides to remove A from memory, evicting all its pages and filling the empty page frames with some other program will cause B to generate a large number of page faults to bring them back in
  • 82. Design issues for Paging systems  Each of these processes is given its own page table and have both of them point to the same set of pages. Thus no copying of pages is done.  However, all the data pages are mapped into both processes as READ ONLY.  As long as both processes just read their data, without modifying it, this situation can continue.  As soon as either process updates a memory word, the violation of the read-only protection causes a trap to the operating system.  A copy is then made of the offending page so that each process now has its own private copy.  Both copies are now set to READ/WRITE, so subsequent writes to either copy proceed without trapping.  This approach is called copy on write.
  • 83. Design issues for Paging systems 6. Shared Libraries  In modern systems, there are many large libraries used by many processes, for example, multiple I/O and graphics libraries.  Statically binding all these libraries to every executable program on the disk would make them even more bloated than they already are.  Instead, a common technique is to use shared libraries (which are called DLLs or Dynamic Link Libraries on Windows).
  • 84. Design issues for Paging systems  When a program is linked with shared libraries , instead of including the actual function called, the linker includes a small stub routine that binds to the called function at run time.  Depending on the system and the configuration details, shared libraries are loaded either when the program is loaded or when functions in them are called for the first time.  If another program has already loaded the shared library, there is no need to load it again.  When a shared library is loaded or used, the entire library is not read into memory in a single blow.  It is paged in, page by page, as needed, so functions that are not called will not be brought into RAM.
  • 85. Design issues for Paging systems 7. Mapped Files  A process can issue a system call to map a file onto a portion of its virtual address space.  In most implementations, no pages are brought in at the time of the mapping, they are demand paged in one page at a time, using the disk file.  Mapped files provide an alternative model for I/O. Instead, of doing reads and writes, the file can be accessed as a big character array in memory.  If two or more processes map onto the same file at the same time, they can communicate over shared memory.  Writes done by one process to the shared memory are immediately visible when the other one reads from the part of its virtual address space mapped onto the file.
  • 86. Design issues for Paging systems 8. Cleaning Policy  Paging works best when there is an abundant supply of free page frames that can be claimed as page faults occur.  If every page frame is full, before a new page can be brought in, an old page must first be written to disk.  To ensure a plentiful supply of free page frames, paging systems generally have a background process, called the paging daemon, that sleeps most of the time but is awakened periodically to inspect the state of memory.
  • 87. Design issues for Paging systems  Keeping a supply of page frames around yields better performance than using all of memory and then trying to find a frame at the moment it is needed.  One way to implement this cleaning policy is with a two-handed clock.  The front hand is controlled by the paging daemon. When it points to a dirty page, that page is written back to disk and the front hand is advanced.  When it points to a clean page, it is just advanced.  The back hand is used for page replacement, as in
  • 88. Design issues for Paging systems 9. Virtual Memory Interface  in some advanced systems, programmers have some control over the memory map and can use it in non traditional ways to enhance program behaviour.  1. If programmers can name regions of their memory, it may be possible for one process to give another process the name of a memory region so that process can also map it in.  2. Normally, when messages are passed, the data are copied from one address space to another, at considerable cost.  If processes can control their page map, a message can be passed by having the sending process unmap the page containing the message, and the receiving process mapping it in.
  • 89. Implementation issues for Paging systems 1. Operating System Involvement with Paging  There are four times when the operating system has paging-related work to do: (a) process creation time (b) process execution time (c) page fault time (d) process termination time
  • 90. Implementation issues for Paging systems (a) Process creation time  When a new process is created in a paging system, the operating system has to determine how large the program and data will be (initially) and create a page table for them. Space has to be allocated in memory for the page table and it has to be initialized.  In addition, space has to be allocated in the swap area on disk so that when a page is swapped out, it has somewhere to go.  The swap area also has to be initialized with program text and data.
  • 91. Implementation issues for Paging systems (b) process execution time  When a process is scheduled for execution, the MMU has to be reset for the new process and the TLB flushed, to get rid of traces of the previously executing process.  The new process’ page table has to be made current.  Optionally, some or all of the process’ pages can be brought into memory to reduce the number of page faults initially.
  • 92. Implementation issues for Paging systems (c) page fault time  When a page fault occurs, the operating system has to read out hardware registers to determine which virtual address caused the fault.  From this information, it must compute which page is needed and locate that page on disk.  It must then find an available page frame in which to put the new page, evicting some old page if needed.  Finally, it must back up the program counter to have it point to the faulting instruction and let that instruction execute again.
  • 93. Implementation issues for Paging systems (d) process termination time  When a process exits, the operating system must release its page table, its pages, and the disk space that the pages occupy when they are on disk.  If some of the pages are shared with other processes, the pages in memory and on disk can be released only when the last process using them has terminated.
  • 94. Implementation issues for Paging systems 2. Page Fault Handling sequence of events on a page fault. 1. Save the program counter on the stack. On most machines, some information about the state of the current instruction is saved in special CPU registers. 2. The operating system discovers that a page fault has occurred, and tries to discover which virtual page is needed. 3. Once the virtual address that caused the fault is known, the system checks to see if this address is valid, the system checks to see if a page frame is free.
  • 95. Implementation issues for Paging systems 4. If the page frame selected is dirty, the page is scheduled for transfer to the disk, and a context switch takes place, suspending the faulting process and letting another one run until the disk transfer has completed. In any event, the frame is marked as busy to prevent it from being used for another purpose. 5. As soon as the page frame is clean, the operating system looks up the disk address where the needed page is, and schedules a disk operation to bring it in. 6. When the disk interrupt indicates that the page has arrived, the page tables are updated to reflect its position, and the frame is marked as being in the
  • 96. Implementation issues for Paging systems 7. The faulting instruction is backed up to the state it had when it began and the program counter is reset to point to that instruction. 8. The faulting process is scheduled, and the operating system returns to the routine that called it. 9. This routine reloads the registers and other state information and returns to user space to continue execution, as if no fault had occurred.
  • 97. Implementation issues for Paging systems 3. Instruction Backup  When a program references a page that is not in memory, the instruction causing the fault is stopped partway through and a trap to the operating system occurs.  Consider a CPU that has instructions with two addresses, such as the Motorola 680x0, widely used in embedded systems.  The instruction MOV.L #6(A1),2(A0), is 6 bytes, In order to restart the instruction, the operating system must determine where the first byte of the instruction is.  we have an instruction starting at address 1000 that makes three memory references: the instruction word and two offsets for the operands.
  • 98. Implementation issues for Paging systems MOVE 6 2 16 bits 1000 1002 1004 Opcode First operand Second operand • Depending on which of these three memory references caused the page fault, the program counter might be 1000, 1002, or 1004 at the time of the fault. • It is frequently impossible for the operating system to determine
  • 99. Implementation issues for Paging systems  Some 680x0 addressing modes use auto- incrementing, which means that a side effect of executing the instruction is to increment one register.  Depending on the details of the microcode, the increment may be done before the memory reference, in which case the operating system must decrement the register in software before restarting the instruction.  Or, the auto-increment may be done after the memory reference, in which case it will not have been done at the time of the trap and must not be undone by the operating system.  Auto-decrement mode also exists and causes a
  • 100. Implementation issues for Paging systems  Solution: a hidden internal register into which the program counter is copied just before each instruction is executed.  Or a second register telling which registers have already been auto-incremented or auto- decremented, and by how much.
  • 101. Implementation issues for Paging systems 4. Locking Pages in Memory  Consider a process that has just issued a system call to read from some file into a buffer within its address space.  While waiting for the I/O to complete, the process is suspended and another process is allowed to run.  This other process gets a page fault.  If the paging algorithm is global, there is a chance that the page containing the I/O buffer will be chosen to be removed from memory.  Removing it will cause part of the data to be written in the buffer where they belong, and part of the data to be written over the just- loaded page.  One solution to this problem is to lock pages engaged in I/O in memory so that they will not be removed.  Locking a page is often called pinning it in memory.  Another solution is to do all I/O to kernel buffers and then copy the data to user pages later.
  • 102. Implementation issues for Paging systems 5. Backing Store  In page replacement algorithms, a page is selected for removal. Where on the disk it is put when it is paged out.  The simplest algorithm for allocating page space on the disk is to have a special swap partition on the disk.  When the system is booted, this swap partition is empty and is represented in memory as a single entry giving its origin and size.  When the first process is started, a chunk of the partition area the size of the first process is reserved and the remaining area reduced by that amount.  As new processes are started, they are assigned chunks of the swap partition equal in size to their core images.  As they finish, their disk space is freed.
  • 103. Implementation issues for Paging systems  Calculating the address to write a page: add the offset of the page within the virtual address space to the start of the swap area.  problem: processes can increase in size after starting. the program text is usually fixed, the data area can sometimes grow and the stack can always grow.  It may be better to reserve separate swap areas for the text, data, and stack and allow each of these areas to consist of more than one chunk on the disk.
  • 104. Implementation issues for Paging systems  Dynamic location: allocate nothing in advance and allocate disk space for each page when it is swapped out and de-allocate it when it is swapped back in.  The disadvantage is that a disk address is needed in memory to keep track of each page on disk.  There must be a table per process telling for each page on disk where it is.  Executable File: Since the program text of every process came from some (executable) file in the file system, the executable file can be used as the swap area.  Better yet, since the program text is generally read only, when memory is tight and program pages have to be evicted from memory, they are just discarded and read in again from the executable file when needed.  Shared libraries can also work this way.
  • 105. Implementation issues for Paging systems
  • 106. Implementation issues for Paging systems 6. Separation of Policy and Mechanism Here the memory management system is divided into three parts: 1. A low-level MMU handler. 2. A page fault handler that is part of the kernel. 3. An external pager running in user space.  MMU works are encapsulated in the MMU handler, which is machine-dependent code and has to be rewritten for each new platform the operating system is ported to.  The page-fault handler is machine-independent code and contains most of the mechanism for paging.  The policy is largely determined by the external pager, which runs as a user process.
  • 107. Implementation issues for Paging systems  When a process starts up, the external pager is notified in order to set up the process’ page map and allocate the necessary backing store on the disk if need be.  As the process runs, it may map new objects into its address space, so the external pager is once again notified.  If page fault: The fault handler figures out which virtual page is needed and sends a message to the external pager.  The external pager then reads the needed page in from the disk and copies it to a portion of its own address space.  Then it tells the fault handler where the page is.
  • 108. Implementation issues for Paging systems
  • 109. Implementation issues for Paging systems  Issue: where to place the page replacement algorithm. 1. If in the external pager it does not have access to the R and M bits of all the pages. These bits play a role in many of the paging algorithms. Thus, either some mechanism is needed to pass this information up to the external pager. 2. If in the kernel the fault handler tells the external pager which page it has selected for eviction and provides the
  • 110. Implementation issues for Paging systems Advantage: more modular code and greater flexibility. Disadvantage: extra overhead of crossing the user-kernel boundary several times and the overhead of the various messages being sent between the pieces of the system.
  • 111. Segmentation  The virtual memory discussed so far is one- dimensional because the virtual addresses go from 0 to some maximum address, one address after another.  For example, a compiler has many tables that are built up as compilation proceeds: 1. The source text being saved for the printed listing. 2. The symbol table, containing the names and attributes of variables. 3. The table containing all the integer and floating- point constants used. 4. The parse tree, containing the syntactic analysis of the program. 5. The stack used for procedure calls within the
  • 112. Segmentation Call Stack Parse Tree Constant Table Source Text Symbol Table Virtual Address Space Address space allocated to the Parse tree Free Symbol table has bumped into the source
  • 113. Segmentation  Consider what happens if a program has a much larger than usual number of variables but a normal amount of everything else.  The chunk of address space allocated for the symbol table may fill up, but there may be lots of room in the other tables.  What is needed is a way of freeing the programmer from having to manage the expanding and contracting tables. Solution: Segments  Each segment consists of a linear sequence of addresses, starting at 0 and going up to some maximum value.  Different segments may, and usually do, have different lengths. Moreover, segment lengths may change
  • 114. Segmentation  To specify an address in this segmented or two- dimensional memory, the program must supply a two-part address, a segment number, and an address within the segment.  Modern workstations that run advanced window systems often have extremely large graphical libraries compiled into nearly every program.  In a segmented system, the graphical library can be put in a segment and shared by multiple processes, eliminating the need for having it in every process’
  • 115. Segmentation  Since each segment forms a logical entity that programmers know about, such as a procedure, or an array, different segments can have different kinds of protection.  Eg: A procedure segment can be specified as execute only, prohibiting attempts to read from or store into it.  A floating-point array can be specified as read/write but not execute.  Such protection is helpful in catching bugs.
  • 116. Segmentation Need the programmer be aware that this technique is being used? No Yes How many linear address spaces are there? 1 Many Can the total address space exceed the size of physical memory? Yes Yes Can procedures and data be distinguished and separately protected? No Yes Can tables whose size No Yes Consideration Paging Segmentation
  • 117. Segmentation Implementation of Pure Segmentation example: physical memory initially containing five segments. if segment 1 is evicted and segment 7, which is smaller, is put in its place.  Between segment 7 and segment 2 is an unused area— that is, a hole. Then segment 4 is replaced by segment 5, and segment 3 is replaced by segment 6.  After the system has been running for a while, memory will be divided up into a number of chunks, some containing segments and some containing holes.  This phenomenon, called checkerboarding or external fragmentation, wastes memory in the holes.  It can be dealt with by compaction
  • 119. Segmentation Segmentation with Paging: MULTICS  If the segments are large, it may be inconvenient, to keep them in main memory in their entirety.  Solution: paging, so that only those pages of a segment that are actually needed have to be around.  MULTICS operating system ran on the Honeywell 6000 machines.  provided each program with a virtual memory of up to 218 segments, each of which was up to 65,536 (36-bit) words long.  To implement this, the MULTICS designers chose to page each segment , combining the advantages of paging (uniform page size and not having to keep the whole segment in memory if only part of it was being used) with
  • 120. Segmentation  Each MULTICS program had a segment table, with one descriptor per segment.  A segment descriptor contained an indication of whether the segment was in main memory or not.  If the segment was in memory, its descriptor contained an 18-bit pointer to its page table.  The normal page size was 1024 words.  An address in MULTICS consisted of two parts: the segment number and the address within the segment.
  • 121. Segmentation When a memory reference occurred, the following algorithm was carried out. 1. The segment number was used to find the segment descriptor. 2. A check was made to see if the segment’s page table was in memory. If it was, it was located. If it was not, a segment fault occurred. If there was a protection violation, a trap occurred. 3. The page table entry for the requested virtual page was examined. 4. If the page was not in memory, a page fault was triggered. If it was in memory, the main-memory address of the start of the page was extracted from the page table entry. 5. The offset was added to the page origin to give the main memory address where the word was located. 6. The read or store finally took place.
  • 122. Segmentation Segment number Page number Offset within the page 18 6 10 Address within the segment
  • 123. Segmentation  If the preceding algorithm were actually carried out by the operating system on every instruction, programs would not run very fast.  the MULTICS hardware contained a 16-word high-speed TLB that could search all its entries in parallel for a given key.  This was the first system to have a TLB, something used in all modern architectures.  When an address was presented to the computer, the addressing hardware first checked to see if the virtual address was in the TLB.  If so, it got the page frame number directly from the TLB and formed the actual address of the referenced word without having to look in the descriptor segment or page table.