Ich bin dem Begriff in verschiedenen CS-Lehrmaterialien oft begegnet:
L2 CS162 (UC Berkeley):
Speicherzugeordnete E / A.
L4 CS162 (UC Berkeley):
Speicherzugeordnete Dateien
L24 CS61 (UC Berkeley):
"Speicherzugeordnete E / A": Gerätesteuerung / Datenregister, die dem CPU-Adressraum zugeordnet sind
- Selbst nachdem ich "Mapping" gegoogelt hatte , bekam ich den Artikel Map_ (Funktion höherer Ordnung) , aber es war mir nicht sehr klar.
Noch mehr, versuchte die Bedeutung im Kontext von
bitmap
durch das Lesen des Wikipedia-Artikels zu verstehen :Ein Bit-Array ist eine Zuordnung von einer Domäne (fast immer ein Bereich von Ganzzahlen) zu Werten in der Menge {0, 1}
Ich bin mir nicht sicher, aber im obigen Kontext klingt es für mich nach Datenkonvertierung.
Später, nachdem ich ein CS-Buch gelesen hatte, fand ich nur diesen Absatz, aber er erklärte mir nicht die Bedeutung von "Mapping":
Speicherzuordnung Linux (zusammen mit anderen Unix-Formen) initialisiert den Inhalt eines virtuellen Speicherbereichs, indem es einem Objekt auf der Festplatte zugeordnet wird. Dieser Vorgang wird als Speicherzuordnung bezeichnet.
Ich habe auch MapReduce als Suchergebnis erhalten: wobei map als "eine Redewendung im parallelen Rechnen erklärt wird, bei der eine einfache Operation auf alle Elemente einer Sequenz angewendet wird, möglicherweise parallel".
Ich bin immer noch verwirrt über den Begriff. Kann jemand erklären, was "Karte" in den von mir erwähnten Kontexten bedeutet?
Functor
- zu wenig, um eine Änderung vorzuschlagen.)map
Funktion gibt ein Ergebnis zurück, bei dem jedes Element dem entsprechenden Element der Eingabe zugeordnet ist. Der Unterschied besteht darin, dass die erste Verwendung eine vorhandene Beziehung beschreibt, während sich die zweite auf eine Operation bezieht, die die Beziehung erstellt.Im Folgenden werde ich in vielerlei Hinsicht weniger genau sein und die technische Genauigkeit opfern, um ein grundlegendes Verständnis zu vermitteln. Es ist offensichtlich, dass Sie eine Reihe technischer Quellen gelesen haben und die technische Qualität des Materials es Ihnen schwer macht, ein ziemlich einfaches und einfaches Konzept zu verstehen.
In einfachen Worten ist die häufigste Verwendung der Wortkarte die Beschreibung einer Beziehung zwischen den Dingen in zwei verschiedenen Mengen. Dies kann eine mathematische Funktion oder eine andere Art der Darstellung und des Mechanismus sein. Am häufigsten fällt mir sofort die Straßenkarte ein.
Eine Straßenkarte ist ein Bild eines bestimmten Geländes oder Gebiets in der realen Welt, in dem die auf der Karte geschriebenen Linien, Zeichnungen und Wörter den tatsächlichen physischen Straßen und Gebäuden entsprechen. Es gibt eine Eins-zu-Eins-Beziehung zwischen der Darstellung des in der Straßenkarte abgebildeten Geländes und dem tatsächlichen Gelände.
Wenn wir weiter schauen, können wir auch sehen, dass eine Straßenkarte eine Darstellung des tatsächlichen Geländes ist. Das tatsächliche Gelände enthält Objekte und Details sowie dynamische Prozesse, die auf der Straßenkarte nicht dargestellt sind. Die Straßenkarte ist eine abstrakte Darstellung des tatsächlichen Geländes, und was in der Straßenkarte dargestellt ist, ist nur das, was benötigt wird, um ihren Zweck zu erfüllen und eine Navigationshilfe für das reale Gelände bereitzustellen.
Einige der Beispiele in der Frage umfassen das Erstellen einer Darstellung mit unterstützenden Mechanismen, damit eine Person die Darstellung verwenden kann, und der Mechanismus übersetzt die Aktionen der Person in das, was für die zugrunde liegende Funktionalität erforderlich ist, die von der Fassade der Darstellung verborgen wird.
Mit der Speicherzuordnungs-Datei-E / A kann ein Programmierer eine Datei als großen Speicherbereich betrachten und eine Speicherdarstellung einer realen Datei verwenden. Der Programmierer betrachtet die Datei nicht als Datei, sondern als großen Speicherbereich. Die Speicherzuordnungs-Datei-E / A-Funktionalität stellt sicher, dass auf die entsprechenden Daten in der Datei zugegriffen wird, wenn der Programmierer auf einen bestimmten Speicheroffset verweist.
Durch speicherabgebildete Geräte-E / A kann eine Geräteprogrammierschnittstelle vereinfacht werden, indem in Speicheradressen geschrieben oder aus Speicheradressen gelesen wird. Diese Schreib- und Leseaktionen werden von der zugrunde liegenden speicherabgebildeten Geräte-E / A-Funktionalität in die tatsächlichen gerätespezifischen Aktionen übersetzt, die zur Ausführung des angeforderten Dienstes oder der angeforderten Aktion erforderlich sind.
Eine Bitmap ist eine Menge von Bits, die eine Eins-zu-Eins-Entsprechung zu den Werten einer anderen Menge liefern. Beispielsweise verfügt die
CreateFile()
Funktion der Win32-API über mehrere Bitmap-Argumente, mit denen verschiedene Arten von Dateiattributen angegeben werden. Bestimmte Bits in einer Bitmap entsprechen einem bestimmten Dateiverhalten, z. B. "Als schreibgeschützt öffnen" oder "Immer neue leere Datei erstellen". Es werden spezielle Konstanten bereitgestellt, die mithilfe von Binärbitoperationen kombiniert werden, um die tatsächlichen Argumente anzugeben. Siehe CreateFile-Funktion und den Beispielquellcode unter Öffnen einer Datei zum Lesen oder Schreiben .quelle
Memory mapped file I/O
ist es eine Alternative zur Standard - Datei i / o (fopen, fgetc ..)? Ist der Leistungsvorteil aufgrund der Art des Arbeitsspeichers schneller als bei Festplatten?setbuf()
Funktion zum Festlegen eines E / A-Puffers für große Dateien verwendet habe. Alles, was Sie tun können, um den Zugriff auf das Speichergerät zu reduzieren, ist in der Regel ein Bonus. Bei Festplattenlaufwerken kann die Reduzierung der Anzahl der Suchvorgänge einen großen Unterschied bewirken. Es gibt jedoch eine Reihe von Einflüssen, gegen die Sie nicht viel tun können, z. B. die Organisation der Daten auf Festplattenplatten, die Rotationsgeschwindigkeit der Platten, die Geschwindigkeit der Kopfbewegung und das Caching von Daten, wie gut Cache-Treffer reduzieren, gehen auf die elektromechanische Platte usw.Bei der Zuordnung wird einfach eine Dateneinheit einer anderen Dateneinheit zugeordnet. Die Zuordnung soll einen vereinfachten Zugriff auf die zugeordneten Daten ermöglichen. In klassischen IBM-kompatiblen Systemen wurde beispielsweise die Speicheradresse 0xB8000 dem Videospeicher der Grafikkarte zugeordnet. Durch Schreiben in diesen Speicher wird der Inhalt des Bildschirms aktualisiert, und durch Lesen wird der Inhalt des Bildschirms abgerufen. Dateizuordnung, Gerätezuordnung und sogar Datenstrukturzuordnung (normalerweise als Map, HashMap oder Dictionary bezeichnet) sind alle Möglichkeiten, eine Dateneinheit einer anderen Dateneinheit zuzuordnen.
Mapping hat zwei Hauptvorteile. Das erste ist, dass die Zuordnung die Komplexität des Zugriffs auf das zugehörige Gerät oder die zugeordnete Datei verringert. Mit der Dateizuordnung und Gerätezuordnung können Sie diese Geräte beispielsweise so behandeln, als wären sie nur einfacher Speicher. Anstatt verschiedene E / A-Ports, Datenbefehle usw. zu lernen, erhalten Sie eine einfache Schnittstelle, die genauso natürlich und offensichtlich ist wie das Schreiben in den Arbeitsspeicher.
Der zweite Vorteil besteht darin, dass der Speicherbedarf reduziert werden kann. Beispielsweise
Map<Integer, SomeDataType>
kann a ein "spärliches Array" erzeugen, was nützlich ist, wenn Sie ein Array möchten, das hauptsächlich ungültige / nicht verwendete Daten enthält und auf das in nahezu linearer Zeit zugegriffen werden kann. Dies kann weitaus effizienter sein als eine verknüpfte Liste (bei der der Zugriff auf das n- te Element 0 ( n ) dauert ).Mapping wird hauptsächlich als Abstraktion verwendet, um komplizierte Algorithmen / Funktionen vor dem Entwickler zu verbergen, damit er sich auf die Aufgabe der Implementierung des Programms konzentrieren kann. Beachten Sie, dass die Zuordnung in Bezug auf die Verarbeitungszeit möglicherweise nicht immer so effizient ist wie der direkte Zugriff auf das Gerät oder die Datei, jedoch immer weniger kompliziert ist (z. B. reduziert die Zuordnung die Menge an spezialisiertem Code, den der Entwickler schreiben muss, um auf die Daten zuzugreifen ).
quelle