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