当前位置首页 > 信息公告

虚拟地址与数学地址的转换

更新时间:2023-11-03 文章作者:佚名 信息来源:网络整理 阅读次数:

1、拟地址与数学地址的转换已知一个虚拟地址则转换的过程如下:注意:*这儿讨论的以下普通模式分页的情况,也就是2级页表的情况*1.首先把虚拟地址拆分成3个部份低12位,中10位,高10位,换成2补码如下:->0100011000根据10,10,12的位数重新排列后->页目录索引0000000110,页表项索引1011110101,偏斜0换算成十六补码后可以得到如下结果页目录索引二6,页表项索引=0x2f5,偏斜=.按照当前的CR3寄存器中7Sd物理好资源网(原物理ok网)

2、的数学地址定位页目录表基址Cr3中储存的是化学地址,这个化学地址指向进程的页目录表基址,由此可以得到页目录表基址PDE=Cr3=.估算页表项的地址页表地址储存在页目录表PDE中的第6个项目中,也就是+4*6==,其中为该页表属性值,PTE=.估算页面化学地址我们要找的页面在这个页表中的第0x2f5项,所以虚拟地址所在的页的化学地址为+0x2f5*4==假定=0x7Sd物理好资源网(原物理ok网)

3、,页面的化学地址,表示的是页面属性5.估算最终的化学地址由虚拟地址分离的偏斜可以估算出最终的化学地址为+=.有了这样的抽像,一个程序,就可以使用比真实化学地址大得多的地址空间。拆东墙,补西墙,交行也是这样子做的,甚至多个进程可以使用相同的地址。不奇怪,由于转换后的化学地址并非相同的。一一可以把联接后的程序反编译看一下,发觉联接器早已为程序分配了一个地址,例如,要调用某个函数A,代码不是callA,而是call,也就是说,函数7Sd物理好资源网(原物理ok网)

4、A的地址己经被定出来了。没有这样的“转换”逻辑地址和物理地址的转换,没有虚拟地址的概念,这样做是根本行不通的。打住了,这个问题再说下去,就收不住了。逻辑地址为了兼容,将远古时代的段式显存管理方法保留了出来。逻辑地址指的是机器语言指令中,拿来指定一个操作数或则是一条指令的地址。以上例,我们说的联接器为A分配的这个地址就是逻辑地址。一一不过不好意思,这样说,似乎乂违反了Intel中段式管理中,对逻辑地址要求,“一个逻辑地址,是由一个段标示符加上一个指定段内相对地址的偏斜量,表示为段标识符:段内偏斜量,也就是说,上例中那种,应当7Sd物理好资源网(原物理ok网)

5、表示为A的代码段标示符:,这样,才完整一些”线性地址或也叫虚拟地址跟逻辑地址类似,它也是一个不真实的地址,假如逻辑地址是对应的硬件平台段式管理转换前地址的话,这么线性地址则对应了硬件页式显存的转换前地址。CPU将一个虚拟显存空间中的地址转换为化学地址,须要进行两步:首先将给定一个逻辑地址虽然是段内偏斜量,这个一定要理解!!,CPU要借助其段式显存管理单元,先将为个逻辑地址转换成一个线程地址,再借助其页式显存管理单元,转换为最终数学地址。这样做两次转换,的确是十分麻烦并且没有必要的,由于直接可以把线性地址抽像7Sd物理好资源网(原物理ok网)

6、给进程。之所以这样冗余,Intel完全是为了兼容而已。化学地址就是,机器内寻址的地址,包括RAM和ROM逻辑地址就是逻辑地址和物理地址的转换,程序运行在显存中,使用的地址。虚拟地址就是,cpu支持的显存空间远远小于机器寻址的大小,这种多下来的空间对于程序来说是可以用的,这个时侯的所有地址都称为虚拟地址化学地址:最小系统下的储存器的实际地址,通常只是由CPU显存控制器地址线可以管理的容量为最大地址,而实际上这个容量由地址形成的远小于实际存在的容量;实际的储存器容量所须要的地址显存控制器管理的容量;它的大小通常由芯片决定逻辑地址:相对程序员而言使用的地址,或说程序无需晓得具体的实际地址管理数,而只要在系统操作容许范围内使用就行了这时使用的是一种算法控制下的地址,实际上它只是借用地址概念形成的程序运行模式,它所要说明的是便捷,也就是一个线性的最好的程序指令排列形式。它的大小通常由操作系统决定虚拟地址:将具有储存功能的所有储存器不仅仅是最小系统概念下的,进行“统一”编址,而不考虑储存器之间的差别快慢等,这时的地址是一个比逻辑地址理会物理化的编号地址,它的大小等常常由应用程序决定谢谢您的阅读,祝您生活愉快。7Sd物理好资源网(原物理ok网)

发表评论

统计代码放这里