Abstrakční vrstva - Abstraction layer

Ve výpočetní technice je abstrakční vrstva nebo úroveň abstrakce způsob, jak skrýt pracovní podrobnosti subsystému, což umožňuje oddělení obav s cílem usnadnit interoperabilitu a nezávislost na platformě . Mezi příklady softwarových modelů, které používají vrstvy abstrakce, patří model OSI pro síťové protokoly , OpenGL a další grafické knihovny .

V informatice je abstrakční vrstva zobecněním konceptuálního modelu nebo algoritmu , mimo jakoukoli konkrétní implementaci. Tyto zevšeobecňování vyplývají z širokých podobností, které jsou nejlépe zapouzdřeny modely, které vyjadřují podobnosti přítomné v různých konkrétních implementacích. Zjednodušení poskytované dobrou abstrakční vrstvou umožňuje snadné opětovné použití destilací užitečného konceptu nebo návrhového vzoru, aby bylo možné rychle rozpoznat situace, kde je možné je přesně použít.

Vrstva se považuje za vrstvu nad jinou, pokud to na ní závisí . Každá vrstva může existovat bez vrstev nad ní a vyžaduje, aby vrstvy pod ní fungovaly. Abstrakční vrstvy lze často skládat do hierarchie úrovní abstrakce. Model OSI zahrnuje sedm abstrakčních vrstev. Každá vrstva modelu zapouzdřuje a řeší odlišnou část potřeb digitální komunikace, čímž snižuje složitost souvisejících technických řešení.

Slavný aforismus z Davida Wheelera je „Všechny problémy v informatice lze řešit další úrovně dereference“. Toto je často záměrně chybně citováno s „abstrakce“ nahrazující „indirection“. Někdy je také nesprávně přiřazeno Butlerovi Lampsonovi . Důsledkem Kevlina Henneyho je, "... až na problém s příliš mnoha vrstvami nepřátelství ."

Počítačová architektura

V počítačové architektuře je počítačový systém obvykle reprezentován jako skládající se z několika úrovní abstrakce, jako například:

Programovatelná logika je často považována za součást hardwaru, zatímco logické definice jsou také někdy považovány za součást softwaru nebo firmwaru zařízení. Firmware může obsahovat pouze nízkoúrovňový software, ale může zahrnovat i veškerý software, včetně operačního systému a aplikací. Softwarové vrstvy lze dále rozdělit na vrstvy hardwarové abstrakce, ovladače fyzických a logických zařízení, úložiště, jako jsou souborové systémy, jádra operačních systémů, middleware, aplikace a další. Rozlišovat lze také od nízkoúrovňových programovacích jazyků, jako je VHDL , strojový jazyk , montážní jazyk, až po kompilovaný jazyk , tlumočník a skriptovací jazyk .

Vstup a výstup

V operačním systému Unix se většina typů vstupních a výstupních operací považuje za proudy bajtů načtené ze zařízení nebo zapsané do zařízení. Tento proud bajtů modelu se používá pro vstupně-výstupní soubory, vstupně-výstupní vstupy a vstupně-výstupní operace terminálu, aby byla zajištěna nezávislost zařízení. Aby bylo možné číst a zapisovat do zařízení na úrovni aplikace, program volá funkci pro otevření zařízení, což může být skutečné zařízení, jako je terminál, nebo virtuální zařízení, jako je síťový port nebo soubor v systému souborů . Fyzické vlastnosti zařízení jsou zprostředkovány operačním systémem, který zase představuje abstraktní rozhraní, které umožňuje programátorovi číst a zapisovat bajty z / do zařízení. Operační systém poté provede skutečnou transformaci potřebnou ke čtení a zápisu proudu bajtů do zařízení.

Grafika

Většina grafických knihoven, jako je OpenGL, poskytuje jako rozhraní abstraktní grafický model zařízení. Knihovna je zodpovědná za překlad příkazů poskytovaných programátorem do konkrétních příkazů zařízení potřebných k vykreslení grafických prvků a objektů. Konkrétní příkazy zařízení pro plotter se liší od příkazů zařízení pro monitor CRT , ale grafická knihovna skryje implementaci a podrobnosti závislé na zařízení tím, že poskytuje abstraktní rozhraní, které poskytuje sadu primitiv, které jsou obecně užitečné pro kreslení grafických objektů.

Viz také

Reference