c语言中的操作系统内存管理分页方案

c语言中的操作系统内存管理分页方案,c,memory-management,operating-system,paging,C,Memory Management,Operating System,Paging,我正在C中进行操作系统内存管理分页方案模拟,以下是我迄今为止所做的工作: 解决办法是 #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

我正在
C
中进行操作系统
内存管理分页方案
模拟,以下是我迄今为止所做的工作:

解决办法是

#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 the physical address space:");
        scanf("%d",&pa);
    printf("\n\t Enter the Block size:");
        scanf("%d",&bs);
    bfree = pa / bs;
    printf("\n\t the number of blocks are = %d\n",bfree);
    bfree_mode = bfree;
    for( i = 0 ; i < bfree ; i++ ) {
        mbt[i] = 0;
    }

    printf("How many jobs do you want to enter to the memory ?\n");
        scanf("%d",&jn);
       for ( 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;
            for ( k ; k < var2 ; k++  ) {
                mbt[k] = j+1;
            }
            bfree -= var;
            printf("mbt[0] = OS Reserved!\n");
            for ( i = 1 ; i < bfree_mode ; i++)
                printf("mbt[%d] = %d\n",i,mbt[i]);


        }else if ( var > bfree ) {
            printf("\nThe Memory is not enough for the %d Job",j+1);
            break;
          }
    }

getch();
}
#包括
#包括
#包括
void main()
{
int-mbt[50];
inti,j,k,pa,bs,bfree,bfree_模式,ps,js,var=0,var2=0,jn,job;
clrsc();
printf(“\n\t\t分页\n”);
printf(“\n\t输入物理地址空间:”);
scanf(“%d”和&pa);
printf(“\n\t输入块大小:”);
scanf(“%d”和“bs”);
bfree=pa/bs;
printf(“\n\t块数=%d\n”,bfree);
bfree_mode=bfree;
对于(i=0;i#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 the logical address space:");
        scanf("%d",&log);
    printf("\n\t Enter the page size:");
        scanf("%d",&ps);
    printf("\n\t Enter the 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();
}
#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 the physical address space:");
        scanf("%d",&pa);
    printf("\n\t Enter the Block size:");
        scanf("%d",&bs);
    bfree = pa / bs;
    printf("\n\t the number of blocks are = %d\n",bfree);
    bfree_mode = bfree;
    for( i = 0 ; i < bfree ; i++ ) {
        mbt[i] = 0;
    }

    printf("How many jobs do you want to enter to the memory ?\n");
        scanf("%d",&jn);
       for ( 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;
            for ( k ; k < var2 ; k++  ) {
                mbt[k] = j+1;
            }
            bfree -= var;
            printf("mbt[0] = OS Reserved!\n");
            for ( i = 1 ; i < bfree_mode ; i++)
                printf("mbt[%d] = %d\n",i,mbt[i]);


        }else if ( var > bfree ) {
            printf("\nThe Memory is not enough for the %d Job",j+1);
            break;
          }
    }

getch();
}