title: What's the relation between 32/64-bit application, OS and processor?
body: <p>I've googled these topics, but not sure if I understood their relations correctly. I summed up the following points, please correct/complement.</p>
  
  <ul>
  <li><p>32-bit or 64-bit processor means the processor can process 32/64 bits at once. Using 32-bit or 64-bit processor indicates the underlying registers, address buses, or data buses are also of the same size.</p></li>
  <li><p>In order to work on 32/64-bit processor, we have 32/64-bit OS</p></li>
  <li><p>In order to work in 32/64-bit OS, we develop 32/64-bit application</p></li>
  <li><p>It is possible to run 32-bit application in 64-bit OS, as well as 64-bit application in 32-bit OS(<a href="http://linuxpae64.sourceforge.net/" rel="nofollow noreferrer">LinuxPAE64</a>)</p></li>
  <li><p>It is not possible to run 64-bit application/OS on 32-bit processor</p></li>
  </ul>
  
  <hr>
  
  <p>Also, I've got two questions relates to memory.</p>
  
  <ol>
  <li><p>The layout of the memory map of a processor seems independent of the processor's instruction size. For example, most Intel Core 2 systems(64-bit) have a memory map pretty close to picture shown below. <strong>Why</strong> the 64-bit processor does not choose a wider range of memory map?</p>
  
  <p><img src="https://i.stack.imgur.com/YfA2Z.png" alt="enter image description here"> </p></li>
  <li><p><strong>What</strong> limits a 64-bit OS to use up to (2^64 - device/bus addresses) size of RAM? </p></li>
  </ol>