【笔记】深入理解Linux内核--内存寻址(一)
《深入理解Linux内核》中关于内存管理一共有三章,这是其中的一章,还有第八章,讨论内核怎样给自己分配主存,以及第九章,考虑怎样给进程分配线性地址。
- 内存地址 -- (P40)
以下三种地址是相对与8086处理器来说的。
-
- 逻辑地址(logical address)
包含在机器语言指令中用来指定一个操作数或一条指令的地址。比如下面反汇编代码中最左边的地址即逻辑地址。
1 40052d: 55 push %rbp 2 40052e: 48 89 e5 mov %rsp,%rbp 3 400531: 48 83 ec 10 sub $0x10,%rsp 4 400535: 89 7d fc mov %edi,-0x4(%rbp) 5 400538: 48 89 75 f0 mov %rsi,-0x10(%rbp) 6 40053c: bf d4 05 40 00 mov $0x4005d4,%edi 7 400541: e8 ca fe ff ff callq 400410 <puts@plt> 8 400546: b8 00 00 00 00 mov $0x0,%eax 9 40054b: c9 leaveq 10 40054c: c3 retq 11 40054d: 0f 1f 00 nopl (%rax)
8086处理器采用分段结构,每一个逻辑地址都由一个段(segment)和偏移量(offset)组成;即 逻辑地址=段地址+偏移量。
-
- 线性地址
- 物理地址
- 硬件中的分段 -- (P41)
- 段选择符&段寄存器
- 段描述符
- 快速访问段描述符
- 分段单元
- Linux中的分段 -- (P46)
- Linux GDT
- Linux LDT
- 硬件中的分页 -- (P50)
- 常规分页
- 扩展分页
- 硬件保护方案
- 常规分页举例
- 物理地址扩展(PAE)分页机制
- 64位系统中的分页
- 硬件高速缓存
- 转换后援缓冲器(TLB)
- Linux中的分页 -- (P62)
- 线性地址字段
- 页表处理
- 物理内存布局
- 进程页表内核页表
- 固定映射的线性地址
- 处理高速缓存&TLB
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。