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

Operating System Memory Management

Uploaded by

MA R GA
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Operating System Memory Management

Uploaded by

MA R GA
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 18

Memory management is the functionality of an operating

system which handles or manages primary memory and


moves processes back and forth between main memory and
disk during execution. Memory management keeps track of
each and every memory location, regardless of either it is
allocated to some process or it is free. It checks how much
memory is to be allocated to processes. It decides which
process will get memory at what time. It tracks whenever
some memory gets freed or unallocated and correspondingly
it updates the status.
Process Address Space
The process address space is the set of logical addresses that
a process references in its code. For example, when 32-bit
addressing is in use, addresses can range from 0 to 0x7fffffff;
that is, 2^31 possible numbers, for a total theoretical size of 2
gigabytes.

The operating system takes care of mapping the logical


addresses to physical addresses at the time of memory
allocation to the program. There are three types of addresses
used in a program before and after memory is allocated −
Memory Addresses & Description
1.Symbolic addresses

The addresses used in a source code. The variable names, constants,


and instruction labels are the basic elements of the symbolic address
space.

2.Relative addresses

At the time of compilation, a compiler converts symbolic addresses


into relative addresses.

3.Physical addresses

The loader generates these addresses at the time when a program is


loaded into main memory.
Static vs Dynamic Loading
The choice between Static or Dynamic Loading is to be made at the time of
computer program being developed. If you have to load your program
statically, then at the time of compilation, the complete programs will be
compiled and linked without leaving any external program or module
dependency. The linker combines the object program with other necessary
object modules into an absolute program, which also includes logical
addresses.

If you are writing a Dynamically loaded program, then your compiler will compile the program and
for all the modules which you want to include dynamically, only references will be provided and
rest of the work will be done at the time of execution.
Static vs Dynamic Loading

At the time of loading, with static loading, the


absolute program (and data) is loaded into
memory in order for execution to start.
If you are using dynamic loading, dynamic
routines of the library are stored on a disk in
relocatable form and are loaded into memory
only when they are needed by the program.
Static vs Dynamic Linking

As explained above, when static linking is used, the


linker combines all other modules needed by a program
into a single executable program to avoid any runtime
dependency.

When dynamic linking is used, it is not required to link


the actual module or library with the program, rather a
reference to the dynamic module is provided at the time
of compilation and linking. Dynamic Link Libraries (DLL)
in Windows and Shared Objects in Unix are good
examples of dynamic libraries.
Swapping

Swapping is a mechanism in which a process can be


swapped temporarily out of main memory (or move) to
secondary storage (disk) and make that memory
available to other processes. At some later time, the
system swaps back the process from the secondary
storage to main memory.
Swapping

Though performance is usually affected by swapping


process but it helps in running multiple and big
processes in parallel and that's the reason Swapping is
also known as a technique for memory
compaction.
Swapping

The total time taken by swapping process includes the


time it takes to move the entire process to a secondary
disk and then to copy the process back to memory, as
well as the time the process takes to regain main
memory.

Let us assume that the user process is of size 2048KB


and on a standard hard disk where swapping will take
place has a data transfer rate around 1 MB per second.
The actual transfer of the 1000K process to or from
memory will take
Memory Allocation

Main memory usually has two partitions −

• Low Memory − Operating system resides in this


memory.
• High Memory − User processes are held in high
memory.

Operating system uses the following memory allocation


mechanism.
Memory Allocation & Description

1. Single-partition allocation

In this type of allocation, relocation-register scheme is


used to protect user processes from each other, and
from changing operating-system code and data.
Relocation register contains value of smallest physical
address whereas limit register contains range of logical
addresses. Each logical address must be less than the
limit register.
Memory Allocation & Description

2.Multiple-partition allocation

In this type of allocation, main memory is divided into a


number of fixed-sized partitions where each partition
should contain only one process. When a partition is
free, a process is selected from the input queue and is
loaded into the free partition. When the process
terminates, the partition becomes available for another
process.
Fragmentation

As processes are loaded and removed from memory, the


free memory space is broken into little pieces. It
happens after sometimes that processes cannot be
allocated to memory blocks considering their small size
and memory blocks remains unused. This problem is
known as Fragmentation.

Fragmentation is of two types −


Fragmentation & Description

1.External fragmentation

Total memory space is enough to satisfy a request or to


reside a process in it, but it is not contiguous, so it
cannot be used.

2.Internal fragmentation

Memory block assigned to process is bigger. Some


portion of memory is left unused, as it cannot be used
by another process.
Fragmentation & Description

The following diagram shows how fragmentation can


cause waste of memory and a compaction technique can
be used to create more free memory out of fragmented
memory −
Fragmentation & Description

External fragmentation can be reduced by compaction


or shuffle memory contents to place all free memory
together in one large block. To make compaction
feasible, relocation should be dynamic.

The internal fragmentation can be reduced by effectively


assigning the smallest partition but large enough for the
process.

You might also like