zoukankan      html  css  js  c++  java
  • 实验三、页式地址重定位模拟

    实验三、页式地址重定位模拟

    一、实验目的:

    1、  用高级语言编写和调试模拟实现页式地址重定位。

    2、  加深理解页式地址重定位技术在多道程序设计中的作用和意义。

    二、实验原理:

    当进程在CPU上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。

    三、实验内容:

    1、  设计页表结构

    2、  设计地址重定位算法

    3、  有良好的人机对话界面

    三、程序调试:

    调试数据一:

    系统页号对应块号情况(页号——>块号):

     0--> 0   1-->42   2-->29   3-->15   4-->45   5-->31   6-->44   7-->43

     8-->41   9-->28  10--> 1  11-->30  12-->12  13-->24  14--> 6  15-->32

    16-->14  17-->27  18-->13  19-->46  20--> 7  21-->33  22-->10  23-->22

    24-->40  25--> 2  26-->51  27-->11  28-->39  29-->23  30-->49  31-->50

    32-->26  33-->16  34-->25  35--> 4  36-->47  37-->17  38--> 3  39-->48

    40-->52  41-->36  42-->58  43-->35  44-->57  45-->34  46-->21  47-->63

    48--> 5  49-->37  50-->18  51--> 8  52-->62  53-->56  54-->20  55-->54

    56-->60  57-->19  58-->38  59--> 9  60-->61  61-->55  62-->59  63-->53

    请输入逻辑地址(十进制):

    2500

    对应的物理地址为(十进制):

    30148

    Press any key to continue

    调试数据二:

    系统页号对应块号情况(页号——>块号):

     0--> 0   1-->42   2-->29   3-->15   4-->45   5-->31   6-->44   7-->43

     8-->41   9-->28  10--> 1  11-->30  12-->12  13-->24  14--> 6  15-->32

    16-->14  17-->27  18-->13  19-->46  20--> 7  21-->33  22-->10  23-->22

    24-->40  25--> 2  26-->51  27-->11  28-->39  29-->23  30-->49  31-->50

    32-->26  33-->16  34-->25  35--> 4  36-->47  37-->17  38--> 3  39-->48

    40-->52  41-->36  42-->58  43-->35  44-->57  45-->34  46-->21  47-->63

    48--> 5  49-->37  50-->18  51--> 8  52-->62  53-->56  54-->20  55-->54

    56-->60  57-->19  58-->38  59--> 9  60-->61  61-->55  62-->59  63-->53

    请输入逻辑地址(十进制):

    765497

    本次访问的地址已超出进程的地址空间,系统将产生越界中断!

    Press any key to continue

    // PageMessage.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    #include<iostream>
    #include<iomanip>
    using namespace std;
    
    #define pagesize  1024
    #define pagetablelength  64
    
    /*系统页表*/
    const int pagetable[pagetablelength]={0,42,29,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,25,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 _tmain(int argc, _TCHAR* argv[])
    {
        int logicaladdress=0;
        int pagenum=0;
        int w=0;
        cout<<"系统页号对应块号情况(页号——>块号):
    ";
        for(int i=0;i<64;i++)
        {        
            cout<<setw(2)<<i<<"-->"<<setw(2)<<pagetable[i]<<"  ";
            if(i%8==7)
                cout<<endl;
        }
        cout<<endl<<"请输入逻辑地址(十进制):
    ";
        cin>>logicaladdress;
    
        /*公式:
            物理地址=页号对应的页块*页面大小+页内偏移
            页内偏移=逻辑地址-页面大小*页面数*/
    
    
        pagenum=logicaladdress/pagesize;            //页面数
    
        w=logicaladdress-pagenum*pagesize;            //页面偏移
    
        if((logicaladdress/pagesize)>pagetablelength)
        {
            cout<<"本次访问的地址已超出进程的地址空间,系统将产生越界中断!
    ";
            return 0;
        }
        cout<<"对应的物理地址为(十进制):
    "<<pagetable[pagenum]*pagesize+w<<endl;
        
        system("pause");
        return 0;
    }
  • 相关阅读:
    实用脚本 2 Linux下定时执行脚本
    SSH原理与运用(一):远程登录
    SSH原理与运用(二):远程操作与端口转发
    注册页面
    注册页面2
    CSS實現網頁漸變背景
    SQL Server Log文件“減肥”方法
    发布一个jquery插件在Web下输入密码时提示大写锁定键
    新增流水号
    ftp图片上传
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/7790086.html
Copyright © 2011-2022 走看看