2장. RHEL for Real Time의 메모리 관리


실시간 시스템은 사용자 공간 애플리케이션에서 참조하는 주소가 실제 주소로 변환되는 가상 메모리 시스템을 사용합니다. 변환은 기본 컴퓨팅 시스템에서 페이지 테이블 및 주소 변환 하드웨어의 조합을 통해 수행됩니다. 프로그램과 실제 메모리 사이에 변환 메커니즘을 갖는 장점은 운영 체제가 필요할 때 또는 CPU 요청 시 페이지를 스왑 할 수 있다는 것입니다.

실시간으로 스토리지에서 기본 메모리로 페이지를 스왑하기 위해 이전에 사용한 페이지 테이블 항목이 유효하지 않은 것으로 표시됩니다. 결과적으로 정상적인 메모리 부족 상태에서도 운영 체제는 한 애플리케이션에서 페이지를 검색하고 다른 애플리케이션에 제공할 수 있습니다. 이로 인해 예기치 않은 시스템 동작이 발생할 수 있습니다.

메모리 할당 구현에는 수요 페이징 메커니즘 및 메모리 잠금(mlock()) 시스템 호출이 포함됩니다.

참고

다른 캐시 및 NUMA 도메인에서 CPU에 대한 데이터 정보를 공유하면 트래픽 문제와 병목 현상이 발생할 수 있습니다.

다중 스레드 애플리케이션을 작성할 때 데이터 할당을 설계하기 전에 머신 토폴로지를 고려하십시오. 토폴로지는 메모리 계층 구조이며 CPU 캐시와 NUMA(Non-Uniform Memory Access) 노드를 포함합니다.

2.1. 요청 페이징

수요 페이징은 페이지 스와핑이 있는 페이징 시스템과 유사합니다. 시스템은 필요한 경우 또는 CPU 요구에 따라 보조 메모리에 저장된 페이지를 로드합니다. 프로그램에서 생성된 모든 메모리 주소는 프로세서의 주소 변환 메커니즘을 통과합니다. 그러면 주소가 프로세스별 가상 주소에서 실제 메모리 주소로 변환됩니다. 이를 가상 메모리라고 합니다. 변환 메커니즘의 두 가지 주요 구성 요소는 페이지 테이블 및 변환 조회 버퍼(TLB)입니다.

페이지 테이블

페이지 테이블은 가상 메모리와 실제 메모리에 대한 매핑을 포함하는 물리적 메모리의 다중 수준 테이블입니다. 이러한 매핑은 프로세서의 가상 메모리 변환 하드웨어에서 읽을 수 있습니다.

할당된 물리적 주소를 가진 페이지 테이블 항목을 상주 작업 세트라고 합니다. 운영 체제가 다른 프로세스의 메모리를 해제해야 하는 경우 상주 작업 집합에서 페이지를 스왑할 수 있습니다. 페이지를 스와핑할 때 해당 페이지 내의 가상 주소에 대한 참조로 페이지 폴트가 생성되고 페이지가 재할당됩니다.

시스템이 물리적 메모리에서 매우 낮으면 스왑 프로세스가 중단되기 시작하여 프로세스에서 페이지를 지속적으로 훔치고 프로세스를 완료할 수 없습니다. /proc/vmstat 파일에서 pgfault 값을 확인하여 가상 메모리 통계를 모니터링할 수 있습니다.

번역 조회 버퍼

TLB(Transformation Lookaside Buffers)는 가상 메모리 변환의 하드웨어 캐시입니다. TLB가 있는 프로세서 코어는 페이지 테이블 항목의 메모리 읽기를 시작하는 것과 함께 TLB를 병렬로 확인합니다. 가상 주소의 TLB 항목이 유효한 경우 메모리 읽기가 중단되고 TLB의 값이 주소 변환에 사용됩니다.

TLB는 참조의 지역성 원칙에 따라 작동합니다. 즉, 코드가 상당한 기간 동안 메모리의 한 영역에 남아 있으면 (예: 루프 또는 호출 관련 기능) TLB 참조는 주소 변환의 주요 메모리를 사용하지 않습니다. 이는 처리 시간을 크게 가속화할 수 있습니다.

결정적 및 빠른 코드를 작성할 때 참조의 현지성을 유지하는 함수를 사용합니다. 이는 재귀 대신 루프를 사용하는 것을 의미할 수 있습니다. 재귀를 피할 수 없는 경우 함수 끝에 재귀 호출을 배치합니다. 이를 tail-recursion이라고 하며, 이를 통해 비교적 작은 메모리 영역에서 코드가 작동하고 기본 메모리에서 테이블 번역을 호출하는 것을 방지할 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동