当前位置:  技术问答>linux和unix

虚拟地址到物理地址转换是哪部分器件做的?在什么时间?

    来源: 互联网  发布时间:2017-05-20

    本文导语:  问题描述 某个变量A,他的逻辑地址是0x10000001 被映射到的物理地址是0x50000001 一条store 指令(假设存在这条指令) store  value address (把value的值存到address地址上) 在程序中有一条 指令1: store 125 0x10000001   问题: 1....


问题描述

某个变量A,他的逻辑地址是0x10000001
被映射到的物理地址是0x50000001

一条store 指令(假设存在这条指令) store  value address (把value的值存到address地址上)

在程序中有一条 指令1: store 125 0x10000001
 
问题:
1.在有操作系统(启用虚拟内存)的情况下,指令在进入cpu执行之前,是使用的虚拟地址还是物理地址?
也就是指令1 在取指之后,它的内容是store 125 0x1000001还是store 0x50000001?

2.虚拟地址到物理地址的转换是在指令执行前进行的还是执行之后(实际访存)的时候转换的?
(我感觉是在程序执行完之后访存时,如果这样的话cpu实际操作的是虚拟地址)

附加一个问题:
ARM中的虚拟地址(不同的物理芯片映射到连续的虚拟地址上)他们都需要MMU支持,跟OS中的虚拟地址有什么异同?

谢谢


|
你的问题我可以全部回复~~
1)应该说所有的CPU开启MMU后,都是访问虚拟地址;CPU是不知道物理地址的;
知道这个,你就对取指前取指后,没有疑问了吧,CPU本来就是处理的虚拟地址;然后地址再经过MMU处理,最终投递到物理地址总线。
2)linux下的虚拟内存空间按1:3分;上面的1G留给内核空间;然后内核空间的NORMAL区又是直接映射到物理内存地址;然后HIGH_MEMORY区是动态临时映射大于896M的内存区。

解释的对的话,忘给分。

|
是要在执行之后才去映射的,因为你要执行store 125 0x1000001, CPU要先读取的的逻辑地址,然后转换成线性地址,最后转换为物理地址然后再把125往物理地址上存储. 在程序里操作的都是逻辑地址, 根本不需要知道物理地址是多少. 

|

|
参考《深入理解linux内核》第二章 内存寻址

|
MMU  Memory Management Unit

|
这个问题我说不清了

|
我感觉操作系统里一般都是使用经过MMU映射的虚拟地址,真正需要把数据写到物理磁盘时再根据那个映射关系操作物理地址,操作系统里对物理寄存器进行操作都要先映射成虚拟地址,然后写值

    
 
 

您可能感兴趣的文章:

  • 求教:关于内核物理地址和虚拟地址的问题
  • 平时用&取到的地址是虚拟地址还是真是的物理地址?
  • 虚拟地址→物理地址变换问题
  • linux内存管理虚拟地址 逻辑地址 交换分区(swp)
  • X86下linux虚拟地址向物理地址的转换
  • s3c2440的虚拟地址和实际地址是如何转化的
  • Linux 物理地址转化成虚拟地址及IO_ADDRESS的用法
  • 谁搞得灵清虚拟地址与物理地址!帮帮忙啦
  • DSP芯片物理地址如何remap成内核虚拟地址
  • Linux内存映射 物理地址映射到虚拟地址
  • get_free_pages后获得的虚拟内存地址如何才能转换成物理地址?
  • 如何获得虚拟地址对应的物理地址?
  • 进程,线性地址(虚拟地址),kernel之间的关系
  • 关于外设的物理地址 和 虚拟地址。。。
  • 关于虚拟地址的问题......
  • 《计算机操作系统》 如何将虚拟地址1123456对应的物理地址
  • 如何获得虚拟机的ip地址
  • 虚拟机linux访问本地windowsip地址
  • Linux的虚拟地址空间
  • 如何在LINUX中获取进程中某个虚拟地址所在物理内存地址
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 64位的内核态物理虚拟地址转换
  • 怎么把虚拟路径转换为物理地址?
  • asp.net将绝对路径转换为虚拟路径的代码举例
  • 高手请进:32位虚拟地址经过页机制转换以后得到的物理地址是32位吗?那物理内存又是怎样编址的呢?
  • VPN虚拟局域网和本地局域网共存(连上vpn后正常打开网页)
  • 虚拟机的系统为Linux ,我在虚拟机下装了tomcat,我在虚拟机下可以访问tomcat的应用,但是为什么在本机访问不了虚拟机下的应用
  • VLAN(虚拟局域网)技术工作原理介绍
  • ARM ping不通虚拟机,虚拟机可以ping通ARM iis7站长之家
  • docker和VM虚拟机的区别以及如何用docker搭建基础设施
  • [虚拟机下安装linux]初次使用虚拟机,请帮忙推荐虚拟机和可以下载的镜像
  • ​docker之轻量虚拟化技术——docker实战分享
  • 在虚拟机上运行的程序和非虚拟机的区别
  • 虚拟机能虚拟硬件平台不 ?
  • 一台机器能不能装两台虚拟机或是同一台虚拟机能装两个linux系统么??
  • ARM ping不通虚拟机,虚拟机可以ping通ARM
  • linux(虚拟机)如何使用windows上的虚拟光驱?谢谢了
  • 虚拟机安装xampp后虚拟接口一访问网站,主机不可以
  • vmware虚拟机linux不能ping通主机,主机能ping通虚拟机
  • VMware虚拟机下Linux怎么访问虚拟机的光驱
  • Fedora9中虚拟机工具不能创建虚拟机
  • 虚拟机-虚拟光驱的搭配,有安装LINUX成功的办法么?
  • 在虚拟机上安装freebsd7.0后,将虚拟硬盘移到其它虚拟机上,出现mounroot> 怎样解决?
  • aix可以用虚拟机虚拟吗?
  • redhat 虚拟机的ip设置好了,如何让虚拟机跟xp本机通讯呢?
  • 虚拟linux,我在windows下面怎么虚拟linux。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,