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.

  • 1
    "Hardware Abstraction Layer", but that's just the bit between the OS and the silicon; however, I think that "layers" is the standard term of art here. I like to call the OSI model the "7-layer Burrito", but I'm afraid I don't really have an equivalent for an individual computer. "The whole enchilada", perhaps?
    – MT_Head
    Jun 17 '11 at 7:43

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?

  • If I combine platform with the term layers or domains, it should describe what I'm looking for.
    – cledoux
    Jun 17 '11 at 13:40

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

  • I'd say "layers" is the best word to describe this, and the OSI networking usage mentioned by @Unreason endorses it.
    – njd
    Jun 17 '11 at 9:45
  • While this term does fit my needs, I think I prefer the term platform given by Kit. If after chewing on it for a while I find I've changed my mind, then I'll change my acceptance.
    – cledoux
    Jun 17 '11 at 13:44

When describing system's architecture you can use:


Back in the 80386 era, we used to call them "rings."

The 80386 processor had four rings, starting at "ring 0" (which has access to everything) and ending at "ring 3." Most of the time we'd only use rings 0 and 3, with applications sitting in ring 3, and drivers and kernel code in ring 0, but eventually drivers were moved out of ring 0 and all four rings started getting used in more projects.

This information was not easy to come by, and Intel was a good source (but costly at first) with the machine language reference material. If you're looking for detailed technical information about this stuff, which is really in the arena of very low-level heart-of-the-OS-kernel ASM (Assembler, Machine Language) programming, then key phrases like "Global Descriptor Table," "Local Descriptor Table," "Flat mode," and "Protected mode" will be useful to you. The following web page will cover a lot of the details:

  OS Developer Wiki - GDT tutorial

  • Wikipedia also knows the term and gives a decent overview: en.wikipedia.org/wiki/Ring_(computer_security)
    – pinkgothic
    Jun 17 '11 at 10:31
  • My understanding of rings that they just describe the privilege level of instructions executing on the processor. They don't really capture the idea I'm looking for. The rings are fixed, what I'm trying to describe can be moved around and modified. Layers can be removed (by having programs directly interact with the processor, for example) or added (with virtualization). I am curious, however, what rings 1-3 are being used for. I know a virtualization technique is to run the virtualized enviornment on ring 1 or 2, but that's as far as my knowledge extends.
    – cledoux
    Jun 17 '11 at 13:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.