#include #define max 25 void main() { int frag[max], b[max], f[max], i, j, nb, nf, temp, highest = 0, lowest = 10000; static int bf[max], ff[max], bf2[max], ff2[max], bf3[max], ff3[max]; printf("\nEnter the number of blocks:"); scanf("%d", &nb;); printf("Enter the number of files:"); scanf("%d", &nf;); printf("\nEnter the size of the blocks:-\n"); for (i = 1; i <= nb; i++) { printf("Block %d:", i); scanf("%d", &b[i]); } printf("Enter the size of the files :-\n"); for (i = 1; i <= nf; i++) { printf("File %d:", i); scanf("%d", &f[i]); } // First Fit printf("\n\tMemory Management Scheme - First Fit"); for (i = 1; i <= nf; i++) { for (j = 1; j <= nb; j++) { if (bf[j] != 1) { temp = b[j] - f[i]; if (temp >= 0) { ff[i] = j; break; } } } frag[i] = temp; bf[ff[i]] = 1; } printf("\nFile_no:\tFile_size :\tBlock_no:\tBlock_size:\tFragment"); for (i = 1; i <= nf; i++) printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d", i, f[i], ff[i], b[ff[i]], frag[i]); // Best Fit printf("\n\n\tMemory Management Scheme - Best Fit"); for (i = 1; i <= nf; i++) { for (j = 1; j <= nb; j++) { if (bf2[j] != 1) { temp = b[j] - f[i]; if (temp >= 0) if (lowest > temp) { ff2[i] = j; lowest = temp; } } } frag[i] = lowest; bf2[ff2[i]] = 1; lowest = 10000; } printf("\nFile No\tFile Size \tBlock No\tBlock Size\tFragment"); for (i = 1; i <= nf && ff2[i] != 0; i++) printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d", i, f[i], ff2[i], b[ff2[i]], frag[i]); // Worst Fit printf("\n\n\tMemory Management Scheme - Worst Fit"); for (i = 1; i <= nf; i++) { for (j = 1; j <= nb; j++) { if (bf3[j] != 1) { temp = b[j] - f[i]; if (temp >= 0) if (highest < temp) { ff3[i] = j; highest = temp; } } } frag[i] = highest; bf3[ff3[i]] = 1; highest = 0; } printf("\nFile_no:\tFile_size :\tBlock_no:\tBlock_size:\tFragment"); for (i = 1; i <= nf; i++) printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d", i, f[i], ff3[i], b[ff3[i]], frag[i]); }