5

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
  • 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
    Commented Jun 17, 2011 at 7:43

4 Answers 4

1

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?

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

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

2
  • I'd say "layers" is the best word to describe this, and the OSI networking usage mentioned by @Unreason endorses it.
    – njd
    Commented Jun 17, 2011 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
    Commented Jun 17, 2011 at 13:44
3

When describing system's architecture you can use:

2
2

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
  http://wiki.osdev.org/GDT_Tutorial

2
  • Wikipedia also knows the term and gives a decent overview: en.wikipedia.org/wiki/Ring_(computer_security)
    – pinkgothic
    Commented Jun 17, 2011 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
    Commented Jun 17, 2011 at 13:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .