Linux 内存管理主要是32保护模式下,段页式内存管理。如何处理内存相关的寄存器,使得程序可以读写超过4G的内存。x86这个CPU框架,会根据寄存器的值和段页式规则来进行地址变换,进行内存访问。其中,也会进行权限验证等附加判断。

几个概念:

保护模式vs实模式

《Linux0.11内核完全注释》读后小结 --- 内存寻址


保护模式下的:

虚地址:程序产生的段选择符,段内偏移地址两部分组成。要经过分段地址变换处理后,才对应到屋里地址。

逻辑地址:在Intel86保护模式下,就是指程序执行代码段限长内的偏移地址。

线性地址:虚拟地址到物理地址变换的中间层。如果没有启用分页机制,线性地址就是物理地址。


在保护模式下,读取内存很费周章。如下图,需要先找到GDT,然后找到LDT,LDT指向了LDT描述符,其中保存了该进程的内存地址。

《Linux0.11内核完全注释》读后小结 --- 内存寻址


加上页管理,这个寻址过程就是:


页式管理

《Linux0.11内核完全注释》读后小结 --- 内存寻址

相关文章:

  • 2022-12-23
  • 2021-06-01
  • 2021-04-16
  • 2021-09-28
  • 2021-05-12
  • 2021-09-08
  • 2021-08-19
  • 2021-07-03
猜你喜欢
  • 2021-09-04
  • 2021-08-21
  • 2021-11-16
  • 2021-05-22
  • 2021-12-16
  • 2022-01-22
  • 2021-07-25
相关资源
相似解决方案