검색

9장. RHEL for Real Time에서 mlock() 시스템 호출 사용

download PDF

RHEL for Real-Time 메모리 잠금(mlock())기능을 사용하면 실시간 호출 프로세스가 주소 공간의 지정된 범위를 잠그거나 잠금 해제할 수 있습니다. 이 범위는 메모리 공간을 스왑할 때 Linux가 잠긴 메모리를 페이징하지 못하도록 합니다. 페이지 테이블 항목에 실제 페이지를 할당하면 해당 페이지에 대한 참조가 빨라집니다. mlock() 시스템 호출에는 mlock() 및 mlockall() 의 두 가지 함수가 있습니다. 마찬가지로 munlock() 시스템 호출에는 munlock()munlockall() 함수가 포함됩니다.

9.1. mlock() 및 munlock() 시스템 호출

mlock()mlockall() 시스템 호출은 지정된 메모리 범위를 잠그고 이 메모리를 페이징하지 않습니다. 다음은 mlock() 시스템 호출 그룹입니다.

  • mlock() 시스템 호출: 지정된 주소 범위를 잠급니다.
  • munlock() 시스템 호출: 지정된 주소 범위를 잠금 해제합니다.

mlock() 시스템 호출, 주소 범위의 페이지 잠금은 addr 에서 시작하여 len 바이트를 계속합니다. 호출이 성공적으로 반환되면 지정된 주소 범위의 일부가 포함된 모든 페이지는 나중에 잠금 해제할 때까지 메모리에 유지됩니다.

mlockall() 시스템 호출을 사용하면 매핑된 모든 페이지를 지정된 주소 범위로 잠글 수 있습니다. 메모리 잠금은 스택이 아닙니다. 여러 호출에 의해 잠긴 모든 페이지는 지정된 주소 범위 또는 단일 munlock() 시스템 호출을 사용하여 전체 영역의 잠금을 해제합니다. munlockall() 시스템 호출을 사용하면 전체 프로그램 공간을 잠금 해제할 수 있습니다.

특정 범위에 포함된 페이지의 상태는 플래그 인수의 값에 따라 다릅니다. flags 인수는 0 또는 MLOCK_ONFAULT 일 수 있습니다.

메모리 잠금은 포크를 통해 하위 프로세스에서 상속되지 않으며 프로세스가 종료될 때 자동으로 제거됩니다.

주의

mlock() 시스템 호출을 주의해서 사용하십시오. 과도하게 사용하면 OOM(메모리 부족) 오류가 발생할 수 있습니다. 애플리케이션이 크거나 큰 데이터 도메인이 있는 경우 mlock() 호출은 시스템이 다른 작업에 메모리를 할당할 수 없는 경우 제한될 수 있습니다.

실시간 프로세스에 대한 mlockall() 호출을 사용하는 경우 충분한 스택 페이지를 예약해야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.