内存

Posted bytedance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存相关的知识,希望对你有一定的参考价值。

内存地址

  • 区分三种不同的地址:

1.逻辑地址:机器语言指令中指定操作书或指令的地址,由段和偏移量构成

2.线性/虚拟地址:应用程序的地址

3.物理地址:在内存芯片上的寻址地址  

  • 逻辑地址转换:内存控制单元MMU利用分段单元将逻辑地址转换为虚拟地址,再由分页单元将其转化为物理地址

硬件中的分段

  • 逻辑地址=段标识符(16bit)+偏移量(32bit)

1.段选择符/段标识符结构: 

 

2.段寄存器:为快速访问段选择符,处理器提供段寄存器cs、ss、ds、es、fs、gs存放段选择符,同一段寄存器可被程序通过保存到内存再恢复的方式用于不同目的而且cs代码段寄存器专门有一个2bit的字段标识CPU的当前特权级别CPL

  • 段描述符:段寄存器

1.段描述符放在全局/局部描述符表中,而一个8字节的段描述符可表示一个段

2.段描述符结构:

3.段选择符和段描述符的关系:使用非编程的CPU寄存器使得逻辑地址转换过程中,当寄存器值不改变时不用访问主存中的GDT或LDT获得段描述符,处理器直接引用存放段描述符的寄存器即可

4.逻辑地址到虚拟地址的翻译过程:

 

 

 

 

 

 

 

 

 

 

以上是关于内存的主要内容,如果未能解决你的问题,请参考以下文章

内存溢出和内存泄漏

内存和虚拟内存优先使用哪个?

Linux 内核 内存管理内存映射原理 ② ( 内存映射概念 | 文件映射 | 匿名映射 | 内存映射原理 | 分配虚拟内存页 | 产生缺页异常 | 分配物理内存页 | 共享内存 | 进程内存 )

Windows 逆向内存地址分析 ( 内存条 | 虚拟内存 | 内存地址及寻址范围 | 内存地址与数据的关系 )

Linux 内核 内存管理物理内存组织结构 ② ( 内存模型 | 平坦内存 | 稀疏内存 | 非连续内存 | 内存管理系统三级结构 | 节点 Node | 区域 Zone | 页 Page )

内存映射:小块内存申请brk和申请大块内存的Mmap分析