Terminology for the levels user programs go through to access hardware

I'm looking for the terminology to describe the stack between user level programs and the hardware. For example, in a typical non-virtualized environment, this stack is:

User program <-> Application Binary Interface <-> Operating System <-> Hardware

User level programs access the system calls through the ABI, and the OS executes the operation on the hardware on behalf of the program. In the other direction, data coming from the hardware is given to the OS, which passes it up to the program.

The terminology I've been using up to this point is application stack, but this term means something different.


I thought this was called the platform, which is all the bits from hardware to just short of user programs. Or does that include too much?


The term I hear and use most often for this is operating system layers.


When describing system's architecture you can use:

  • layers (OSI model)

  • tiers (multitier architecture)