当前位置: 技术问答>linux和unix
精通Linux内存管理的大侠请进?
来源: 互联网 发布时间:2015-05-05
本文导语: 在读linux内核源代码情景分析时碰到的问题: 问题1:编译器编译出来的可执行代码里面的地址是如何安排的?我的理解是有一个起始地址0,后面的代码行地址都是相对于起始地址! 问题2:当我们要执行一个程序时...
在读linux内核源代码情景分析时碰到的问题:
问题1:编译器编译出来的可执行代码里面的地址是如何安排的?我的理解是有一个起始地址0,后面的代码行地址都是相对于起始地址!
问题2:当我们要执行一个程序时,linux是不是首先把所要执行的程序完全映射到vm_area_struct链表中去。这个映射过程中相应的地址是如何映射(转换)的。
问题1:编译器编译出来的可执行代码里面的地址是如何安排的?我的理解是有一个起始地址0,后面的代码行地址都是相对于起始地址!
问题2:当我们要执行一个程序时,linux是不是首先把所要执行的程序完全映射到vm_area_struct链表中去。这个映射过程中相应的地址是如何映射(转换)的。
|
编译器里生成的可执行程序出来的是绝对地址(虚拟地址)
so 里只是个偏移植。
linux 把可执行程序load时是通过do_mmap做的 跟内存分配一样啊
简而言之 就是先得到一个没有被映射的区域
不过其中使用了MAP_FIXED标记,所以必须映射到可执行程序中指定的区域
用几个vm_area_struct来描述它
然后在被访问从而产生缺页时再分配物理页面
so 里只是个偏移植。
linux 把可执行程序load时是通过do_mmap做的 跟内存分配一样啊
简而言之 就是先得到一个没有被映射的区域
不过其中使用了MAP_FIXED标记,所以必须映射到可执行程序中指定的区域
用几个vm_area_struct来描述它
然后在被访问从而产生缺页时再分配物理页面
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。