Linux通过MMU将平面虚拟地址转换成物理地址。在Linux的虚拟地址空间中,有许多类型的段:
核空间
用户堆栈
内存映射区域
用户堆
Bss段
数据段
文本段
Linux如何维护这些段(aka部分)?这些段的基址和大小存储在哪里?寄存器、GDT/LDT、mm_struct
或内核中的其他数据结构?
谢谢你的帮助。
最佳答案
GDT/LDT是x86系列的特性。内核空间通过页表的内核部分转换,用户空间通过用户空间部分转换。页表在主内存中,mm_struct是Linux内核中用来描述内存布局的结构。每道工序
User stack
User heap
Bss segment
Data segment
Text segment
此布局用mm结构描述。mm_struct还包含->pgd字段,它是根页表指针(加载到ARM上的ttrb0/ttrb1)
关于linux - ARM Linux如何维护网段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31578233/