title: How does x86 paging work?
body: <p>This question is meant to fill the vacuum of good free information on the subject.</p>
  
  <p>I believe that a good answer will fit into one big SO answer or at least in a few answers.</p>
  
  <p>The main goal is to give complete beginners just enough info so that they can take the manual on their own, and be able to understand basic OS concepts related to paging.</p>
  
  <p>Suggested guidelines:</p>
  
  <ul>
  <li>answers should be beginner friendly:
  
  <ul>
  <li>concrete, but possibly simplified examples are very important</li>
  <li>applications of the concepts shown are welcome</li>
  </ul></li>
  <li>citing useful resources is good</li>
  <li>small digressions into how OSs use paging features are welcome</li>
  <li>PAE and PSE explanations are welcome</li>
  <li>small digressions into x86_64 are welcome </li>
  </ul>
  
  <p>Related questions and why I think they are not dupes:</p>
  
  <ul>
  <li><p><a href="https://stackoverflow.com/questions/10671147/how-do-x86-page-tables-work">How do x86 page tables work?</a>: the title is almost the same as this question, but the body asks specific questions related to cr3 and TLB. That question is a subset of this one.</p></li>
  <li><p><a href="https://stackoverflow.com/questions/4710354/how-does-x86-virtualization-work">How does x86 virtualization work</a>: body asks for sources only.</p></li>
  </ul>