I'll add to the list :
- Final output is in ASCII assembler, which is then assembled by as. This
allows gcc to run on many more platforms, because GNU does not need
to understand that vendor's object file format.
- Internally, GCC goes to a machine independant representation before
producing the assembler code. Again, this allows the GCC
running on your bread maker to cross compile for your
toaster, but may slow things down.
Yes, because the Linux device drivers and filesystem are both a little
on the slow side.
No, because straight DOS has no disk caching, whereas Linux has a traditional
write back buffer cache, which means that things like read aheads, and delayed
write backs happen.