He encontrado el término muchas veces, en varios materiales educativos de CS:
L2 CS162 (UC Berkeley):
E / S mapeadas en memoria
L4 CS162 (UC Berkeley):
Archivos mapeados de memoria
L24 CS61 (UC Berkeley):
"E / S asignadas a memoria": registros de control / datos del dispositivo asignados al espacio de direcciones de la CPU
- Incluso, después de buscar en Google "mapeo", recibí el artículo Map_ (función de orden superior) , pero no estaba muy claro para mí.
Aún más, traté de entender el significado en el contexto de
bitmap
al leer el artículo de Wikipedia :Una matriz de bits es una asignación de algún dominio (casi siempre un rango de enteros) a valores en el conjunto {0, 1}
No estoy seguro, pero en el contexto anterior me parece acerca de la conversión de datos.
Más tarde, después de leer un libro de CS, encontré solo este párrafo, pero no explicaba el significado de "mapeo" para mí:
Mapeo de memoria Linux (junto con otras formas de Unix) inicializa el contenido de un área de memoria virtual al asociarlo con un objeto en el disco, un proceso conocido como mapeo de memoria.
También obtuve MapReduce como resultado de búsqueda: donde el mapa se explica como "un modismo en la computación paralela donde se aplica una operación simple a todos los elementos de una secuencia, potencialmente en paralelo".
Todavía estoy confundido sobre el término. ¿Alguien puede explicar qué significa "mapa" en los contextos que mencioné?
Functor
nombre del enlace, demasiado pequeño para sugerir una edición.)map
función devuelve un resultado donde cada elemento está asociado con el elemento correspondiente de la entrada. La distinción es que el primer uso describe una relación existente, mientras que el segundo se refiere a una operación que crea la relación.En lo que sigue voy a ser menos que exacto de varias maneras, sacrificando la precisión técnica para proporcionar una comprensión básica. Es obvio que ha leído una serie de fuentes técnicas y que la misma tecnicidad del material le dificulta comprender qué es un concepto bastante básico y simple.
En términos simples, el uso más común de la palabra mapa es describir una relación entre las cosas en dos conjuntos diferentes. Esta puede ser una función matemática o puede ser algún otro tipo de representación y mecanismo. Lo más común que viene a la mente de inmediato es el mapa de calles.
Un mapa de calles es una imagen de un terreno o área particular en el mundo real en el que las líneas y dibujos y palabras escritas en el mapa corresponden a calles y edificios físicos reales. Existe una relación uno a uno entre la representación del terreno que se muestra en el mapa de calles y el terreno real.
Mirando más allá, también podemos ver que un mapa de calles es una representación del terreno real. El terreno real tiene objetos y detalles y procesos dinámicos que el mapa de calles no representa. El mapa de calles es una representación abstracta del terreno real y lo que se representa en el mapa de calles es solo lo que se necesita para cumplir su propósito, para proporcionar una ayuda de navegación para el terreno real.
Varios de los ejemplos en la pregunta implican crear una representación con mecanismos de apoyo para que una persona pueda usar la representación y el mecanismo traduzca las acciones de la persona en lo que se necesita para la funcionalidad subyacente que está oculta por la fachada de la representación.
La E / S de archivo mapeada en memoria permite a un programador pensar en un archivo como un área grande de memoria, para usar una representación de memoria de un archivo real. El programador no piensa en el archivo como un archivo, sino que lo considera como un área grande de memoria. La funcionalidad de E / S del archivo mapeado en memoria se asegura de que cuando el programador haga referencia a un desplazamiento de memoria particular, se acceda a los datos correspondientes en el archivo.
La E / S del dispositivo mapeado en memoria permite simplificar la interfaz de programación de un dispositivo escribiendo en direcciones de memoria o leyendo desde direcciones de memoria. Estas funciones de escritura y lectura se traducen mediante la funcionalidad de E / S del dispositivo mapeado en la memoria subyacente en las acciones específicas del dispositivo real necesarias para llevar a cabo el servicio o acción solicitada.
Un mapa de bits es un conjunto de bits que proporciona una correspondencia uno a uno con los valores de algún otro conjunto. Por ejemplo, la
CreateFile()
función de la API Win32 tiene varios argumentos de mapa de bits que se utilizan para indicar diferentes tipos de atributos de archivo. Los bits específicos en un mapa de bits corresponden a un comportamiento de archivo específico como "Abrir como solo lectura" o "Crear siempre un nuevo archivo vacío". Se proporcionan constantes especiales que se combinan mediante operaciones de bits binarios para especificar los argumentos reales. Consulte la función CreateFile y el código fuente de ejemplo en Abrir un archivo para leer o escribir .fuente
Memory mapped file I/O
, ¿es una alternativa a la E / S de archivos estándar (fopen, fgetc ..)? ¿Cuál es la ventaja de rendimiento debido a la naturaleza del acceso RAM más rápido en comparación con los discos?setbuf()
función para establecer un búfer de E / S de archivos grandes. Cualquier cosa que pueda hacer para reducir el acceso al dispositivo de almacenamiento tiende a ser una ventaja. Para las unidades de disco, reducir el número de búsquedas puede marcar una gran diferencia, sin embargo, hay una serie de influencias sobre las que no se puede hacer mucho, como la forma en que se organizan los datos en los discos de disco, la velocidad de rotación de los platos, la velocidad de movimiento de la cabeza, el almacenamiento en caché de datos, qué tan bien los golpes de caché reducen el acceso al disco electromecánico, etc.El mapeo es simplemente el proceso de asociar una unidad de datos con otra unidad de datos. La intención del mapeo es permitir un acceso simplificado a los datos mapeados. Por ejemplo, en los sistemas clásicos compatibles con IBM, la dirección de memoria 0xB8000 se asignó a la memoria de video de la tarjeta de video. Escribir en esta memoria actualizaría el contenido de la pantalla, y leer desde ella recuperaría el contenido de la pantalla. El mapeo de archivos, el mapeo de dispositivos e incluso el mapeo de estructura de datos (típicamente llamado Mapa, HashMap o Diccionario), son todas formas de asociar una unidad de datos con otra unidad de datos.
El mapeo tiene dos beneficios principales. El primero es que el mapeo reduce la complejidad de acceder al dispositivo o archivo asociado. Por ejemplo, la asignación de archivos y la asignación de dispositivos le permiten tratar esos dispositivos como si fueran solo memoria simple. En lugar de aprender varios puertos de E / S, comandos de datos, etc., obtienes una interfaz simple que es tan natural y obvia como escribir en la RAM.
El segundo beneficio es que puede reducir los requisitos de memoria. Por ejemplo, a
Map<Integer, SomeDataType>
puede producir una "matriz dispersa", que es útil cuando desea una matriz que contendrá principalmente datos no válidos / no utilizados, y se puede acceder en un tiempo casi lineal. Esto puede ser mucho más eficiente que una lista vinculada (donde toma O ( n ) tiempo acceder a la n elemento -ésima).El mapeo se utiliza principalmente como una abstracción para ocultar algoritmos / funciones complicadas del desarrollador para que puedan centrarse en la tarea de implementar el programa. Tenga en cuenta que el mapeo no siempre es tan eficiente, en términos de tiempo de procesamiento, como acceder directamente al dispositivo o archivo, pero siempre es menos complicado que hacerlo (por ejemplo, el mapeo reduce la cantidad de código especializado que el desarrollador debe escribir para acceder a los datos )
fuente