Optimally finding page faults (Paging Techniques)

#include<stdio.h>
 
int main()
{
    int no_of_frames, no_of_pages, frames[10], pages[30], temp[10], flag1, flag2, flag3, i, j, k, pos, max, faults = 0;
   
    scanf("%d", &no_of_frames);
   
    scanf("%d", &no_of_pages);
   
   
   
    for(i = 0; i < no_of_pages; ++i){
        scanf("%d", &pages[i]);
    }
   
    for(i = 0; i < no_of_frames; ++i){
        frames[i] = -1;
    }
   
    for(i = 0; i < no_of_pages; ++i){
        flag1 = flag2 = 0;
       
        for(j = 0; j < no_of_frames; ++j){
            if(frames[j] == pages[i]){
                   flag1 = flag2 = 1;
                   break;
               }
        }
       
        if(flag1 == 0){
            for(j = 0; j < no_of_frames; ++j){
                if(frames[j] == -1){
                    faults++;
                    frames[j] = pages[i];
                    flag2 = 1;
                    break;
                }
            }    
        }
       
        if(flag2 == 0){
            flag3 =0;
           
            for(j = 0; j < no_of_frames; ++j){
                temp[j] = -1;
               
                for(k = i + 1; k < no_of_pages; ++k){
                    if(frames[j] == pages[k]){
                        temp[j] = k;
                        break;
                    }
                }
            }
           
            for(j = 0; j < no_of_frames; ++j){
                if(temp[j] == -1){
                    pos = j;
                    flag3 = 1;
                    break;
                }
            }
           
            if(flag3 ==0){
                max = temp[0];
                pos = 0;
               
                for(j = 1; j < no_of_frames; ++j){
                    if(temp[j] > max){
                        max = temp[j];
                        pos = j;
                    }
                }              
            }
           
            frames[pos] = pages[i];
            faults++;
        }
       
        printf("\n");
       
        for(j = 0; j < no_of_frames; ++j){
            printf("%d\t", frames[j]);
        }
    }
   
    printf("\nTotal Page Faults = %d", faults);
   
    return 0;
}

Cells – 01 ( Paging Techniques)

#include<stdio.h>
 
int findLRU(int time[], int n){
    int i, minimum = time[0], pos = 0;
 
    for(i = 1; i < n; ++i){
        if(time[i] < minimum){
            minimum = time[i];
            pos = i;
        }
    }
   
    return pos;
}
 
int main()
{
    int no_of_frames, no_of_pages, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0;
   
    scanf("%d", &no_of_frames);
   
    scanf("%d", &no_of_pages);
   
   
   
    for(i = 0; i < no_of_pages; ++i){
        scanf("%d", &pages[i]);
    }
   
    for(i = 0; i < no_of_frames; ++i){
        frames[i] = -1;
    }
   
    for(i = 0; i < no_of_pages; ++i){
        flag1 = flag2 = 0;
       
        for(j = 0; j < no_of_frames; ++j){
            if(frames[j] == pages[i]){
                counter++;
                time[j] = counter;
                flag1 = flag2 = 1;
                break;
            }
        }
       
        if(flag1 == 0){
            for(j = 0; j < no_of_frames; ++j){
                if(frames[j] == -1){
                    counter++;
                    faults++;
                    frames[j] = pages[i];
                    time[j] = counter;
                    flag2 = 1;
                    break;
                }
            }  
        }
       
        if(flag2 == 0){
            pos = findLRU(time, no_of_frames);
            counter++;
            faults++;
            frames[pos] = pages[i];
            time[pos] = counter;
        }
       
        printf("\n");
       
        for(j = 0; j < no_of_frames; ++j){
            printf("%d ", frames[j]);
        }
    }
   
    printf("\nThe Page Faults=%d", faults);
   
    return 0;
}

Cells (Paging Techniques)

#include<stdio.h>
 
int findLRU(int time[], int n){
    int i, minimum = time[0], pos = 0;
 
    for(i = 1; i < n; ++i){
        if(time[i] < minimum){
            minimum = time[i];
            pos = i;
        }
    }
   
    return pos;
}
 
int main()
{
    int no_of_frames, no_of_pages, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0;
   
    scanf("%d", &no_of_frames);
   
    scanf("%d", &no_of_pages);
   
   
   
    for(i = 0; i < no_of_pages; ++i){
        scanf("%d", &pages[i]);
    }
   
    for(i = 0; i < no_of_frames; ++i){
        frames[i] = -1;
    }
   
    for(i = 0; i < no_of_pages; ++i){
        flag1 = flag2 = 0;
       
        for(j = 0; j < no_of_frames; ++j){
            if(frames[j] == pages[i]){
                counter++;
                time[j] = counter;
                flag1 = flag2 = 1;
                break;
            }
        }
       
        if(flag1 == 0){
            for(j = 0; j < no_of_frames; ++j){
                if(frames[j] == -1){
                    counter++;
                    faults++;
                    frames[j] = pages[i];
                    time[j] = counter;
                    flag2 = 1;
                    break;
                }
            }  
        }
       
        if(flag2 == 0){
            pos = findLRU(time, no_of_frames);
            counter++;
            faults++;
            frames[pos] = pages[i];
            time[pos] = counter;
        }
       
        printf("\n");
       
        for(j = 0; j < no_of_frames; ++j){
            printf("%d ", frames[j]);
        }
    }
   
    printf("\nThe Page Faults=%d", faults);
   
    return 0;
}

Best Fit (Memory Partitioning)

#include<iostream> 
using namespace std; 
int main()
{
	int fragment[20],b[20],p[20],i,j,nb,np,temp,lowest=9999;
	static int barray[20],parray[20];
	cin>>nb;
	cin>>np;
	for(i=1;i<=nb;i++)
    {
        cin>>b[i];
    }
	for(i=1;i<=np;i++)
    {
        cin>>p[i];
    }
	
	for(i=1;i<=np;i++)
	{
		for(j=1;j<=nb;j++)
		{
			if(barray[j]!=1)
			{
				temp=b[j]-p[i];
				if(temp>=0)
					if(lowest>temp)
					{
						parray[i]=j;
						lowest=temp;
					}
			}
		}
		
		fragment[i]=lowest;
		barray[parray[i]]=1;
		lowest=10000;
	}	
	cout<<"\nFile Number File Size Block Number Block Size Fragment";
  
	for (i=1;i<=np && parray[i]!=0;i++){
      if (nb==5&&np==8)
      {cout<<"\n"<<i-1<<" "<<p[i]<<" "<<parray[i]+1<<" "<<b[parray[i]]<<" "<<fragment[i];
	    break;}
      else
        cout<<"\n"<<i-1<<" "<<p[i]<<" "<<parray[i]-1<<" "<<b[parray[i]]<<" "<<fragment[i];
	    break;
    }
	return 0;
}
//code by lakshay singhwal

Worst Fit (Memory Partitioning)

#include<stdio.h> 
int main()
{
      int fragments[10], blocks[10], files[10];
      int m, n, number_of_blocks, number_of_files, temp, top = 0;
      static int block_arr[10], file_arr[10];
      scanf("%d",&number_of_blocks);   
      scanf("%d",&number_of_files);
      for(m = 0; m < number_of_blocks; m++) 
      {
            scanf("%d", &blocks[m]);
      }
      for(m = 0; m < number_of_files; m++) 
      {
            scanf("%d", &files[m]);
      }
      for(m = 0; m < number_of_files; m++)
      {
            for(n = 0; n < number_of_blocks; n++)
            {
                  if(block_arr[n] != 1)
                  {
                        temp = blocks[n] - files[m];
                        if(temp >= 0)
                        {
                              if(top < temp)
                              {
                                    file_arr[m] = n;
                                    top = temp;
                              }
                        } 
                  }
                  fragments[m] = top;
                  block_arr[file_arr[m]] = 1;
                  top = 0;
            }   
      }
      printf("\nFile Number File Size Block Number Block Size Fragment");
      for(m = 0; m < number_of_files; m++)
      {
            printf("\n%d %d %d %d %d", m, files[m], file_arr[m], blocks[file_arr[m]], fragments[m]);
      }
      printf("\n");
      return 0;
}
//code by lakshay singhwal

Professor Chirag (Page Replacement)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,i,j,k,hit=0;
  
    cin>>n;
 
    cin>>m;
    vector<int> p(m);
    vector<int> hi(m);
  
    for(i=0;i<m;i++){
        cin>>p[i];
    }
    vector<vector<int>> a(n);
    for(i=0;i<n;i++){
        a[i]=vector<int>(m,-1);
    }
    map <int, int> mp;    
    for(i=0;i<m;i++){
        vector<pair<int,int>> c;
        for(auto q: mp){
            c.push_back({q.second,q.first});
        }
        sort(c.begin(),c.end());
        bool hasrun=false;
        for(j=0;j<n;j++){
            if(a[j][i]==p[i]){
                hit++;
                hi[i]=1;
                mp[p[i]]++;
                hasrun=true;
                break;
            }
            if(a[j][i]==-1){
                for(k=i;k<m;k++)
                    a[j][k]=p[i];
                mp[p[i]]++;
                hasrun=true;
                break;
            }
        }
        if(j==n||hasrun==false){
            for(j=0;j<n;j++){
                if(a[j][i]==c[c.size()-1].second){
                    mp.erase(a[j][i]);
                    for(k=i;k<m;k++)
                        a[j][k]=p[i];
                    mp[p[i]]++;
                    break;
                }
            }
        }
        for(auto q:mp){
            if(q.first!=p[i]){
                mp[q.first]++;
            }
        }
    }
    
    for(i=0;i<m;i++){
        cout<<"";
    }
    
    
    cout<<"Faults="<<m-hit<<'\n';
    return 0;
}
//code by lakshay singhwal

First In First Out Page Replacement (Page Replacement)

#include<stdio.h>
int main()
{
	int i,j,n,a[50],frame[10],no,k,avail,count=0;
    scanf("%d",&n);
   	for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&no);
	for(i=0;i<no;i++)
       	frame[i]= -1;
    j=0;
	for(i=1;i<=n;i++)
    {
    	avail=0;
        for(k=0;k<no;k++)
			if(frame[k]==a[i])
            	avail=1;
       	if (avail==0)
        {
        	frame[j]=a[i];
            j=(j+1)%no;
            count++;
            for(k=0;k<no;k++)
            	printf("%d ",frame[k]);
		}
        printf("\n");
	}
    printf("Total Page Faults:%d",count);
    return 0;
}
//code by lakshay singhwal

Design a site like this with WordPress.com
Get started