操作系统---页式地址重定位

页式地址重定位

要求:

一、实验目的:
1、 用高级语言编写和调试模拟实现页式地址重定位。
2、 加深理解页式地址重定位技术在多道程序设计中的作用和意义。
二、实验原理:
当进程在CPU上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。
三、实验内容:
1、 设计页表结构
2、 设计地址重定位算法
3、 有良好的人机对话界面


#include<bits/stdc++.h>
using namespace std;
#define pagesize  4096
#define pagetablelength  64
/*系统页表*/
const int pagetable[pagetablelength]={0,42,25,15,45,31,44,43,
                               41,28,1,30,12,24,6,32,
                               14,27,13,46,7,33,10,22,
                               40,2,51,11,39,23,49,50,
                               26,16,29,4,47,17,3,48,
                               52,36,58,35,57,34,21,63,
                               5,37,18,8,62,56,20,54,
                               60,19,38,9,61,55,59,53};

int main()
{
    int logicaladdress=0;
    int pagenum=0;
    int w=0;
    cout<<"系统页号对应块号情况(页号——>块号):\n";
    for(int i=0;i<64;i++)
    {        
        cout<<setw(2)<<i<<"-->"<<setw(2)<<pagetable[i]<<"  ";
        if(i%8==7)
            cout<<endl;
    }
    cout<<endl<<"请输入逻辑地址(十进制):\n";
    cin>>logicaladdress;

    /*公式:
        物理地址=页号对应的页块*页面大小+页内偏移
        页内偏移=逻辑地址-页面大小*页面数*/


    pagenum=logicaladdress/pagesize;            //页面数

    w=logicaladdress-pagenum*pagesize;            //页面偏移

    if((logicaladdress/pagesize)>pagetablelength)
    {
        cout<<"本次访问的地址已超出进程的地址空间,系统将产生越界中断!\n";
        return 0;
    }
    cout<<"对应的物理地址为(十进制):\n"<<pagetable[pagenum]*pagesize+w<<endl;
    
    system("pause");
    return 0;
}

对应截图如下:
在这里插入图片描述

公式:
物理地址=页号对应的页块页面大小+页内偏移
页内偏移=逻辑地址-页面大小
页面数

  • 11
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
地址定位操作系统是一种常见的内存管理技术,通常用于将虚拟内存地址转换为物理内存地址。在这种系统中,内存被划分为大小相等的页框,而程序使用的内存也被划分为相同大小的页面。每个页面都有一个唯一的页号,而每个页号都映射到一个特定的页框。 当程序引用一个虚拟地址时,操作系统将虚拟地址分解为页号和页内偏移量,并将页号映射到相应的页框。然后,操作系统将页内偏移量添加到页框的物理地址中,从而获得物理地址。 但是,当操作系统将进程从一个物理地址空间移动到另一个物理地址空间时,所有的虚拟地址都必须被新映射到新的物理地址。这个过程就被称为页表定位。 在页地址定位系统中,页表存储在主存储器中,并通过页表寄存器来访问。当一个程序引用一个虚拟地址时,处理器将虚拟地址中的页号发送到页表寄存器,并获取与该页号相关联的页表项。页表项包括该页号所映射的物理页框号。然后,处理器将物理页框号与虚拟地址中的页内偏移量组合,从而计算出物理地址。 当操作系统需要将一个进程从一个地址空间移动到另一个地址空间时,页表必须被更新,以便将旧的物理页框号映射到新的物理页框号。这个过程通常涉及到页表基址寄存器和页表长度寄存器的更新,以及所有虚拟地址新映射。 总之,页地址定位操作系统是一个基于分页内存管理的系统,它通过将虚拟地址映射到物理地址来管理内存。在这个系统中,页表被用来存储虚拟页号和物理页框号之间的映射关系,并且在地址空间移动时需要进行定位操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值