深入理解Linux内核 - 第二章 内存寻址 01
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Linux内核 - 第二章 内存寻址 01相关的知识,希望对你有一定的参考价值。
1,三个地址
逻辑地址,机器语言指令中用来指定一个操作数或一条指令的地址。
线性地址:32位无符号整数,高达4GB。64位的cpu就是64位的线性地址
物理地址:内存芯片级内存单元寻址。老式x86由32位或36位无符号整数表示。
2,MMU内存控制单元
存在一个分段单元的硬件电路将一个逻辑地址转换为线性地址
存在一个分页单元的硬件电路将线性地址转换成一个物理地址。
问题:
1,为什么物理地址能够用36位的地址来表示?
2,为什么是逻辑地址转换成线性地址,再由线性地址转换为物理地址,这3个地址是什么关系?
3,一个程序被objdump后的地址是什么地址?如下片段
0000000000400526 <main>: 400526: 55 push %rbp 400527: 48 89 e5 mov %rsp,%rbp 40052a: 48 83 ec 10 sub $0x10,%rsp 40052e: 89 7d fc mov %edi,-0x4(%rbp) 400531: 48 89 75 f0 mov %rsi,-0x10(%rbp) 400535: bf d4 05 40 00 mov $0x4005d4,%edi 40053a: e8 c1 fe ff ff callq 400400 <[email protected]> 40053f: b8 00 00 00 00 mov $0x0,%eax 400544: c9 leaveq 400545: c3 retq 400546: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40054d: 00 00 00 |
以上是关于深入理解Linux内核 - 第二章 内存寻址 01的主要内容,如果未能解决你的问题,请参考以下文章