Jump to content

Abstraction layer: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
No edit summary
Line 1: Line 1:



In the Unix operating system, most types of input and output operations are considered to be streams of bytes being read from a by the operating system which presents an [[abstraction (computer science)|abstract]] [[Interface (computer science)|interface]] which allows the [[programmer]] to read and write [[byte]]s from/to the device. The operating system then performs the actual [[Program transformation|transformation]] needed to read and write the stream of bytes to the device.

Most graphics [[library (computer science)|libraries]] such as OpenGL provide an abstract graphical device model as an interface. The library is responsible for translating the commands provided by the programmer
In [[computer science]], an abstraction level is a generalization of a model or [[algorithm]], away from any specific implementation. These generalizations arise from broad similarities that are best encapsulated by models that express similarities present in various specific implementations. The simplification provided by a good abstraction layer allows for easy reuse by distilling a useful concept or metaphor so that situations where it may be accurately applied can be quickly recognized.

A good abstraction will generalize that which can be made abstract; while allowing specificity where the abstraction breaks down and its successful application requires customization to each unique requirement or problem.

Frequently abstraction layers can be composed into a hierarchy of abstraction levels. The [[OSI model|ISO-OSI networking model]] comprises seven abstraction layers. Each layer of the OSI ISO networking model encapsulates and addresses a different part of the needs of much digital communications thereby reducing the complexity of the associated engineering solutions.

A famous aphorism of [[Butler Lampson]] goes: ''All problems in computer science can be solved by another level of indirection''; this is often deliberately mis-quoted with "abstraction" substituted for "indirection". [[Kevlin Henney]]'s corollary to this is, "...except for the problem of too many layers of indirection."

==Computer architecture==
[[Image:Computer abstraction layers.svg|thumb|200px|A typical vision of a [[computer architecture]] as a series of abstraction layers: [[hardware]], [[firmware]], [[Assembly language|assembler]], [[Kernel (computer science)|kernel]], [[operating system]] and [[Process (computing)|applications]] (see also Tanenbaum 79).]]
In [[computer architecture]], a computer system is usually represented as consisting of five abstraction levels: [[Computer hardware|hardware]], [[firmware]], [[Assembly language|assembler]], [[operating system]] and [[Process (computing)|processes]] (Tanenbaum 79).


==Bibliography==
==Bibliography==

Revision as of 05:10, 27 June 2008


Bibliography

  • Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0.