Abstraktionsschicht - Abstraction layer

Beim Rechnen ist eine Abstraktionsschicht oder Abstraktionsebene eine Möglichkeit, die Arbeitsdetails eines Subsystems zu verbergen und die Trennung von Bedenken zu ermöglichen, um Interoperabilität und Plattformunabhängigkeit zu erleichtern . Beispiele für Softwaremodelle, die Abstraktionsebenen verwenden, sind das OSI-Modell für Netzwerkprotokolle , OpenGL und andere Grafikbibliotheken .

In der Informatik ist eine Abstraktionsschicht eine Verallgemeinerung eines konzeptuellen Modells oder Algorithmus , weg von einer bestimmten Implementierung. Diese Verallgemeinerungen ergeben sich aus breiten Ähnlichkeiten, die am besten durch Modelle gekapselt werden, die Ähnlichkeiten ausdrücken, die in verschiedenen spezifischen Implementierungen vorhanden sind. Die Vereinfachung durch eine gute Abstraktionsschicht ermöglicht eine einfache Wiederverwendung durch Destillieren eines nützlichen Konzepts oder Entwurfsmusters, so dass Situationen, in denen es genau angewendet werden kann, schnell erkannt werden können.

Eine Ebene wird als über einer anderen liegend betrachtet, wenn dies davon abhängt . Jede Ebene kann ohne die darüber liegenden Ebenen existieren und erfordert, dass die darunter liegenden Ebenen funktionieren. Häufig können Abstraktionsschichten zu einer Hierarchie von Abstraktionsebenen zusammengesetzt werden. Das OSI-Modell umfasst sieben Abstraktionsschichten. Jede Schicht des Modells kapselt und adressiert einen anderen Teil der Anforderungen der digitalen Kommunikation, wodurch die Komplexität der zugehörigen technischen Lösungen verringert wird.

Ein berühmter Aphorismus von David Wheeler ist "Alle Probleme in der Informatik können durch eine andere Ebene der Indirektion gelöst werden". Dies wird oft absichtlich falsch zitiert, wenn "Abstraktion" anstelle von "Indirektion" verwendet wird. Es wird auch manchmal Butler Lampson falsch zugeschrieben . Kevlin Henneys Konsequenz daraus ist: "... mit Ausnahme des Problems zu vieler Indirektionsebenen."

Rechnerarchitektur

In einer Computerarchitektur wird ein Computersystem normalerweise so dargestellt, dass es aus mehreren Abstraktionsebenen besteht, wie z.

Programmierbare Logik wird häufig als Teil der Hardware betrachtet, während die logischen Definitionen manchmal auch als Teil der Software oder Firmware eines Geräts angesehen werden. Die Firmware enthält möglicherweise nur Software auf niedriger Ebene, kann jedoch auch die gesamte Software enthalten, einschließlich eines Betriebssystems und von Anwendungen. Die Softwareschichten können weiter unterteilt werden in Hardwareabstraktionsschichten, physische und logische Gerätetreiber, Repositorys wie Dateisysteme, Betriebssystemkerne, Middleware, Anwendungen und andere. Man kann auch von einfachen Programmiersprachen wie VHDL , Maschinensprache , Assemblersprache bis zu einer kompilierten Sprache , einem Interpreter und einer Skriptsprache unterscheiden .

Ein- und Ausgabe

Unter dem Unix-Betriebssystem werden die meisten Arten von Eingabe- und Ausgabeoperationen als Byteströme betrachtet, die von einem Gerät gelesen oder auf ein Gerät geschrieben werden. Dieses Byte-Stream-Modell wird für Datei-E / A, Socket-E / A und Terminal-E / A verwendet, um Geräteunabhängigkeit zu gewährleisten. Zum Lesen und Schreiben auf ein Gerät auf Anwendungsebene ruft das Programm eine Funktion zum Öffnen des Geräts auf, bei der es sich um ein reales Gerät wie ein Terminal oder ein virtuelles Gerät wie einen Netzwerkport oder eine Datei in einem Dateisystem handeln kann . Die physikalischen Eigenschaften des Geräts werden vom Betriebssystem vermittelt, das wiederum eine abstrakte Schnittstelle bietet, über die der Programmierer Bytes vom / zum Gerät lesen und schreiben kann. Das Betriebssystem führt dann die eigentliche Transformation durch, die zum Lesen und Schreiben des Bytestroms auf das Gerät erforderlich ist.

Grafik

Die meisten Grafikbibliotheken wie OpenGL bieten ein abstraktes grafisches Gerätemodell als Schnittstelle. Die Bibliothek ist dafür verantwortlich, die vom Programmierer bereitgestellten Befehle in die spezifischen Gerätebefehle zu übersetzen, die zum Zeichnen der grafischen Elemente und Objekte erforderlich sind. Die spezifischen Gerätebefehle für einen Plotter unterscheiden sich von den Gerätebefehlen für einen CRT- Monitor . Die Grafikbibliothek verbirgt jedoch die Implementierung und geräteabhängige Details, indem sie eine abstrakte Schnittstelle bereitstellt, die eine Reihe von Grundelementen bereitstellt , die im Allgemeinen zum Zeichnen grafischer Objekte nützlich sind.

Siehe auch

Verweise