operating systems memory management paging scheme in c -


i'm working on operating system memory management paging scheme simulation in c,so here i've done far:

#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {   int alloc[50], base[50], frame[50], job[50];   int i, n, pa, fs, ps, nf, temp;  clrscr();     printf("\n\t\t paging\n");      printf("\n\t enter physical address space:");         scanf("%d",&pa);     printf("\n\t enter page size:");         scanf("%d",&ps);      nf=pa/ps;     printf("\n\t number of frames = %d",nf);     for(i=0;i<nf;i++)     {         alloc[i]=0;         printf("enter job number %d",i+1);             scanf("%d",job[i]);         if (  // if job can fit  ) {      // here job fit 1 one             temp=rand()%nf;             while( alloc[temp] == 1 )                 temp=rand()%nf;             alloc[temp]=1;             frame[i]=temp;      // main algo come here             base[i]=frame[i]*ps;             printf("\n %d\t\t %d\t\t %d\t\t",i,frame[i],base[i]);          } else {     //if job can not fit in memory             printf("job %d can't fit in memory.\n",i+1);             break;         }      } getch(); } 

i want implement below program require;

1.first when enter physical address , page size according page number can enter jobs

2.second each job can fit in number of pages according job size

3.third each time enter job memory block table (mbt) should reload , tells how memory available or occupied

4.and if there not enough space put larger job gives error

#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {   int ps,np,nf,log;   int alloc[50],base[50],frame[50],page[50];   int i,f,n,pa,fs,pno,add,offset;   int temp;   int f1; clrscr();     printf("\n\t\t paging\n");     printf("\n\t enter logical address space:");         scanf("%d",&log);     printf("\n\t enter page size:");         scanf("%d",&ps);     printf("\n\t enter physical address space:");         scanf("%d",&pa);     fs=ps;     np=log/ps;     nf=pa/fs;     printf("\n\t number of pages  = %d",np);     printf("\n\t number of frames = %d",nf);     for(i=0;i<nf;i++)         alloc[i]=0;     for(i=0;i<np;i++)     {         temp=rand()%nf;         while(alloc[temp]==1)             temp=rand()%nf;         alloc[temp]=1;         frame[i]=temp;     }     printf("\n page no \t frame no \t base address ");         for(i=0;i<np;i++)         {             base[i]=frame[i]*ps;             page[i]=i;             printf("\n%d\t\t %d\t %d\t\t",i,frame[i],base[i]);         } getch(); } 

the solution is

#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {   int mbt[50];   int i, j, k, pa, bs, bfree, bfree_mode, ps, js, var = 0, var2=0, jn, job;  clrscr();     printf("\n\t\t paging\n");      printf("\n\t enter physical address space:");         scanf("%d",&pa);     printf("\n\t enter block size:");         scanf("%d",&bs);     bfree = pa / bs;     printf("\n\t number of blocks = %d\n",bfree);     bfree_mode = bfree;     for( = 0 ; < bfree ; i++ ) {         mbt[i] = 0;     }      printf("how many jobs want enter memory ?\n");         scanf("%d",&jn);        ( j = 0 ; j <= jn+2 ; j++  )  {          printf("enter %d job size :\n",j+1);             scanf("%d",&job);         k = var;         var = job / bs ;         if (job % bs !=0)             var +=1;         if ( var <= bfree ) {             var2 += var;             ( k ; k < var2 ; k++  ) {                 mbt[k] = j+1;             }             bfree -= var;             printf("mbt[0] = os reserved!\n");             ( = 1 ; < bfree_mode ; i++)                 printf("mbt[%d] = %d\n",i,mbt[i]);           }else if ( var > bfree ) {             printf("\nthe memory not enough %d job",j+1);             break;           }     }  getch(); } 

Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -