Assignment : 4
Set A
i. Write the simulation program to implement demand paging and show the page
scheduling and total number of page faults for the following given page reference string.
Give input n as the number of memory frames.
Reference String : 12,15,12,18,6,8,11,12,19,12,6,8,12,15,19,8
1) Implement FIFO
CODE:
👇
- #include<stdio.h>
- struct frmnode
- {
- int pno;
- }frames[20];
- int n;
- int page_found(int pno)
- {
- int fno;
- for(fno=0; fno<n; fno++)
- {
- if(frames[fno].pno==pno)
- return fno;
- }
- return -1;
- }
- int get_free_frames()
- {
- int fno;
- for(fno=0; fno<n; fno++)
- {
- if(frames[fno].pno== -1)
- return(fno);
- }
- return(-1);
- }
- int get_fifo_frame()
- {
- static int fno = -1;
- fno = (fno+1)%n;
- return(fno);
- }
- int main()
- {
- int p_request[] = {5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
- int size = sizeof(p_request)/4;
- int page_faults = 0, i, j, fno;
- printf("\nHow many frames:\t");
- scanf("%d", &n);
- for(i=0; i<n; i++)
- {
- frames[i].pno = -1;
- }
- printf("\nPageNO Page Frames Page Faults");
- printf("\n--------------------------------------------------------");
- for(i=0; i<size; i++)
- {
- j=page_found(p_request[i]);
- if(j == -1)
- {
- page_faults++;
- j = get_free_frames();
- if(j == -1)
- j = get_fifo_frame();
- frames[j].pno = p_request[i];
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno<n; fno++)
- printf("%4d",frames[fno].pno);
- printf("\tYES");
- }
- else
- {
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno < n; fno++)
- printf("%4d",frames[fno].pno);
- printf("\t NO");
- }
- }
- printf("\n--------------------------------------------------------");
- printf("\nNumber of Page Faults = %d", page_faults);
- printf("\n");
- }
2) Implement LRU
CODE:
👇
- #include<stdio.h>
- struct frmnode
- {
- int pno,counter;
- }
- frames[20];
- int n;
- int page_found(int pno)
- {
- int fno;
- for(fno=0;fno<n;fno++)
- {
- if(frames[fno].pno==pno)
- return fno;
- }
- return -1;
- }
- int get_free_frame()
- {
- int fno;
- for (fno=0;fno<n;fno++)
- {
- if(frames[fno].pno==-1)
- return(fno);
- }
- return(-1);
- }
- int get_lru_frame()
- {
- int lrufno=0,fno;
- for(fno=1;fno<n;fno++)
- {
- if(frames[fno].counter<frames[lrufno].counter)
- lrufno=fno;
- }
- return lrufno;
- }
- void main()
- {
- int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
- int size=sizeof(p_request)/4,currtime;
- int page_faults=0,i,j,fno;
- printf("\n How many Frame: ");
- scanf("%d",&n);
- for(i=0;i<n;i++)
- {
- frames[i].pno=-1;
- }
- printf("\nPageNo PageFrames PageFault");
- printf("\n------------------------------------------------");
- currtime=0;
- for(i=0;i<size;i++)
- {
- j=page_found(p_request[i]);
- if(j==-1)
- {
- page_faults++;
- j=get_free_frame();
- if(j==-1)
- j=get_lru_frame();
- frames[j].pno=p_request[i];
- frames[j].counter=currtime;
- printf("\n%4d\t",p_request[i]);
- for(fno=0;fno<n;fno++)
- printf("%4d:%2d",frames[fno].pno,frames[fno].counter);
- printf("\t:YES");
- }
- else
- {
- frames[j].counter=currtime;
- printf("\n%4d\t",p_request[i]);
- for(fno=0;fno<n;fno++)
- printf("%4d:%2d",frames[fno].pno,frames[fno].counter);
- printf("\t:NO");
- }
- currtime++;
- }
- printf("\n------------------------------------------------");
- printf("\n Number of page_Faults=%d",page_faults);
- printf("\n");
- }
Set B:
I. Write the simulation program to implement demand paging and show the page
scheduling and total number of page faults for the following given page reference string.
Give input n as the number of memory frames.
Reference String : 12,15,12,18,6,8,11,12,19,12,6,8,12,15,19,8
1) Implement MFU
CODE:
👇
- #include<stdio.h>
- struct node
- {
- int pno,frequency;
- }
- frames[20];
- int n;
- int page_found(int pno)
- {
- int fno;
- for(fno=0;fno<n;fno++)
- {
- if(frames[fno].pno==pno)
- return fno;
- }
- return -1;
- }
- int get_mfu_frame()
- {
- int selfno=0,fno;
- for(fno=1; fno<n; fno++)
- {
- if(frames[fno].frequency>frames[selfno].frequency)
- selfno=fno;
- }
- return selfno;
- }
- int get_free_frame()
- {
- int fno;
- for(fno=0; fno<n; fno++)
- {
- if(frames[fno].pno==-1)
- return(fno);
- }
- return(-1);
- }
- void main()
- {
- int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
- int size=15;
- int page_fault=0,i,j,fno;
- printf("\nHow many frames :");
- scanf("%d",&n);
- for(i=0; i<n; i++)
- {
- frames[i].pno=-1;
- frames[i].frequency=0;
- }
- printf("\nPageNo PageFrames PageFault");
- printf("\n----------------------------------------------------------");
- for(i=0; i<size; i++)
- {
- j=page_found(p_request[i]);
- if(j==-1)
- {
- j=get_free_frame();
- if(j==-1)
- j=get_mfu_frame();
- page_fault++;
- frames[j].pno=p_request[i];
- frames[j].frequency++;
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno<n; fno++)
- printf("%4d:%2d\t",frames[fno].pno,frames[fno].frequency);
- printf("YES");
- }
- else
- {
- frames[j].frequency++;
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno<n; fno++)
- printf("%4d:%2d\t",frames[fno].pno,frames[fno].frequency);
- printf("NO");
- }
- }
- printf("\n-------------------------------------------------------");
- printf("\nNumber of Page Faults=%d",page_fault);
- }
Set C:
I. Write the simulation program to implement demand paging and show the page
scheduling and total number of page faults for the following given page reference string.
Give input n as the number of memory frames.
Reference String: 2,5,2,8,5,4,1,2,3,2,6,1,2,5,9,8
1) Implement MRU
CODE:
👇
- #include<stdio.h>
- struct frmnode
- {
- int pno,counter;
- }
- frames[20];
- int n;
- int page_found(int pno)
- {
- int fno;
- for(fno=0;fno<n;fno++)
- {
- if(frames[fno].pno==pno)
- return fno;
- }
- return -1;
- }
- int get_free_frame()
- {
- int fno;
- for(fno=0; fno<n; fno++)
- {
- if(frames[fno].pno==-1)
- return(fno);
- }
- return(-1);
- }
- int get_mru_frame()
- {
- int mrufno=0,fno;
- for(fno=1; fno<n; fno++)
- {
- if(frames[fno].counter>frames[mrufno].counter)
- mrufno=fno;
- }
- return mrufno;
- }
- void main()
- {
- int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
- int size=sizeof(p_request)/4,currtime;
- int page_fault=0,i,j,fno;
- printf("\nHow many frames :");
- scanf("%d",&n);
- for(i=0; i<n; i++)
- {
- frames[i].pno=-1;
- }
- printf("\nPageNo PageFrames PageFault");
- printf("\n----------------------------------------------------------");
- currtime=0;
- for(i=0; i<size; i++)
- {
- j=page_found(p_request[i]);
- if(j==-1)
- {
- page_fault++;
- j=get_free_frame();
- if(j==-1)//no free frame -do page replacement
- j=get_mru_frame();
- frames[j].pno=p_request[i];//load page in frame
- frames[j].counter=currtime;
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno<n; fno++)
- printf("%4d:%2d\t",frames[fno].pno,frames[fno].counter);
- printf("YES");
- }
- else
- {
- frames[j].counter=currtime;
- printf("\n%4d\t",p_request[i]);
- for(fno=0; fno<n; fno++)
- printf("%4d:%2d\t",frames[fno].pno,frames[fno].counter);
- printf("NO");
- }
- currtime++;
- }
- printf("\n-------------------------------------------------------");
- printf("\nNumber of Page Faults=%d",page_fault);
- }
Comments
Post a Comment