深入理解Linux內核 - 第二章 內存尋址 01
阿新 • • 發佈:2017-08-22
lin linu 地址 什麽 邏輯地址 問題 理解 整數 深入
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