操作系统逻辑地址转换

  • 2017-12-21
  • 41
  • 0

某系统程序空间与物理空间都是2GB,页面大小为4KB。已知某进程的页表如下,请编写程序模拟分页系统的地址变换过程。要求分为公式法和硬拼法两种方式计算并对比。

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define PageSize 4096
//自行判断地址是否越界
int main() {
    int BlockNum[10]={32102,443217,6723,8985,11238,29065,234205,45812,240561,300451};
    int logicalAddress;
    printf("请输入合法逻辑地址:");
    scanf("%d",&logicalAddress);
    printf("公式法得物理地址为:%d\n",
           BlockNum[logicalAddress/PageSize]*PageSize + logicalAddress%PageSize);
    printf("硬拼法得物理地址为:%d\n",
           ((BlockNum[(logicalAddress >> 12)] << 12) | ((logicalAddress << 20) >> 20)));
    return 0;
}

 

评论

还没有任何评论,你来说两句吧