Eu acho que depende do que você entende por "ciente".
Na medida em que a chamada de sistema read() s é uma solicitação ao kernel para copiar o conteúdo de um arquivo que inicia na posição atual para o buffer de memória designado pelo programa, read() em um arquivo regular executará a mesma tarefa forma ou não existe simultaneamente um mapeamento de memória do arquivo. Não há "consciência".
Agora, o arquivo é mmap() ed e read() , pode haver uma otimização de desempenho a ser alcançada. Por exemplo, se o arquivo for read() primeiro, as seções do arquivo que foram lidas provavelmente já estarão no cache de páginas e, posteriormente, o acesso ao mapeamento de memória não precisará acessá-las novamente a partir do disco. Ou, inversamente, se houver um mapeamento de memória que já tenha sido paginado, um read() subseqüente não precisará ir para o disco novamente. Então, nesse sentido, você pode, de alguma forma, considerar os mmap() e read() "conscientes" um do outro.