검색

9.4. mmap() 시스템 호출을 사용하여 파일 또는 장치를 메모리에 매핑

download PDF

실시간 시스템에서 대용량 메모리 할당의 경우malloc(메모리 할당) 방법은 mmap() 시스템 호출을 사용하여 메모리 공간을 찾습니다. flags 매개변수에서 MAP_LOCKED 를 설정하여 메모리 영역을 할당하고 잠글 수 있습니다. mmap() 은 페이지를 기준으로 메모리를 할당하므로 동일한 페이지에서 두 개의 잠금을 방지하여 이중 잠금 또는 단일 잠금 문제가 발생하지 않습니다.

사전 요구 사항

  • 시스템에 대한 root 권한이 있습니다.

절차

  • 특정 프로세스 주소 공간을 매핑하려면 다음을 수행합니다.

    #include <sys/mman.h>
    #include <stdlib.h>
    
    void *alloc_workbuf(size_t size)
    {
     void *ptr;
    
     ptr = mmap(NULL, size, PROT_READ | PROT_WRITE,
                MAP_PRIVATE | MAP_ANONYMOUS | MAP_LOCKED, -1, 0);
    
     if (ptr == MAP_FAILED)
      return NULL;
    
     return ptr;
    }
    
    void
    free_workbuf(void *ptr, size_t size)
    {
     munmap(ptr, size);
    }

검증

  • mmap() 함수가 성공적으로 완료되면 매핑된 영역에 포인터를 반환합니다. error에서 MAP_FAILED 값을 반환하고 오류를 나타내는 errno 를 설정합니다.
  • munmap() 함수가 성공적으로 완료되면 0 을 반환합니다. error에서 -1 을 반환하고 errno 를 설정하여 오류를 나타냅니다.

추가 리소스

  • mmap(2) 매뉴얼 페이지
  • mlockall(2) 매뉴얼 페이지
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.