title: Why are there different sections for initialized and uninitialized globals?
body: <p>I'm reading this course on the structure of an executable and it says there are three data sections in an executable:</p>
  
  <ul>
  <li><strong>code section</strong> &mdash; where the instructions are stored</li>
  <li><strong>data section</strong>
  <ul>
  <li><em>.data</em> &mdash; stores initialized global data</li>
  <li><em>.bss</em> &mdash; stores uninitialized global data</li>
  <li><em>.rodata</em> &mdash; stores read-only data, such as literals</li>
  </ul></li>
  </ul>
  
  <p>My question is, why is the distinction made between initialized and uninitialized global data?</p>
  
  <p>(We use C in class, but I guess this is a language agnostic subject.)</p>