[리눅스] C언어 MMAP 설명 및 예제
- 최초 등록일
- 2020.12.21
- 최종 저작일
- 2020.12
- 6페이지/ 한컴오피스
- 가격 1,000원
소개글
리눅스 환경에서의 MMAP 설명 및 예제
1. 함수 설명
2. 예제
3. 자세한 주석
목차
1. 개념 정리
1) MMAP이란?
2) 사용법
2. 함수 설명
3. 소스 코드(C)
4. 실행 결과 스크린샷
본문내용
(1) MMAP이란?
mmap() 함수는 fd로 지정된 파일(혹은 다른 객체)에서 offset을 시작으로 length바이트 만큼을 start주소로 메모리에 대응(매핑)시킨다. start주소는 단지 그 주소를 사용했으면 좋겠다는 정도로 보통 0을 지정한다. mmap는 지정된 영역이 대응된 실제 시작 위치를 반환한다. prot인자는 원하는 메모리:::보호모드(:12)를 설정한다. 이 함수는 커널에 요청하는 것으로 사용할 수 있는 비트는 다음과 같다.
○ PROT_EXEC 페이지는 실행가능하다.
○ PROT_READ 페이지는 읽을 수 있다.
○ PROT_WRITE 페이지는 쓰여질 수 있다.
○ PROT_NONE 페이지는 접근할 수 없다.
○ flags는 대응된 객체의 타입, 대응 옵션, 대응된 페이지 복사본에 대한 수정이 그 프로세스(:12)에서만 보일 것인지 아니면, 다른 참조하는 프로세스와 공유할 것인지를 설정한다. 다음과 같은 비트들을 사용할 수 있다.
○ MAP_FIXED 지정된 주소 이외의 다른 주소를 선택하지 않는다. 지정된 주소가 사용될 수 없다면 mmap()는 실패한다. 만일 MAP_FIXED가 지정되면, start는 페이지 크기의 배수이어야 한다. 이 옵션은 사용하지 않는 것이 좋다.
○ MAP_FIXED 지정된 주소 이외의 다른 주소를 선택하지 않는다. 지정된 주소가 사용될 수 없다면 mmap()는 실패한다. 만일 MAP_FIXED가 지정되면, start는 페이지 크기의 배수이어야 한다. 이 옵션은 사용하지 않는 것이 좋다.
참고 자료
https://man7.org/linux/man-pages/man2/mmap.2.html