What and where exactly is the loader?
<p>I understand every bit of the C compilation process (how the object files are linked to create the executable). But about the loader itself (which starts the program running) I have a few doubts. </p>

<ol>
<li><p>Is the loader part of the kernel?</p></li>
<li><p>How exactly is the <code>./firefox</code> or some command like that loaded? I mean you normally type such commands into the terminal which loads the executable I presume. So is the loader a component of the shell?</p></li>
</ol>

<p>I think I'm also confused about where the terminal/shell fits into all of this and what its role is.</p>