Professional Documents
Culture Documents
OS LAB Assignment Q: Name - Aditya Reg No - 19BIT0139
OS LAB Assignment Q: Name - Aditya Reg No - 19BIT0139
OS LAB Assignment
Q . You are provided with memory partitions of 250k, 400k, 95k, 500k respectively.
How will you perform first fit, best fit and worst fit algorithms with process of 260k,
450k,100k and 650k(in order). Which algorithm makes the most efficient use of
memory?
Code
#include<bits/stdc++.h>
using namespace std;
// A utility function to print data in a tabular form and reduce code redun
dancy
void printTable(vector<int> block, vector<int>process, vector<int> allocati
on, int n){
// The loop will iterate through the allocation vector and print the bl
ock number stored in it
// It will first check that the process is allocated to any block or no
t
// for this it will compare the ith location of allocation to -1
// if -1 then not allocated else print the block number
pair<int ,int> performance = {0,0};
for (int i = 0; i < n; i++)
{
cout << " " << i+1 << "\t\t" << process[i] << "\t\t";
if (allocation[i] != -1){
cout << allocation[i] + 1<<"("<<block[allocation[i]]<<"KB)";
performance.first+=block[allocation[i]]-process[i];
cout<<"\t"<<block[allocation[i]]-process[i]<<endl;
}
else{
cout << "Not Allocated"<<endl;
performance.second++;
}
// it is initialaised with -
1(as a flag whether or not the process is allocated somewhere or not)
//and of size same as process
vector<int> allocation(n,-1);
// It will find the first block with size greateror equal for teh proce
ss
// and if avaialble then store the index of block to allocation vector
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (block[j] >= process[i])
{
allocation[i] = j;
break;
}
}
}
cout<<"=========================================="<<endl<<"For first fi
t"<<endl<<"=========================================="<<endl;
cout << "\nProcess No.\tProcess Size\tBlock no.\tLoss\n";
printTable(block,process,allocation,n);
vector<int> allocation(n,-1);
// this loop iterate through each process and find the best block
// i.e. with least memory loss
// For doing this will choose the smallest block that can fit
// the process among all that is gerater than this process
// store the index of that block to bInd and move on.
for (int i=0; i<n; i++)
{
int bInd = -1;
for (int j=0; j<m; j++){
if (block[j] >= process[i]){
if (bInd== -1)
bInd= j;
else if (block[bInd] > block[j] && allocation[j] ==-1)
bInd = j;
}
}
if (bInd!= -1){
allocation[i] = bInd;
}
}
Name – Aditya Reg no – 19BIT0139
int main()
{
vector<int> process={260,450,100,650};
vector<int> blocks={250,400,95,500};
int m=4,n=4,temp;
firstFit(blocks,m,process,n);
bestFit(blocks,m,process,n);
worstFit(blocks,m,process,n);
return 0 ;
Output
Name – Aditya Reg no – 19BIT0139