Linux通过MMU将平面虚拟地址转换为物理地址。在Linux的虚拟地址空间中,有许多类型的段:
Linux如何维护这些细分(又称部分)?存储这些段的基址和大小在哪里?注册表,GDT / LDT,mm_struct
或内核中的其他数据结构?
感谢任何帮助。
答案 0 :(得分:2)
GDT / LDT是x86系列功能。内核空间通过页面表的内核部分,用户空间通过用户空间部分进行翻译。页表位于主内存中,mm_struct是Linux内核中用于描述内存布局的结构。这是每个过程
User stack
User heap
Bss segment
Data segment
Text segment
mm_struct中描述了这种布局。 mm_struct还包含 - > pgd字段,它是根页表指针(在ARM上加载到ttrb0 / ttrb1)