← Back to results

Abstraction layer - Wikipedia Jump to content Main menu

Main menu move to sidebar hide Navigation Main page Contents Current events Random article About Wikipedia Contact us Contribute Help Learn to edit Community portal Recent changes Upload file Special pages Search Search Appearance Donate Create account Log in Personal tools Donate Create account Log in Contents move to sidebar hide (Top) 1 Computer architecture 2 Input and output 3 Graphics 4 See also 5 References Toggle the table of contents Abstraction layer 17 languages Afrikaans Català Español فارسی हिन्दी 日本語 Qaraqalpaqsha 한국어 Bahasa Melayu Nederlands Português Română Русский Türkçe Українська Oʻzbekcha / ўзбекча 中文 Edit links Article Talk English Read Edit View history Tools Tools move to sidebar hide Actions Read Edit View history General What links here Related changes Upload file Permanent link Page information Cite this page Get shortened URL Print/export Download as PDF Printable version In other projects Wikidata item Appearance move to sidebar hide From Wikipedia, the free encyclopedia Way of hiding details of a computing subsystem In computing , an abstraction layer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols , OpenGL , and other graphics libraries , which allow the separation of concerns to facilitate interoperability and platform independence . In computer science , an abstraction layer is a generalization of a conceptual 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 design pattern so that situations, where it may be accurately applied, can be quickly recognized. Just composing lower-level elements into a construct doesn't count as an abstraction layer unless it shields users from its underlying complexity. [ 1 ] A layer is considered to be on top of another if it depends on it. Every layer can exist without the layers above it, and requires the layers below it to function. Frequently, abstraction layers can be composed into a hierarchy of abstraction levels. The OSI model comprises seven abstraction layers. Each layer of the model encapsulates and addresses a different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions. A famous aphorism of David Wheeler is, "All problems in computer science can be solved by another level of indirection ." [ 2 ] This is often deliberately misquoted with "abstraction" substituted for "indirection." [ citation needed ] It is also sometimes misattributed to Butler Lampson . Kevlin Henney 's corollary to this is, "...except for the problem of too many layers of indirection." [ 3 ] Computer architecture [ edit ] In a computer architecture , a computer system is usually represented as consisting of several abstraction levels, such as: software programmable logic hardware Programmable logic is often considered part of the hardware, while the logical definitions are also sometimes seen as part of a device's software or firmware. Firmware may include only low-level software, but can also include all software, including an operating system and applications. The software layers can be further divided into hardware abstraction layers, physical and logical device drivers, repositories such as filesystems, operating system kernels, middleware, applications, and others. A distinction can also be made between low-level programming languages like VHDL , machine language , assembly language and a compiled language , interpreter , or script language . [ 4 ] Input and output [ edit ] In the Unix operating system, most types of input and output operations are considered to be streams of bytes read from a device or written to a device. This stream of bytes model is used for file I/O, socket I/O, and terminal I/O in order to provide device independence. In order to read and write to a device at the application level, the program calls a function to open the device, which may be a real device, such as a terminal or a virtual device, such as a network port or a file in a file system. The device's physical characteristics are mediated by the operating system, which in turn presents an abstract interface that allows the programmer to read and write bytes from/to the device. The operating system then performs the actual transformation needed to read and write the stream of bytes to the device. Graphics [ edit ] Most graphics 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 into the specific device commands needed to draw the graphical elements and objects. The specific device commands for a plotter are different from the device commands for a CRT monitor , but the graphics library hides the implementation and device-dependent details by providing an abstract interface that provides a set of primitives that are generally useful for drawing graphical objects. See also [ edit ] Application programming interface (API) Application binary interface (ABI) Compiler , a tool for abstraction between source code and machine code Hardware abstraction Information hiding Layer (object-oriented design) Namespace violation Protection ring Operating system , an abstraction layer between a program and computer hardware Software engineering References [ edit ] ^ Hohpe, Gregor (March 9, 2012). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series (Fowler)) . Addison-Wesley Professional. ISBN   978-0321200686 . ^ Spinellis, Diomidis (2007). "Chapter 17. Another Level of Indirection" . Beautiful Code: Leading Programmers Explain How They Think . Sebastopol, CA: O'Reilly and Associates. pp.  279– 291. Archived from the original on Mar 6, 2024. ^ Henney, Kevlin [@kevlinhenney] (September 3, 2012). "@drunkcod Yes, that's my corollary :^)" ( Tweet ). Archived from the original on Mar 29, 2022 – via Twitter . ^ Tanenbaum, Andrew S. (1979). Structured Computer Organization . Englewood Cliffs, New Jersey : Prentice-Hall. ISBN   0-13-148521-0 . Retrieved from " https://en.wikipedia.org/w/index.php?title=Abstraction_layer&oldid=1344610705 " Categories : Computer architecture Abstraction Hidden categories: Articles with short description Short description is different from Wikidata All articles with unsourced statements Articles with unsourced statements from June 2023 This page was last edited on 21 March 2026, at 14:35  (UTC) . Text is available under the Creative Commons Attribution-ShareAlike 4.0 License ; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy . Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. , a non-profit organization. Privacy policy About Wikipedia Disclaimers Contact Wikipedia Legal & safety contacts Code of Conduct Developers Statistics Cookie statement Mobile view Search Search Toggle the table of contents Abstraction layer 17 languages Add topic