Sprno:9223
11A FIRST FIT
PROGRAM:
#include <stdio.h>
#define MAX_BLOCKS 20
#define MAX_PROCESSES 20
void firstFit(int blockSize[], int blocks, int processSize[], int processes) {
int allocation[MAX_PROCESSES];
// Initialize allocation array
for (int i = 0; i < processes; i++) {
allocation[i] = -1;
}
// Allocate using First Fit
for (int i = 0; i < processes; i++) {
for (int j = 0; j < blocks; j++) {
if (blockSize[j] >= processSize[i]) {
allocation[i] = j;
blockSize[j] -= processSize[i];
break;
}
}
}
// Display the results
printf("\nProcess No.\tProcess Size\tAllocated Block\n");
for (int i = 0; i < processes; i++) {
printf("P%d\t\t%d\t\t", i + 1, processSize[i]);
if (allocation[i] != -1)
printf("Block %d\n", allocation[i] + 1);
else
printf("Not Allocated\n");
}
Sprno:9223
// Show remaining block sizes
printf("\nRemaining Memory in Blocks:\n");
for (int i = 0; i < blocks; i++) {
printf("Block %d: %d\n", i + 1, blockSize[i]);
}
}
int main() {
int blockSize[MAX_BLOCKS], processSize[MAX_PROCESSES];
int blocks, processes;
printf("Enter number of memory blocks: ");
scanf("%d", &blocks);
printf("Enter sizes of %d memory blocks:\n", blocks);
for (int i = 0; i < blocks; i++) {
scanf("%d", &blockSize[i]);
}
printf("Enter number of processes: ");
scanf("%d", &processes);
printf("Enter sizes of %d processes:\n", processes);
for (int i = 0; i < processes; i++) {
scanf("%d", &processSize[i]);
}
firstFit(blockSize, blocks, processSize, processes);
return 0;
}
OUTPUT:
Enter number of memory blocks: 4
Enter sizes of 4 memory blocks:
200 300 100 400
Enter number of processes: 3
Sprno:9223
Enter sizes of 3 processes:
250 100 300
Process No. Process Size Allocated Block
P1 250 Block 2
P2 100 Block 1
P3 300 Block 4
Remaining Memory in Blocks:
Block 1: 100
Block 2: 50
Block 3: 100
Block 4: 100