Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Are the following correct:

  1. The interface for interaction between OS and hardware devices is device drivers;

  2. The interface for interaction between OS and software applications is application binary interface?

Please point it out if there is anything improper.

Thanks and regards!

share|improve this question
Looks good to me – soandos Jun 3 '11 at 2:25

The interface between applications and the OS is the API. The ABI defines how, between any two pieces of software. The API defines what.

share|improve this answer
Thanks! (1) Can you be more specific about the differences between ABI and API? What are how and what? Is API the higher level version of ABI? (2) Can I say the interface between applications and OS is API and ABI? – Tim Jun 3 '11 at 2:32
The API tells you what functions are available (disk, network, keyboard, etc.), the ABI tells you how they're called (parameters on the stack/registers, caller vs. callee popping the stack, etc.). – Ignacio Vazquez-Abrams Jun 3 '11 at 3:46


  1. Technically device drivers implement, or provide expected functions, for an interface (which just an API, see below, or function specification), the interface being I/O and power management functions. Device drivers are a "layer."

  2. Application binary interface, or ABI, refers to how function and system calls work on the assembler level. ABI answers the question: I am a function, how do I get my parameters (form the stack? from registers?, etc.) Two binaries that are obeying the same ABI standard can use, or call, each others functions.

Application programming interface is more likely what you mean. APIs are the well-defined functions, including function name, required parameters, and a detailed specification of what the function does, that allow programmers to take advantage of services offered by another binary. ABI is just concerned with "linkage" and not defining what anything specifically is trying to accomplish.

share|improve this answer
Thanks! (1) By Device drivers are a "layer", do you mean it is not an interface? (2) Generally, what is the difference between layer and interface? – Tim Jun 4 '11 at 0:47
The interface is a standard that defines which functions + parameters + structres, etc. the OS will use to call the driver and vice versa. The device driver must implement this interface. The device driver itself often has to deal with similar, but lower level specifications from the hardware itself or another, lower-level driver. "Layer" is a good term to use that encompasses these concepts. – LawrenceC Jun 4 '11 at 14:41

According to me, I think that the OS ACTS as a interface between the software and hardware. As the OS controls over all actions of computer so it is able to supplie the details or the elements that is needed by software to run from the hardware interface.Hence the os makes the support of software by making virtual storage management in hard-disk to make it run .So hence the file that software supports are linked to hard disk due to OS .

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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