linux – 如何将elf中的地址转换为物理地址
我知道操作系统会将精灵加载到物理内存中.执行jmp elf-address时,系统会检查tlb并将elf-address转换为物理地址.我很困惑,elf-address没有段num和页面num? os如何将elf-address转换为MMU需要的内容.
我真的很困惑. 是否有寻找操作系统的地图表?当exec jmp elf-address时,os会先将elf-address映射到MMU地址吗? 解决方法
我真的不认为
Linux内核,当
execve(2)一些二进制ELF可执行文件,正在将该文件加载到物理RAM中.
它只是将文件的一些ELF段映射到进程’address space.您可以通过读取来了解进程1234的地址空间.用cat命令,伪文件/ proc / 1234 / maps;尝试命令cat / proc / self / maps,它显示运行该cat的进程的内存映射. 因此,execve(2)所做的基本上是某种内存映射,就像mmap(2)那样.它设置了MMU,因此对某些东西的任何初始访问都会使memory address出错,然后内核将从该文件加载(demand paging页面调入)一些页面.阅读关于virtual memory& memory management. 你真的应该读像Advanced Linux Programming这样的书 正如FGE评论的那样,存在ASLR的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |