- #include <stdio.h>
- int blocks, process, bl[30], pr[30];
- void first() {
- printf("\n\nFIRST FIT ALLOCATION\n");
- int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0};
- for (int i = 0; i < blocks; i++)
- block[i] = bl[i];
- for (int i = 0; i < process; i++)
- proc[i] = pr[i];
- for (int i = 0; i < process; i++) {
- for (int j = 0; j < blocks; j++) {
- if (block[j] >= proc[i] && flag_block[j] == 0) {
- printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, j + 1, block[j]);
- flag_block[j] = 1;
- flag_proc[i] = 1;
- break;
- }
- }
- if (flag_proc[i] == 0)
- printf("\nProcess P%d cannot be allocated..!", i + 1);
- }
- }
- void best() {
- printf("\n\nBEST FIT ALLOCATION\n");
- int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k;
- for (int i = 0; i < blocks; i++)
- block[i] = bl[i];
- for (int i = 0; i < process; i++)
- proc[i] = pr[i];
- for (int i = 0; i < blocks - 1; i++) {
- for (int j = 0; j < blocks - i - 1; j++) {
- if (block[j] > block[j + 1]) {
- temp = block[j];
- block[j] = block[j + 1];
- block[j + 1] = temp;
- }
- }
- }
- for (int i = 0; i < process; i++) {
- for (int j = 0; j < blocks; j++) {
- if (block[j] >= proc[i] && flag_block[j] == 0) {
- for (k = 0; k < blocks; k++) {
- if (bl[k] == block[j])
- break;
- }
- printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]);
- flag_block[j] = 1;
- flag_proc[i] = 1;
- break;
- }
- }
- if (flag_proc[i] == 0)
- printf("\nProcess P%d cannot be allocated..!", i + 1);
- }
- }
- void worst() {
- printf("\n\nWORST FIT ALLOCATION\n");
- int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k;
- for (int i = 0; i < blocks; i++)
- block[i] = bl[i];
- for (int i = 0; i < process; i++)
- proc[i] = pr[i];
- for (int i = 0; i < blocks - 1; i++) {
- for (int j = 0; j < blocks - i - 1; j++) {
- if (block[j] < block[j + 1]) {
- temp = block[j];
- block[j] = block[j + 1];
- block[j + 1] = temp;
- }
- }
- }
- for (int i = 0; i < process; i++) {
- for (int j = 0; j < blocks; j++) {
- if (block[j] >= proc[i] && flag_block[j] == 0) {
- for (k = 0; k < blocks; k++) {
- if (bl[k] == block[j])
- break;
- }
- printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]);
- flag_block[j] = 1;
- flag_proc[i] = 1;
- break;
- }
- }
- if (flag_proc[i] == 0)
- printf("\nProcess P%d cannot be allocated..!", i + 1);
- }
- }
- int main() {
- printf("\nEnter the Number of Memory Blocks Available : ");
- scanf("%d", &blocks;);
- printf("\nEnter the size of each Block : \n");
- for (int i = 0; i < blocks; i++) {
- printf("Block B%d -> ", i + 1);
- scanf("%d", &bl;[i]);
- }
- printf("\nEnter the Number of Requesting Processes : ");
- scanf("%d", &process;);
- printf("\nEnter the size of each Process : \n");
- for (int i = 0; i < process; i++) {
- printf("Process P%d -> ", i + 1);
- scanf("%d", ≺[i]);
- }
- first();
- best();
- worst();
- return 0;
- }