Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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
add comment

2 Answers 2

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
add comment

Almost:

  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. –  ultrasawblade Jun 4 '11 at 14:41
add comment

Your Answer

 
discard

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.