Eu encontrei o termo muitas vezes, em vários materiais educacionais de CS:
L2 CS162 (UC Berkeley):
E / S mapeada na memória
L4 CS162 (UC Berkeley):
Arquivos mapeados na memória
L24 CS61 (UC Berkeley):
“E / S mapeada na memória”: Registros de controle / dados do dispositivo mapeados no espaço de endereço da CPU
- Mesmo depois de pesquisar no "mapeamento", recebi o artigo Map_ (função de ordem superior) , mas não estava muito claro para mim.
Ainda mais, tentou entender o significado no contexto de
bitmap
lendo o artigo da Wikipedia :Uma matriz de bits é um mapeamento de algum domínio (quase sempre um intervalo de números inteiros) para valores no conjunto {0, 1}
Não tenho certeza, mas no contexto acima me parece conversão de dados.
Mais tarde, depois de ler um livro de CS, encontrei apenas este parágrafo, mas ele não explicava o significado de "mapeamento" para mim:
Mapeamento de memória O Linux (junto com outras formas de Unix) inicializa o conteúdo de uma área de memória virtual, associando-o a um objeto em disco, um processo conhecido como mapeamento de memória.
Também obtive o MapReduce como resultado da pesquisa: onde o mapa é explicado como "um idioma na computação paralela, onde uma operação simples é aplicada a todos os elementos de uma sequência, potencialmente em paralelo".
Ainda estou confuso sobre o termo. Alguém pode explicar o que significa "mapa" nos contextos que mencionei?
Functor
nome do link - muito pouco para sugerir uma edição.)map
função retorna um resultado em que cada elemento está associado ao elemento correspondente da entrada. A distinção é que o primeiro uso descreve um relacionamento existente, enquanto o segundo se refere a uma operação que cria o relacionamento.A seguir, serei menos que preciso de várias maneiras, sacrificando a precisão técnica para fornecer um entendimento básico. É óbvio que você leu várias fontes técnicas e a própria técnica do material está dificultando a compreensão do que é um conceito bastante básico e simples.
Em termos simples, o uso mais comum da palavra mapa é descrever um relacionamento entre as coisas em dois conjuntos diferentes. Isso pode ser uma função matemática ou pode ser algum outro tipo de representação e mecanismo. O mais comum que vem imediatamente à mente é o mapa de ruas.
Um mapa de ruas é uma figura de um terreno ou área específica no mundo real, em que as linhas, desenhos e palavras escritas no mapa correspondem a ruas e edifícios físicos reais. Existe uma relação individual entre a representação do terreno que é retratada no mapa da rua e o terreno real.
Olhando além, também podemos ver que um mapa de ruas é uma representação do terreno real. O terreno real possui objetos e detalhes e processos dinâmicos que o mapa de ruas não representa. O mapa de ruas é uma representação abstrata do terreno real e o que é representado no mapa de ruas é apenas o necessário para cumprir sua finalidade, fornecer uma ajuda à navegação para o terreno real.
Vários exemplos da pergunta envolvem a criação de uma representação com mecanismos de suporte para que uma pessoa possa usar a representação e o mecanismo converta as ações da pessoa no que é necessário para a funcionalidade subjacente oculta pela fachada da representação.
A E / S de arquivos mapeados na memória permite que um programador pense em um arquivo como uma grande área de memória, para usar uma representação de memória de um arquivo real. O programador não pensa no arquivo como um arquivo, mas como uma grande área de memória. A funcionalidade de E / S de arquivos mapeados na memória cuida para garantir que, quando o programador fizer referência a um deslocamento de memória específico, os dados correspondentes no arquivo sejam acessados.
A E / S do dispositivo mapeado na memória permite que uma interface de programação do dispositivo seja simplificada gravando nos endereços de memória ou lendo os endereços de memória. Essas ações de gravação e leitura são convertidas pela funcionalidade de E / S do dispositivo mapeado na memória subjacente nas ações específicas específicas do dispositivo necessárias para executar o serviço ou a ação solicitada.
Um mapa de bits é um conjunto de bits que fornece uma correspondência de um para um aos valores de outro conjunto. Por exemplo, a
CreateFile()
função da API do Win32 possui vários argumentos de mapa de bits usados para indicar diferentes tipos de atributos de arquivo. Bits específicos em um mapa de bits correspondem a um comportamento específico do arquivo, como "Abrir como Somente Leitura" ou "Sempre Criar Novo Arquivo Vazio". São fornecidas constantes especiais que são combinadas usando operações de bits binários para especificar os argumentos reais. Consulte Função CreateFile e o código-fonte de exemplo em Abrindo um arquivo para leitura ou gravação .fonte
Memory mapped file I/O
, é uma alternativa à E / S padrão do arquivo (fopen, fgetc ..)? é a vantagem de desempenho devido à natureza do acesso à RAM mais rápido em comparação com os discos?setbuf()
função para definir um buffer de E / S de arquivos grandes. Tudo o que você pode fazer para reduzir o acesso ao dispositivo de armazenamento tende a ser um bônus. Para unidades de disco, a redução do número de pesquisas pode fazer uma grande diferença, no entanto, existem várias influências sobre as quais você não pode fazer muita coisa, como a organização dos dados nos pratos, velocidade de rotação dos pratos, velocidade de movimento da cabeça, armazenamento em cache de de dados, como também acessos ao cache reduzem indo para o disco electro-mecânica, etc.Mapear é simplesmente o processo de associar uma unidade de dados a outra unidade de dados. A intenção do mapeamento é permitir acesso simplificado aos dados mapeados. Por exemplo, nos sistemas clássicos compatíveis com IBM, o endereço de memória 0xB8000 foi mapeado para a memória de vídeo da placa de vídeo. Escrever nesta memória atualizaria o conteúdo da tela e a leitura dela recuperaria o conteúdo da tela. Mapeamento de arquivos, mapeamento de dispositivos e até mesmo mapeamento de estrutura de dados (normalmente chamado de Mapa, HashMap ou Dicionário), são formas de associar uma unidade de dados a outra unidade de dados.
O mapeamento tem dois benefícios principais. A primeira é que o mapeamento reduz a complexidade de acessar o dispositivo ou arquivo associado. Por exemplo, o mapeamento de arquivos e o mapeamento de dispositivos permitem tratar esses dispositivos como se fossem apenas memória simples. Em vez de aprender várias portas de E / S, comandos de dados e assim por diante, você obtém uma interface simples que é tão natural e óbvia quanto gravar na RAM.
O segundo benefício é que ele pode reduzir os requisitos de memória. Por exemplo, a
Map<Integer, SomeDataType>
pode produzir uma "matriz esparsa", útil quando você deseja uma matriz que contenha principalmente dados inválidos / não utilizados e possa ser acessada em tempo quase linear. Isso pode ser muito mais eficiente do que uma lista vinculada (onde leva O ( n ) tempo para acessar o n- ésimo elemento).O mapeamento é usado principalmente como uma abstração para ocultar algoritmos / funções complicadas do desenvolvedor, para que eles possam se concentrar na tarefa de implementar o programa. Observe que o mapeamento nem sempre pode ser tão eficiente, em termos de tempo de processamento, como acessar o dispositivo ou arquivo diretamente, mas é sempre menos complicado do que fazê-lo (por exemplo, o mapeamento reduz a quantidade de código especializado que o desenvolvedor deve escrever para acessar os dados )
fonte