J'ai rencontré le terme à plusieurs reprises, dans divers supports pédagogiques CS:
L2 CS162 (UC Berkeley):
E / S mappées en mémoire
L4 CS162 (UC Berkeley):
Fichiers mappés en mémoire
L24 CS61 (UC Berkeley):
«E / S mappées en mémoire»: contrôle de périphérique / registres de données mappés sur l'espace d'adressage du processeur
- Même, après avoir googlé la "cartographie", j'ai eu l'article Map_ (fonction d'ordre supérieur) , mais ce n'était pas très clair pour moi.
Encore plus, j'ai essayé de comprendre le sens dans le contexte de la
bitmap
lecture de l'article Wikipedia :Un tableau de bits est un mappage d'un domaine (presque toujours une plage d'entiers) aux valeurs de l'ensemble {0, 1}
Je ne suis pas sûr, mais dans le contexte ci-dessus, cela me semble sur la conversion des données.
Plus tard, après avoir lu un livre CS, je n'ai trouvé que ce paragraphe, mais il n'a pas expliqué le sens de «mappage» pour moi:
Mappage de mémoire Linux (avec d'autres formes d'Unix) initialise le contenu d'une zone de mémoire virtuelle en l'associant à un objet sur le disque, un processus connu sous le nom de mappage de mémoire.
J'ai également obtenu MapReduce comme résultat de recherche: où la carte est expliquée comme "un idiome dans le calcul parallèle où une opération simple est appliquée à tous les éléments d'une séquence, potentiellement en parallèle".
Je suis toujours confus au sujet du terme. Quelqu'un peut-il expliquer ce que signifie «carte» dans les contextes que j'ai mentionnés?
Functor
nom du lien - trop peu pour suggérer une modification.)map
fonction renvoie un résultat où chaque élément est associé à l'élément correspondant de l'entrée. La distinction est que la première utilisation décrit une relation existante, tandis que la seconde fait référence à une opération qui crée la relation.Dans ce qui suit, je vais être loin d'être précis à plusieurs égards, sacrifiant la précision technique pour fournir une compréhension de base. Il est évident que vous avez lu un certain nombre de sources techniques et la technicité même du matériel rend difficile pour vous de comprendre ce qui est un concept assez basique et simple.
En termes simples, l'utilisation la plus courante du mot map est de décrire une relation entre les choses dans deux ensembles différents. Il peut s'agir d'une fonction mathématique ou d'un autre type de représentation et de mécanisme. Le plus courant qui me vient immédiatement à l'esprit est le plan des rues.
Une carte de rue est une image d'un terrain ou d'une zone particulière dans le monde réel dans laquelle les lignes et les dessins et les mots écrits sur la carte correspondent à des rues et des bâtiments physiques réels. Il existe une relation un à un entre la représentation du terrain représenté sur le plan des rues et le terrain réel.
En regardant plus loin, nous pouvons également voir qu'un plan des rues est une représentation du terrain réel. Le terrain réel a des objets et des détails et des processus dynamiques que le plan des rues ne représente pas. Le plan des rues est une représentation abstraite du terrain réel et ce qui est représenté sur le plan des rues n'est que ce qui est nécessaire pour remplir son objectif, fournir une aide à la navigation pour le terrain réel.
Un certain nombre d'exemples dans la question impliquent la création d'une représentation avec des mécanismes de soutien afin qu'une personne puisse utiliser la représentation et le mécanisme traduit les actions de la personne en ce qui est nécessaire pour la fonctionnalité sous-jacente qui est cachée par la façade de la représentation.
Les E / S de fichiers mappés en mémoire permettent à un programmeur de considérer un fichier comme une grande zone de mémoire, d'utiliser une représentation en mémoire d'un fichier réel. Le programmeur ne considère pas le fichier comme un fichier mais le considère plutôt comme une grande zone de mémoire. La fonctionnalité d'E / S de fichier mappé en mémoire veille à ce que lorsque le programmeur fait référence à un décalage de mémoire particulier, les données correspondantes du fichier soient accessibles.
Les E / S de périphérique mappé en mémoire permettent de simplifier une interface de programmation de périphérique en écrivant dans des adresses mémoire ou en lisant des adresses mémoire. Ces actions d'écriture et de lecture sont traduites par la fonctionnalité d'E / S de périphérique mappé en mémoire sous-jacente en actions spécifiques au périphérique réelles nécessaires pour exécuter le service ou l'action demandée.
Une mappe de bits est un ensemble de bits qui fournissent une correspondance un à un avec les valeurs d'un autre ensemble. Par exemple, la
CreateFile()
fonction de l'API Win32 a plusieurs arguments de mappage de bits qui sont utilisés pour indiquer différents types d'attributs de fichier. Des bits spécifiques dans une mappe de bits correspondent à un comportement de fichier spécifique tel que «Ouvrir en lecture seule» ou «Toujours créer un nouveau fichier vide». Des constantes spéciales sont fournies qui sont combinées à l'aide d'opérations binaires pour spécifier les arguments réels. Voir Fonction CreateFile et l'exemple de code source dans Ouverture d'un fichier en lecture ou en écriture .la source
Memory mapped file I/O
, est-ce une alternative aux E / S de fichiers standard (fopen, fgetc ..)? l'avantage de performance est-il dû à la nature de l'accès RAM plus rapide par rapport aux disques?setbuf()
fonction pour définir un grand tampon d'E / S de fichiers. Tout ce que vous pouvez faire pour réduire l'accès au périphérique de stockage a tendance à être un bonus. Pour les lecteurs de disque, la réduction du nombre de recherches peut faire une grande différence, mais il existe un certain nombre d'influences que vous ne pouvez pas faire grand-chose, comme l'organisation des données sur les plateaux de disques, la vitesse de rotation des plateaux, la vitesse de déplacement des têtes, la mise en cache des des données, dans quelle mesure les occurrences de cache réduisent le déplacement vers le disque électromécanique, etc.La cartographie est simplement le processus d'association d'une unité de données avec une autre unité de données. L'intention du mappage est de permettre un accès simplifié aux données mappées. Par exemple, dans les systèmes compatibles IBM classiques, l'adresse mémoire 0xB8000 a été mappée à la mémoire vidéo de la carte vidéo. L'écriture dans cette mémoire mettrait à jour le contenu de l'écran et la lecture de celui-ci récupérerait le contenu de l'écran. Le mappage de fichiers, le mappage de périphériques et même le mappage de structure de données (généralement appelé carte, HashMap ou dictionnaire) sont tous des moyens d'associer une unité de données à une autre unité de données.
La cartographie présente deux avantages principaux. Le premier est que le mappage réduit la complexité d'accès au périphérique ou au fichier associé. Par exemple, le mappage de fichiers et le mappage de périphériques vous permettent de traiter ces périphériques comme s'ils n'étaient que de la mémoire ordinaire. Au lieu d'apprendre différents ports d'E / S, commandes de données, etc., vous obtenez une interface simple qui est tout aussi naturelle et évidente que d'écrire sur la RAM.
Le deuxième avantage est qu'il peut réduire les besoins en mémoire. Par exemple, un
Map<Integer, SomeDataType>
peut produire un "tableau clairsemé", ce qui est utile lorsque vous voulez un tableau qui contiendra principalement des données invalides / inutilisées, et accessible en un temps quasi linéaire. Cela peut être beaucoup plus efficace qu'une liste chaînée (où il prend O ( n ) le temps d'accès à l' n -ième élément).Le mappage est principalement utilisé comme abstraction pour cacher des algorithmes / fonctions complexes au développeur afin qu'ils puissent se concentrer sur la tâche de mise en œuvre du programme. Notez que le mappage peut ne pas toujours être aussi efficace, en termes de temps de traitement, que d'accéder directement à l'appareil ou au fichier, mais est toujours moins compliqué que de le faire (par exemple, le mappage réduit la quantité de code spécialisé que le développeur doit écrire pour accéder aux données ).
la source