Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

My C program isn\'t prompting the user for the page size before it runs an algor

ID: 3869207 • Letter: M

Question

My C program isn't prompting the user for the page size before it runs an algortihm so the fault count is always zero. Please modify so that it takes user page size input.

#include<stdio.h>

#include <stdlib.h>

//#include<iostream.h>

int num_of_add, number_frames, page_fault_count = 0;

int index[10000], page[50];

int curr_fault = 0;

//virtual addresses

int va1, va2, va3;

//FROM A FILE

void getFileData ()

{

printf (" Page Size :");

int num_of_add = 0;

  

/* Pointer to the file */

FILE * fp1;

  

/* Opening a file in r mode */

fp1 = fopen ("inputfile.text", "r");

  

if (fp1 == NULL)

{

printf ("error in file open");

}

  

while (1)

  

{

char c;

  

int x;

  

///c = fgetc(fp1);

fscanf (fp1, "%i", &x);

  

printf ("reading: %i", x);

  

if (x == -1)

break;

  

else

{

//x is a memory value

index[num_of_add] = x;

printf ("# of pages %d", index[num_of_add]);

num_of_add = num_of_add + 1;

}

  

}

  

///num_of_add is the number of values in the file

fclose (fp1);

  

printf ("number of addresses: %d", num_of_add);

  

printf (" Number of frames allocated to the process:");

  

//Number of Frames

  

scanf ("%d", &number_frames);

}

void

initialize ()

{

  

printf("initializing data");

//Page Fault Count

  

page_fault_count = 0;

  

for (va1 = 0; va1 < number_frames; va1++)

  

page[va1] = 9999;

}

//Fault Found

  

int

fault_found (int data)

{

  

//Current Fault

  

curr_fault = 0;

  

for (va2 = 0; va2 < number_frames; va2++)

  

{

  

if (page[va2] == data)

{

curr_fault = 1;

break;

}

  

}

  

return curr_fault;

}

int

table (int data)

{

  

int index_length;

  

for (va3 = 0; va3 < number_frames; va3++)

  

{

  

if (page[va3] == data)

{

index_length = va3;

break;

}

  

}

  

return index_length;

}

//Display Fault

  

void

show_fault ()

{

  

printf (" Total page fault count:%d", page_fault_count);

  

printf (" Page Fault percentage:%d"); //percentage to be determined

}

//Display Pages

  

void

show_pages ()

{

  

for (va3 = 0; va3 < number_frames; va3++)

  

{

  

if (page[va3] != 9999)

printf (" %d", page[va3]);

  

}

}

void

fifo ()

{

  

printf("inside fifo");

initialize ();

  

for (va1 = 0; va1 < num_of_add; va1++)

  

{

  

printf (" For %d :", index[va1]);

  

if (fault_found (index[va1]) == 0)

{

for (va3 = 0; va3 < number_frames - 1; va3++)

//Read the page array

page[va3] = page[va3 + 1];

//Update page array is the new index

page[va3] = index[va1];

page_fault_count++;

show_pages ();

}

  

else

printf ("No page fault");

  

}

  

show_fault ();

}

void

optimal ()

{

  

initialize ();

  

int head[50];

  

for (va1 = 0; va1 < num_of_add; va1++)

  

{

  

printf (" For %d :", index[va1]);

  

if (fault_found (index[va1]) == 0)

{

for (va2 = 0; va2 < number_frames; va2++)

{

int last_page = page[va2];

int lfnd = 0;

for (va3 = va1; va3 <page_fault_count ; va3++)

{

if (last_page == index[va3])

{

head[va2] = va3;

lfnd = 1;

break;

}

else

lfnd = 0;

}

if (!lfnd)

head[va2] = 9999;

}

int limit = -9999;

int temp_index;

for (va2 = 0; va2 < number_frames; va2++)

{

if (head[va2] > limit)

{

limit = head[va2];

temp_index = va2;

}

}

page[temp_index] = index[va2];

page_fault_count++;

show_pages ();

}

  

else

printf ("No page fault");

  

}

  

show_fault ();

}

void

lru ()

{

  

initialize ();

  

int least_used[50];

  

for (va1 = 0; va1 < num_of_add; va1++)

  

{

  

printf (" For %d :", index[va1]);

  

if (fault_found (index[va1]) == 0)

{

for (va2 = 0; va2 < number_frames; va2++)

{

int last_page = page[va2];

int lfnd = 0;

for (va3 = va1 - 1; va3 >= 0; va3--)

{

if (last_page == index[va3])

{

least_used[va2] = va3;

lfnd = 1;

break;

}

else

lfnd = 0;

}

if (!lfnd)

least_used[va2] = -9999;

}

int lowbound = 9999;

int temp_index;

for (va2 = 0; va2 < number_frames; va2++)

{

if (least_used[va2] < lowbound)

{

lowbound = least_used[va2];

temp_index = va2;

}

}

page[temp_index] = index[va1];

page_fault_count++;

show_pages ();

}

  

else

printf ("No page fault!");

  

}

  

show_fault ();

}

void

mru ()

{

  

int last_count[100];

  

int least_used, last_number;

  

int frame_count = 0, new_number = 0;

  

initialize ();

  

for (va1 = 0; va1 < number_frames; va1++)

  

last_count[va1] = 0;

  

for (va1 = 0; va1 < num_of_add; va1++)

  

{

  

printf (" For %d :", index[va1]);

  

if (fault_found (index[va1]))

{

int index_length = table (index[va1]);

last_count[index_length]++;

printf ("No page fault!");

}

  

else

{

page_fault_count++;

if (new_number < number_frames)

{

page[new_number] = index[va1];

last_count[new_number] = last_count[new_number] + 1;

new_number++;

}

else

{

least_used = 9999;

for (va3 = 0; va3 < number_frames; va3++)

if (last_count[va3] < least_used)

{

least_used = last_count[va3];

last_number = va3;

}

page[last_number] = index[va1];

frame_count = 0;

for (va3 = 0; va3 <= va1; va3++)

if (index[va1] == index[va3])

frame_count = frame_count + 1;

last_count[last_number] = frame_count;

}

show_pages ();

}

  

}

  

show_fault ();

}

//MAIN

  

int

main ()

{

  

int selectone;

  

while (1)

  

{

  

printf

(" Select an Algorithm 1.Enter 2.FIFO 3.LRU 4.MRU 5.Optimal 6.Exit Please make a selection:");

  

scanf ("%d", &selectone);

  

switch (selectone)

{

case 1:

getFileData ();

break;

case 2:

fifo ();

break;

case 3:

lru ();

break;

case 4:

mru ();

break;

case 5:

optimal ();

break;

default:

return 0;

break;

}

  

}

}

Explanation / Answer

You are just prompting(printf (" Page Size :");) for the page size but not reading it in the getFileData (); function

just add scanf("%d",&page_size); line after the printf in the getFileData function.

Just add exit(0) in the no file found error otherwise it will go to infinite loop if no file was there

change index variable name to other name otherwise it causes warning because it has index function

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote