2.3. mlock 시스템 호출


메모리 잠금(mlock()) 시스템 호출을 사용하면 프로세스를 호출하여 지정된 주소 공간 범위를 잠그거나 잠금 해제하여 Linux가 잠긴 메모리를 스왑 공간으로 페이징하지 못하도록 합니다. 페이지 테이블 항목에 실제 페이지를 할당한 후에는 해당 페이지에 대한 참조가 상대적으로 빠릅니다. 메모리 잠금 시스템 호출은 mlock()munlock() 카테고리로 분류됩니다.

mlock()munlock() 시스템은 잠금을 호출하고 지정된 프로세스 주소 페이지의 범위를 잠금 해제합니다. 성공하면 munlock() 시스템 호출이 페이지를 잠금 해제할 때까지 지정된 범위의 페이지가 메모리에 남아 있습니다.

mlock()munlock() 시스템 호출에는 다음과 같은 매개변수가 필요합니다.

  • addr: 주소 범위의 시작을 지정합니다.
  • Len: 주소 공간의 길이를 바이트 단위로 지정합니다.

성공하면 mlock()munlock() 시스템 호출은 0을 반환합니다. 오류가 발생하면 -1을 반환하고 오류를 나타내기 위해 errno 를 설정합니다.

mlockall()munlockall() 시스템 호출은 모든 프로그램 공간을 잠금 또는 잠금 해제합니다.

참고

mlock() 시스템 호출은 프로그램에 페이지 I/O가 없는지 확인하지 않습니다. 데이터가 메모리에 유지되지만 동일한 페이지에 유지되도록 보장할 수 없습니다. move_pages 및 메모리 컴팩트기와 같은 다른 함수는 mlock() 의 사용과 관계없이 데이터를 이동할 수 있습니다.

메모리 잠금은 페이지 기반으로 생성되며 스택되지 않습니다. 동적으로 할당된 두 개의 메모리 세그먼트가 mlock() 또는 mlockall() 에 의해 두 번 잠긴 동일한 페이지를 공유하는 경우 단일 munlock() 또는 munlockall() 시스템 호출을 사용하여 잠금을 해제합니다. 따라서 이중 잠금 또는 단일 잠금 해제 문제를 방지하기 위해 애플리케이션이 잠금 해제하는 페이지를 알고 있어야 합니다.

다음은 이중 잠금 또는 단일 잠금 문제를 완화하는 가장 일반적인 두 가지 해결 방법입니다.

  • 할당 및 잠긴 메모리 영역을 추적하고 페이지를 잠금 해제하기 전에 페이지 할당 수를 확인하는 래퍼 함수를 생성합니다. 장치 드라이버에서 사용되는 리소스 수 계산 원칙입니다.
  • 페이지에서 이중 잠금을 방지하기 위해 페이지 크기 및 정렬을 기반으로 메모리 할당을 만듭니다.
작은 정보

자세한 내용은 시스템의 다음 도움말 페이지를 참조하십시오.

  • capabilities(7), mmap(2), move_pages(2)
  • mlock(2), mlock Cryostat, mlockall(2)
  • posix_memalign Cryostatposix_memalign(3p)
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동