mmap에 대해 좀 더 잘 이해하려고합니다. 나는 최근 관련 유래 질문이 허용 대답이 부분 (아래 인용)를 읽어 mmap and memory usagemmap()은 특정 오프셋에서 일반 Posix I/O에 비해 정보를 읽는 데 어떤 도움이됩니까
의 당신의 데이터 100MB의 청크를 읽을 수 있다고 가정 해 봅시다, 그리고 헤더 데이터의 초기 1메가바이트, 정보에 따라 그 원하는 오프셋은 75MB이므로 1 ~ 74.9MB 사이의 값은 필요하지 않습니다! 을 읽으면서 코드를 단순하게 만들었습니다. mmap을 사용하면 만 실제로 액세스 한 데이터 (반올림 된 4kb 또는 OS 페이지 크기, 대부분 4kb)를 읽을 수 있으므로 첫 번째와 번째 75 번째 MB를 읽습니다.
mmap의 장점 (컨텍스트 스위치가 필요없고 콘텐츠를 교환 할 필요가 없음)을 이해하지만이 오프셋을 이해하지 못합니다. 우리가 mmap을하지 않고 75 번째 MB 오프셋에서 정보가 필요하다면 mmap을 사용하지 않고 표준 POSIX 파일 I/O 호출로 그렇게 할 수 없습니까? 왜 mmap이 정확히 여기에서 도움이됩니까?
'mmap()'은 과장된 해결책 인 경향이 있습니다. 리누스 토발즈 (Linus Torvalds) 자신이 작성한 [이 게시물 (http://marc.info/?l=linux-kernel&m=95496636207616&w=2)]은 데이터에 대한'mmap()'접근이 3 배나 많은 양의 불편을 겪었습니다 'read()'를 사용하여 간단히 시간을 저장한다. –