Facebook
From new, 2 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 196
  1. #include <stdio.h>
  2.  
  3. int blocks, process, bl[30], pr[30];
  4.  
  5. void first() {
  6.     printf("\n\nFIRST FIT ALLOCATION\n");
  7.     int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0};
  8.     for (int i = 0; i < blocks; i++)
  9.         block[i] = bl[i];
  10.     for (int i = 0; i < process; i++)
  11.         proc[i] = pr[i];
  12.     for (int i = 0; i < process; i++) {
  13.         for (int j = 0; j < blocks; j++) {
  14.             if (block[j] >= proc[i] && flag_block[j] == 0) {
  15.                 printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, j + 1, block[j]);
  16.                 flag_block[j] = 1;
  17.                 flag_proc[i] = 1;
  18.                 break;
  19.             }
  20.         }
  21.         if (flag_proc[i] == 0)
  22.             printf("\nProcess P%d cannot be allocated..!", i + 1);
  23.     }
  24. }
  25.  
  26. void best() {
  27.     printf("\n\nBEST FIT ALLOCATION\n");
  28.     int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k;
  29.     for (int i = 0; i < blocks; i++)
  30.         block[i] = bl[i];
  31.     for (int i = 0; i < process; i++)
  32.         proc[i] = pr[i];
  33.     for (int i = 0; i < blocks - 1; i++) {
  34.         for (int j = 0; j < blocks - i - 1; j++) {
  35.             if (block[j] > block[j + 1]) {
  36.                 temp = block[j];
  37.                 block[j] = block[j + 1];
  38.                 block[j + 1] = temp;
  39.             }
  40.         }
  41.     }
  42.     for (int i = 0; i < process; i++) {
  43.         for (int j = 0; j < blocks; j++) {
  44.             if (block[j] >= proc[i] && flag_block[j] == 0) {
  45.                 for (k = 0; k < blocks; k++) {
  46.                     if (bl[k] == block[j])
  47.                         break;
  48.                 }
  49.                 printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]);
  50.                 flag_block[j] = 1;
  51.                 flag_proc[i] = 1;
  52.                 break;
  53.             }
  54.         }
  55.         if (flag_proc[i] == 0)
  56.             printf("\nProcess P%d cannot be allocated..!", i + 1);
  57.     }
  58. }
  59.  
  60. void worst() {
  61.     printf("\n\nWORST FIT ALLOCATION\n");
  62.     int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k;
  63.     for (int i = 0; i < blocks; i++)
  64.         block[i] = bl[i];
  65.     for (int i = 0; i < process; i++)
  66.         proc[i] = pr[i];
  67.     for (int i = 0; i < blocks - 1; i++) {
  68.         for (int j = 0; j < blocks - i - 1; j++) {
  69.             if (block[j] < block[j + 1]) {
  70.                 temp = block[j];
  71.                 block[j] = block[j + 1];
  72.                 block[j + 1] = temp;
  73.             }
  74.         }
  75.     }
  76.     for (int i = 0; i < process; i++) {
  77.         for (int j = 0; j < blocks; j++) {
  78.             if (block[j] >= proc[i] && flag_block[j] == 0) {
  79.                 for (k = 0; k < blocks; k++) {
  80.                     if (bl[k] == block[j])
  81.                         break;
  82.                 }
  83.                 printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]);
  84.                 flag_block[j] = 1;
  85.                 flag_proc[i] = 1;
  86.                 break;
  87.             }
  88.         }
  89.         if (flag_proc[i] == 0)
  90.             printf("\nProcess P%d cannot be allocated..!", i + 1);
  91.     }
  92. }
  93.  
  94. int main() {
  95.     printf("\nEnter the Number of Memory Blocks Available : ");
  96.     scanf("%d", &blocks;);
  97.     printf("\nEnter the size of each Block : \n");
  98.     for (int i = 0; i < blocks; i++) {
  99.         printf("Block B%d -> ", i + 1);
  100.         scanf("%d", &bl;[i]);
  101.     }
  102.     printf("\nEnter the Number of Requesting Processes : ");
  103.     scanf("%d", &process;);
  104.     printf("\nEnter the size of each Process : \n");
  105.     for (int i = 0; i < process; i++) {
  106.         printf("Process P%d -> ", i + 1);
  107.         scanf("%d", &pr;[i]);
  108.     }
  109.     first();
  110.     best();
  111.     worst();
  112.     return 0;
  113. }
  114.