Abstraction layer: Difference between revisions
Appearance
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.