리눅스 매뉴얼 페이지 mmap(2)

1 개요[ | ]

mmap(2) — 리눅스 매뉴얼 페이지

리눅스 시스템에서 파일이나 장치의 내용을 프로세스의 주소 공간에 매핑하는 시스템 호출입니다. 이를 통해 파일이나 장치의 데이터에 대한 메모리 접근 방식을 사용하여 직접적으로 읽거나 쓸 수 있습니다. 이 기능은 효율적인 메모리 관리와 빠른 데이터 처리를 가능하게 합니다.

https://man7.org/linux/man-pages/man2/mmap.2.html

2 이름[ | ]

mmap, munmap - 파일이나 장치를 메모리에 매핑하거나 매핑 해제합니다.

3 라이브러리[ | ]

표준 C 라이브러리( libc , -lc )

4 시놉시스[ | ]

#include <sys/mman.h>

void *mmap(void addr[.length], size_t length, int prot, int flags, int fd, off_t offset);
int munmap(void addr[.length], size_t length);

기능 테스트 매크로 요구 사항에 대한 자세한 내용은 #참고를 참조하세요.

5 설명[ | ]

mmap()는 호출 프로세스의 가상 주소 공간에 새로운 매핑을 생성합니다. 새 매핑의 시작 주소는 addr에서 지정되며, length 인자는 매핑의 길이를 지정합니다(0보다 커야 함).

addr이 NULL이면, 커널이 매핑을 생성할 (페이지 정렬된) 주소를 선택합니다; 이것은 새 매핑을 생성하는 가장 이식성 높은 방법입니다. addr이 NULL이 아니면, 커널은 매핑을 배치할 위치에 대한 힌트로서 그것을 받아들이며, 리눅스에서는 커널이 근처의 페이지 경계를 선택하고(항상 /proc/sys/vm/mmap_min_addr에 의해 지정된 값 이상이거나 같음) 그곳에 매핑을 시도합니다. 만약 그곳에 다른 매핑이 이미 존재한다면, 커널은 힌트에 의존할 수도 있고 그렇지 않을 수도 있는 새로운 주소를 선택합니다. 새 매핑의 주소는 호출의 결과로 반환됩니다.

파일 매핑(익명 매핑과 대조적으로; MAP_ANONYMOUS 아래 참조)의 내용은, 파일 설명자 fd가 가리키는 파일(또는 다른 객체)에서 offset에서 시작하는 length 바이트를 사용하여 초기화됩니다. offset은 sysconf(_SC_PAGE_SIZE)에 의해 반환된 페이지 크기의 배수여야 합니다.

mmap() 호출이 반환된 후에는, 파일 설명자 fd는 매핑을 무효화하지 않고 즉시 닫을 수 있습니다.

6 반환 값[ | ]

7 오류[ | ]

8 속성[ | ]

9 버전[ | ]

10 표준[ | ]

POSIX.1-2008.

11 역사[ | ]

POSIX.1-2001, SVr4, 4.4BSD.

mmap(), msync(2), munmap()을 사용할 수 있는 POSIX 시스템에서는 _POSIX_MAPPED_FILES가 <unistd.h>에 0보다 큰 값으로 정의됩니다. (sysconf(3)도 참조하세요.)

12 참고[ | ]

13 버그[ | ]

14 예시[ | ]

15 같이 보기[ | ]

proc(5)에 다음 파일에 대한 설명: /proc/pid/maps, /proc/pid/map_files, /proc/pid/smaps

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}