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

相同线性地址映射到的物理内存应该是不一样吧?

    来源: 互联网  发布时间:2017-04-02

    本文导语:  不同进程相同线性地址映射到物理内存相同吗?如何映射的? 不同进程中有3G的用户空间,3G用户空间的线性地址表示应该是一样吧?也就是0x000000000~0xbffffffff 但,不同进程映射的物理内存肯定是不一样的; 也就是说相同的...



不同进程相同线性地址映射到物理内存相同吗?如何映射的?

不同进程中有3G的用户空间,3G用户空间的线性地址表示应该是一样吧?也就是0x000000000~0xbffffffff
但,不同进程映射的物理内存肯定是不一样的;
也就是说相同的线性地址如:0x08040000映射到的物理页应该是不一样的,这是如何做到的?如何映射?




|
物理内存必须不一样,一个程序开两个各自都运行的好好的,不会冲突吧?

原理就是楼上说的分页机制了。

|
不一定
貌似如果是共享的代码段或者数据段,还是有可能一样的吧

|


共享的代码段,他们用的应该是同一个线性地址吧,struct vma_area中的 user_count可以说明这个问题

|
分页机制不是一两句话说清楚的,涉及硬件MMU,内核,具体的还是要去看书,看代码。
同一个线性地址当然可以映射到不同的物理地址,但是也可以映射到相同的物理地址。
这个全靠发生缺页中断时,内核设置页表,MMU从页表查到线性地址对应的物理地址得来。
当然MMU不一定要从内存中查找页表,也可能从TLB中。

|
可以去看下分页机制。分页机制实现了相同的线性地址映射到不同的物理空间

|
共享的代码段,他们用的应该是同一个线性地址吧

他们用的是同一个物理地址。

不同进程相同线性地址映射到物理内存相同吗?如何映射的?

不同进程中有3G的用户空间,3G用户空间的线性地址表示应该是一样吧?也就是0x000000000~0xbffffffff
但,不同进程映射的物理内存肯定是不一样的;
也就是说相同的线性地址如:0x08040000映射到的物理页应该是不一样的,这是如何做到的?如何映射?


每一个进程都有自己的页表。进程根据页表把线性地址转换为物理地址。如果此页不在内存会发生缺页中断,把该页调入内存。



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GNU线性编程工具 GLPK
  • 非线性拟合和数据分析工具 Fityk
  • 非线性视频编辑软件 Cinelerra
  • C++ 线性代数库 Armadillo C++ Library
  • linux0.11内核线性地址问题,请教!!
  • 多媒本线性剪辑软件 VirtualDubMod
  • 线性代数等数学模型库 ojAlgo
  • Java线性代数库 jblas
  • 线性代数Java包 JAMA
  • 这句话什么意思:“分页存储管理是一个单一的线性地址空间,分段存储管理的作业地址空间是二维的。”?
  • Linux下的非线性编辑器有哪些比较专业????
  • 线性算术的C++模板库 Eigen
  • 为什么进程的线性地址空间需要分配
  • 进程,线性地址(虚拟地址),kernel之间的关系
  • 《操作系统原理linux篇》逻辑地址,线性地址 物理地址
  • GDTR和LDTR中放置的是物理地址还是线性地址?
  • java实现顺序结构线性列表的函数代码
  • 逻辑地址、物理地址、线性空间、全局段、局部段 问题请教,高手指教了!!!!在线等,高手指教了!!!在线等!!!!!!!!
  • java线性表排序示例分享
  • C语言线性表的顺序表示与实现实例详解


  • 站内导航:


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

    ©2012-2021,