#include <stdio.h> void implimentFirstFit(int blockSize[], int blocks, int processSize[], int processes) { // This will store the block id of the allocated block to a process int allocate[processes]; int occupied[blocks]; // initially assigning -1 to all allocation indexes // means nothing is allocated currently for(int i = 0; i < processes; i++) { allocate[i] = -1; } for(int i = 0; i < blocks; i++){ occupied[i] = 0; } // take each process one by one and find // first block that can accomodate it for (int i = 0; i < processes; i++) { for (int j = 0; j < blocks; j++) { if (!occupied[j] && blockSize[j] >= processSize[i]) { // allocate block j to p[i] process allocate[i] = j; occupied[j] = 1; break; } } } printf("\nProcess No.\tProcess Size\tBlock no.\n"); for (int i = 0; i < processes; i++) { printf("%d \t\t\t %d \t\t\t", i+1, processSize[i]); if (allocate[i] != -1) printf("%d\n",allocate[i] + 1); else printf("Not Allocated\n"); } } void main() { int blockSize[] = {30, 5, 10}; int processSize[] = {10, 6, 9}; int m = sizeof(blockSize)/sizeof(blockSize[0]); int n = sizeof(processSize)/sizeof(processSize[0]); implimentFirstFit(blockSize, m, processSize, n); }