Worst Fit Algorithm Program in C++
Worst Fit Algorithm Program in C++
The operating system, also known as the resource allocator is responsible for allocating memory to the process in execution. The process demands free memory block from the CPU during their execution.
How does Worst Fit work?
In the case of the worst fit when accommodating a process P1, the operating system searches for –
- Memory block that can fit the process
- Leaves the highest wasted(empty) space after P1 is placed in block
Program code for Worst Fit Memory management Scheme using C++
#include<bits/stdc++.h>
using namespace std;
// Program code to allocate empty memory to the process as oer the worst fit memeory allocation
void worstFit(int b_size[], int m, int p_size[], int n)
{
//code to store the memory id of the empty memory allocated to a process
int allocation[n];
// no memory is allocated at the initial stage
memset(allocate, -1, sizeof(allocate));
// select each process to search a suitable empty memory block for memeory allocation
// empty memory assignment is also carried out in this code
for (int i=0; i<n; i++)
{
// Code to find the worst fit memory block
int wstIdx = -1;
for (int j=0; j<m; j++)
{
if (b_size[j] >= p_size[i])
{
if (wstIdx == -1)
wstIdx = j;
else if (b_size[wstIdx] < b_size[j])
wstIdx = j;
}
}
// to search the empty memory block for the current process
if (wstIdx != -1)
{
// allocate block j to p[i] process
allocate[i] = wstIdx;
// Reduce available memory in this block.
B_size[wstIdx] -= p_size[i];
}
}
cout << "\nProcess Number \tProcess Size\tBlock Number\n";
for (int i = 0; i < n; i++)
{
cout << " " << i+1 << "\t\t" << p_size[i] << "\t\t";
if (allocate[i] != -1)
cout<< allocate[i] + 1;
else
cout << "Not Allocated";
cout << endl;
}
}
// Driver code
int main()
{
int blockSize[] = {100, 500, 200, 300, 600};
int processSize[] = {212, 417, 112, 426};
int m = sizeof(blockSize)/sizeof(blockSize[0]);
int n = sizeof(p_size)/sizeof(p_size[0]);
worstFit(b_size, m, p_size, n);
return 0 ;
}
Output
[table id=677 /]
Read More
- Memory Management Introduction
- Partition Allocation Method
- Buddy- System Allocator
- Paging
- Types of Paging
- Fragmentation
- Mapping Virtual address to Physical Address.
- Virtual Memory
- Demand Paging
- Implementation of Demand paging and page fault
- Segmentation
- Page Replacement Algorithms
- Thrashing
- Belady’s Anomaly
- Static vs Dynamic Loading
- Static vs Dynamic Linking
- Swapping
- Translational Look Aside Buffer
- Process Address Space
- Difference between Segmentation and Paging

Login/Signup to comment