Operating Systems Terminology

Thread Starter

RdAdr

Joined May 19, 2013
214
I read about how the PC starts up and I am confused.

So at the first level we have the hardware: the PC is made up of multiple sub-systems, each having its own firmware.

So at the second level we have this firmware.

Then at the third level we have BIOS or UEFI.

And then at the fourth level we have the operating system.

Like in this picture:
https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

My confusion is with the boot loader, that program that loads the operating system.

From what I read, every operating system has its own boot loader. So I guess that the operating system can be further divided into three levels: boot loader, kernel and shell.

Is this correct?

Sometimes I read that the booting process is the process that starts when you press the button on the PC. And then BIOS is the first program to be executed, and then it loads the boot loader into RAM and then gives control to this boot loader. But hey, I said that the booting process is the process that starts when you press the button on the PC, not the process that starts when BIOS gives control to the boot loader.

So maybe the booting process is the process of loading the operating system, and not the process that starts when you press the button on the PC.

See? So what is the boot software? BIOS + boot loader? Or just the boot? Or what?


So the levels can be: hardware, firmware, bios, os (boot loader, kernel, shell)
or
hardware, firmware, boot (bios, boot loader), os (kernel, shell). But every os has its own boot loader, so this cant be. The first variant must be correct.
But then the booting process is not the process that starts when you press the button on the PC.
 

MrChips

Joined Oct 2, 2009
30,711
You are confusing firmware, boot and bios. All systems require boot code to get started. This must be permanent code that cannot be erased accidentally. This can be embedded in the firmware in a protected part of a memory chip. The boot is a simple piece of code just to get started and may be used to invoke a more complex boot code which may also be embedded in the firmware. Firmware may be fixed or reconfigurable depending on how much remote reconfiguration the system designer has allowed.
 

Thread Starter

RdAdr

Joined May 19, 2013
214
Ok, I understand that. The Bios is in the firmware. But again, we're playing with words here. So the guy that made that picture in wikipedia must be also confusing things. After all, UEFI sits in the firmware. So it was better if he said: hardware, firmware, os. And firmware contains the individual firmwares of the sub-sysems of the PC + UEFI.

So how do you personally view the layering in the case of a PC?
I can see that hardware is first level, application level is the last level, and OS is the level below application level.

But what happens in between? It will be easy to say. Well, there you have the boot code level and that's all. Thus boot code which is the firmware is composed out of BIOS/UEFI, boot loader and other stuff.
 

hellifino

Joined Jul 2, 2015
19
Typically you have:
hardware > BIOS > boot loader > 2nd stage boot loader > kernel > applications

BIOS is stored in ROM on your motherboard. This is OS independent.

For a traditional "boot loader" (non-UEFI as I do not know how UEFI works), the BIOS will load the first sector off the disk medium and pass execution over to it. This is the first-stage boot loader and is limited in size to the first sector (typically 512 bytes). Typically on most modern OS, that first stage loader will set up the memory layout, enable paging, etc (only very basic fundamental stuff for the OS), then load a second stage boot loader from a different location on the disk medium. This second boot loader is not virtually limited in size (since the first stage set up the PC memory for the MMU). The second stage boot loader is akin to "GRUB" on linux.

The collective "boot loader" will then load up the kernel and pass execution to the kernel. As you asked, this collective boot loader is OS dependent. It does not HAVE to be, but usually the OS will provide the boot loader. The only exception could be in some specialized Linux variations and custom OS. Most Linux will just use GRUB.

** Once the boot loader starts the kernel, the boot loader goes away and disappears **

From here, the kernel sets up ALL the motherboard hardware how it wants and then proceeds to start loading the OS. (When you turn on your PC, this is when you see the Windows or Linux icon and the progress bar "loading".)

Once the OS is up, applications are dynamically loaded / unloaded through the kernel. This is NOT the boot loader at all. The kernel has it's own way of loading data from the disk mediums.

So your question "what is the boot software" has several facets as to which aspect you are referring. But in general, the boot software usually refers to the 2-stage boot loader.
 
Last edited:

ci139

Joined Jul 11, 2016
1,898
in ancient past the PC loaded like this - there are always causes to make things better , more complex and not so easily graspable if you don't know(/ were not involved(/following) the process of) what was being improved
 
Top