精华内容
下载资源
问答
  • 分页地址变换

    千次阅读 2010-01-11 23:59:00
    分页地址变换#include#include#includeusing namespace std;#define pageSize 2048#define addressBit 32#define maxPageAddress 2048#define maxPageCount 2097152int BinaryToDecimal(string str){

    分页地址变换

    展开全文
  • 操作系统模拟分页地址变换,比较详细的 操作系统模拟分页地址变换,比较详细的
  • 分页地址变换模拟程序前言题目题目解析代码实现代码运行结果 前言 参考代码 题目 某分页系统中,程序空间与物理空间都是2GB,页面大小为4KB。已知某进程的页表如下,请编写程序模拟分页系统的地址变换过程。要求...

    前言

    参考代码

    题目

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

    要求:

    (1)用户输入逻辑地址,程序输出对应物理地址

    (2)用户输入的逻辑地址可以是十进制也可以是十六进制

    (3)输出的物理地址可以是十进制也可以是十六进制

    (4)对比公式法和硬拼法的计算结果,看看是否一致。
    在这里插入图片描述

    题目解析

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    物理地址 = 块号页面大小 + 块内地址 = 块号页面大小 + 页内地址

    代码实现

    #include<stdio.h>
    
    int pageTable[10]={32102,443217,6723,8985,11238,
                       29065,234205,45812,240561,300451};
    
    //PageSize
    #define PageSize 4096
    #define PageDigit 12
    
    //virtual address
    int formulaPaging(int VA) {
        //virtual page number
        int VPN = VA/PageSize;
        //virtual page offset
        int VPO = VA%PageSize;
        //physical page offset
        int PPN = pageTable[VPN];
        //physical address
        return PPN*PageSize + VPO;
    }
    
    int attachPaging(int VA) {
        //virtual page number
        int VPN = VA>>PageDigit;
        //virtual page offset
        int VPO = VA&((1<<(PageDigit))-1);
        //physical page offset
        int PPN = pageTable[VPN];
        //physical address
        return (PPN<<PageDigit) + VPO;
    }
    
    int main() {
        int VA;
    
        printf("请输入逻辑地址:");
        scanf("%d",&VA);
        printf("-----------------formulaPaging---------------------\n");
        printf("物理地址为:%d\n",formulaPaging(VA));
        printf("十六进制物理地址为:%x\n",formulaPaging(VA));
        printf("-----------------attachPaging---------------------\n");
        printf("物理地址为:%d\n",attachPaging(VA));
        printf("十六进制物理地址为:%x\n",attachPaging(VA));
    
    }
    
    
    

    代码运行结果

    在这里插入图片描述

    展开全文
  • 其中,有效位=1表示页面在内存,0表示页面不在内存,请将逻辑地址OX050c、OX1302、OX1F71、OX2C57、OX4400转换为对应的物理地址并写出计算过程![图片]...
  • 页目录和页表重合与分页地址转换

    千次阅读 2009-02-01 01:29:00
    写得不错,转下,来自JIURL大牛的 页目录的地址为什么是C0300000,1个页目录加上1024个页表为什么只使用了1024*4K的地址空间 对于要映射整个4G地址空间,是需要1024个页表和1个页目录的,每个都是4KB大小,也就是...

    写得不错,转下,来自JIURL大牛的

     

     

     

    页目录的地址为什么是C0300000,1个页目录加上1024个页表为什么只使用了1024*4K的地址空间

        对于要映射整个4G地址空间,是需要1024个页表和1个页目录的,每个都是4KB大小,也就是 1024*4KB+1*4KB=4MB+4KB。而实际中Win2k把每个进程的页目录和页表映射到了从 0xC0000000到0xC03FFFFF 这4MB的地址空间中(页目录在0xC0300000开始的4K)。注意是4MB地址空间而不是4MB+4KB。1024个页表和1个页目录,应该是需要 (1024+1)*4KB的地址空间的。而现在Win2k只使用了1024*4KB的地址空间这是为什么?

        原因就是页表被映射到了进程的地址空间。
        如果页表和页目录没有被映射到进程的地址空间中,而一个进程的4GB地址空间又都映射了物理内存的话,那么就确实需要1024个物理页来存放页表,和另外1个物理页来存放页目录,也就是需要(1024+1)*4KB的物理内存。
    但是页表被映射到了进程的地址空间中,这导致了一个页表的内容和页目录的内容是完全一样的,正是这种完全相同,使得将1024个页表加1个页目录映射到地址空间只需要1024*4KB的地址空间,其中的一个页表和页目录完全重合了。
        一个页表1024项,每项对应4KB地址空间,一个页表对应4MB的地址空间。1024个对应了整个4GB地址空间。1024个页表也被映射到了从 0xC0000000到0xC03FFFFF 的4MB地址空间中。这4MB地址空间也是由一个页表来对应的。我们来看对应于从 0xC0000000到0xC03FFFFF 这4MB的地址空间的页表。该页表有1024项,每项对应一页的地址空间,表明是否在物理内存中,如果在,物理地址是多少。而这个页表是对应页表所在的 4MB地址空间的,所以它的每一项对应的一页,正是每个页表所在的页。也就是说这个页表的每一项指出了一个页表是否有物理内存映射,如果有的话,物理地址 是多少。这正是页目录所做的工作。把1024个页表映射到了地址空间,导致了1024个页表中的一个的内容和页目录完全重合,它既是页目录又是页表。所以 1个页目录加上1024个页表只使用了1024*4K的地址空间。

        页表被映射到地址空间的什么地方,是由操作系统的设计者决定的,他会综合考虑各种问题,作出最后的决定。不过一旦页表所在的地址空间的地址决定了,那么页目录的地址也就决定了,除非他打算多使用一页的地址空间保存和现在一个页表中完全相同的内容。

        Win2k中把页表映射到了从 0xC0000000到0xC03FFFFF 的4MB地址空间中,我们来计算一下负责这4M地址空间的那个页表的地址,那个页表就是和页目录重合的页表。4MB地址空间的首地址0xC0000000 显然是由该页表的第一项负责的,我们用这个地址来计算。PTE_Address=(VirtualAddress>> 12)*4+0xC0000000,
    (0xC0000000>>12)*4+0xC0000000=0xC0000*4+0xC0000000=0x300000+0xC0000000=0xC0300000
    正是页目录的虚拟地址。


    =====================

     

    1 虚拟地址->虚拟地址对应的PDE地址

    PDE_Address=(VirtualAddress>>22)*4+0xC0300000 

    2 虚拟地址->虚拟地址对应的PTE地址

    PTE_Address=(VirtualAddress>>12)*4+0xC0000000 

    3 虚拟地址->物理地址

    如果 虚拟地址大于等于0x80000000 并且小于0xa0000000(在 Large Page 部分),
    直接用虚拟地址减去0x80000000就得到了物理地址。
    其他情况
    取得该虚拟地址的PDE,判断是否有效。
    有效的话,取得该虚拟地址的PTE,判断是否有效。
    有效的话,将PTE的低12位清0加上虚拟地址的低12位就得到了物理地址。
    由于页表和页目录在系统地址空间中,访问需要程序运行在ring0,所以要测试的话,需要写驱动程序。

    unsigned int PDE;
    unsigned int PTE;

    if(VirtualAddress>=0x80000000 && VirtualAddress<0xa0000000)
    {
    PhysicalAddress=VirtualAddress-0x80000000;
    }
    else
    {
    PDE=*(unsigned int*)((VirtualAddress>>22)*4+0xC0300000);
    if(PDE&0x00000001)
    {
    PTE=*(unsigned int*)((VirtualAddress>>12)*4+0xC0000000);
    if(PTE&0x00000001)
    {
    PhysicalAddress=((PTE&0xFFFFF000)+(VirtualAddress&0x00000FFF));//
    ((PTE&0xFFFFF000)这里是取PTE的高20位,是物理地址的起始,(VirtualAddress&0x00000FFF)取得偏移
    }
    }
    }

    展开全文
  • 分页系统的地址变换机构

    千次阅读 2017-06-05 11:26:38
    ¦1)分页地址变换机构将相对地址分为(页号,页内地址)   页号 P=INT[A/L];页内位移量  W=AMOD L; ¦ 2)读取PTR中的页表长度。  IF页号页表长度 THENGOTO 3)ELSE越界中断; ¦ 3)读取PTR中的页表...

    地址变换机构


    地址变换过程


    ¦1)分页地址变换机构将相对地址分为(页号,页内地址)

        P=INT[A/L];页内位移量 W=AMODL

    ¦2)读取PTR中的页表长度。

            IF页号<页表长度THENGOTO 3ELSE越界中断;

    ¦3)读取PTR中的页表始址,计算:

              页表始址+页号×页表项长度  

           得到该页表项在页表中的位置,对应得到该页的物理块号,装入物理地址寄存器。

    ¦4)将逻辑地址中的页内地址送入物理地址寄存器的块内地址字段,拼接,得到最后的物理地址:块号×块长度+W




    练习

    在采用页式存储管理的系统中,主存容量为64K,作业J的逻辑空间为4页(每页1K),且已知该作业的页表为:

    试借助地址变换图(要求画出)求出十进制逻辑地址3500对应的物理地址。

    解:系统采用每页1K,即页内地址为10位。首先从逻辑地址中转换出页号和页内偏移,即3500对应页号为:INT(3500/1024)=3;页内偏移为:3500 Mod 1024=428,对应块号为7,每块大小和页大小相同,则物理地址=7*1024+428=7596

    
    
    
    展开全文
  • 模拟计算机操作系统中的分页地址变换,当产生中断时采用FIFO算法进行页面置换.
  • 分页管理地址转换器C语言.doc
  • 程序模拟分页系统的地址变换过程

    万次阅读 2015-11-29 21:33:23
    注:下面分析都是建立在基本分页存储管理方式的基本地址变换机构基础之上的。 题目: 某系统程序空间与物理空间都是2GB,页面大小为4KB。已知某进程的页表如下,请编写程序模拟分页系统的地址变换过程。 其实...
  • 专业资料 实验二 设计一个分页内存管理的地址转换器 班级14级2班 姓名侯XX 学号201442060* 实验目的 用C/C++/JAVA实现分页内存管理中的逻辑地址转换成物理地址的过程 二实验内容 1输入 随机输入某页式系统的页面大小...
  • 基本分页分段的地址转换

    千次阅读 2020-05-07 17:46:12
    分页系统或分段、段页式系统的地址转换 基于二进制/16进制逻辑地址转换 若给定16进制逻辑地址,先转换为二进制即可。 基于十进制逻辑地址转换 ...
  • 用java编程实现的基本分页式的地址变换,用于模拟操作系统相关内容。
  • 操作系中分页式管理总的逻辑地址到物理地址的映射转换算法 C语言
  • 操作系统【分页系统 习题(逻辑地址、物理地址 转换)】
  • 段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址转换分页管理机制实现线性地址到物理地址转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性...
  • 分页存储管理系统中进行地址转换时,地址变换机构将自动把逻辑地址转化为页号和页内地址,如果页号不小于页表长度,则产生越界中断;否则便以页号为索引去检索页表,从中得到对应的块号,并把块号和页内位移分别...
  • 创建请求页表,通过编程模拟缺页中断和地址变换,实现请求调页功能和页面置换功能。
  • 在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。页面置换算法至少应实现先进先出(FIFO)、最近最久未使用(LRU)等算法。
  • 分页内存管理——虚拟地址到物理地址转换

    万次阅读 多人点赞 2018-08-10 23:30:57
    此篇博客内容在于着重帮助读者明白在分页内存管理下,虚拟地址和物理地址转换计算是怎么进行的。 有关分页内存管理的其他知识请事先参阅有关资料。^_^ 一、在计算之前需要了解如下知识: 1.对每个程序而言,...
  • 分页存储 -- 地址变换机构

    万次阅读 2016-06-19 13:58:44
    ------ 为了能将用户地址空间中的逻辑地址变换为内存空间中的物理地址,在系统中必须设置地址变换机构。 该机构的基本任务是:实现从...无需再进行转换,因此,地址变换机构的任务实际上只是将逻辑地址中的页号,转换
  • 文章目录0.思维导图1.页表寄存器地址变换过程2.对页表项大小的进一步讨论 0.思维导图 1.页表寄存器 地址变换过程 一道例题加深印象: 2.对页表项大小的进一步讨论 参考:《王道操作系统》 ...
  • 请求分页式系统地址转换

    千次阅读 2013-11-04 08:47:13
    基本分页存储管理方式中关于逻辑地址和物理地址转换    【例1】考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:  (1)逻辑地址需要多少二进制位表示?  (2...
  • 分页管理地址转换器(C语言)实验二 设计一个分页内存管理的地址转换器班级:14级2班 姓名:侯XX 学号:201442060**实验目的用C/C++/JAVA实现分页内存管理中的逻辑地址转换成物理地址的过程。二、实验内容1)输入 随机...
  • 分页系统的地址变换

    千次阅读 2012-04-15 09:30:43
    逻辑地址 = 页号 + 页内地址 A = P 拼接(+)W 设页的大小为L P = A/L W = A%L 但一般是通过二进制的方法,首先根据页大小确定页内地址的位数,则剩下的就是页号,在页表中查找页号对应的块号为b,则...
  • 分页地址换算

    2018-01-16 16:31:20
    分页地址换算、分段式地址换算、段页式地址换算。。。
  • 结合操作系统(汤子瀛版)和王道版操作系统,对内存管理中,分页存储管理方式的地址转换进行整理总结(即根据逻辑地址寻找物理地址) 一、基本概念 1.逻辑地址:(工具书中的解释) (1)在有地址变换功能的...
  • 完成逻辑地址转换成相应的物理地址的过程。 1、建立一张位示图,用来模拟内存的分配情况,利用随机数产生一组0和1的数对应内存的使用情况。 2、输入块(页)的大小,通过模拟位示图为本作业分配内存空间建立相应的...
  • 模拟分页式存储管理中硬件的地址转换和产生缺页中断。
  • 段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址转换分页管理机制实现线性地址到物理地址转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性...
  • 实验ppt

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,858
精华内容 48,743
关键字:

分页地址变换