title: How does ARM Linux maintain segments?
body: <p>Linux translates flat virtual address to physical address by MMU. In the virtual address space of Linux, there are many types of segments:</p>
  
  <ul>
  <li>Kernel space</li>
  <li>User stack</li>
  <li>Memory mapping region</li>
  <li>User heap</li>
  <li>Bss segment</li>
  <li>Data segment</li>
  <li>Text segment</li>
  </ul>
  
  <p>How does Linux maintain these segments (aka sections)? Where are the base addresses and sizes of these segments stored? Registers, GDT/LDT, <code>mm_struct</code> or other data structures in kernel?</p>
  
  <p>Appreciate any help.</p>