본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/19장: 메모리 매니지먼트

(7)
[Arm프로세서] MMU에서 주소를 변환하는 과정 MMU에서 가상 주소를 물리 주소로 변환하는 구조를 알아봤으니 변환 테이블의 내부 구조와 가상 주소가 물리 주소로 변환되는 실행 흐름을 알아봅시다. 페이지 테이블 엔트리 변환 테이블을 통해 가상 주소를 물리 주소로 변환하려면 먼저 가상 주소의 형식을 알아야 합니다. 가상 주소 영역을 일정한 크기의 블록으로 나눌 수 있는데, 여기서 한 개의 테이블 엔트리는 한 개의 블록에 해당됩니다. 그림 19.7 가상 주소가 변환 테이블을 통해 물리 주소로 변환되는 흐름 각각의 엔트리는 물리 메모리에서 해당되는 블록 주소와 물리 주소에 접근할 때 사용할 속성으로 구성돼 있습니다. 변환 테이블은 일종의 엔트리 블록으로 구성돼 있습니다. 변환 테이블에 있는 엔트리 0은 블록 0, 엔트리 1는 블록 1에 대한 매핑 정보를 제..
[Arm프로세서] MMU를 구성하는 주요 기능 MMU의 주된 역할은 가상 주소를 물리 주소로 변환하는 일입니다. 그렇다면 MMU는 어떻게 구성돼 있고 어떤 과정으로 가상 주소를 물리 주소로 변환할까요? 다음 그림을 보면서 MMU의 실행 흐름에 대해 알아봅시다. 출처: Learn the architecture - AArch64 memory management https://developer.arm.com/documentation/101811/latest/ 그림 19.6 MMU를 통해 주소가 변환되는 흐름 프로세스가 가상 주소에 접근하면 먼저 MMU에게 주소가 전달됩니다. MMU는 먼저 TLB(Translation Lookaside Buffer)에 해당 주소에 대한 변환 정보가 있는지 확인합니다. 여기서 TLB는 최근에 사용된 주소 변환 정보를 담고 있..
[Arm프로세서] 운영체제 관점에서 메모리 매니지먼트란? 이번에는 다음 그림을 통해 가상 주소와 물리 주소 공간이 어떻게 구성됐는지 알아봅시다. 그리고 가상 주소를 물리 주소로 변환하는 변환 테이블에 대해서도 배워 봅시다. 그림 19.5 소프트웨어 관점에서 본 가상 주소 공간과 물리 주소 공간 그림의 왼쪽 부분부터 봅시다. 왼쪽 부분은 소프트웨어 관점에서 본 가상 주소 공간을 나타냅니다. 가상 주소에는 각각 영역별로 특정 속성을 지닌 코드와 데이터가 존재합니다. 소프트웨어를 실행하는 주인공인 프로세스는 가상 주소 공간에서 실행됩니다. 프로세스가 가상 주소 공간에서 어떤 명령어를 실행하면 메모리에 위치한 변환 테이블에 접근합니다. 이는 그림의 가운데 부분에 해당됩니다. 변환 테이블에 의해 가상 주소는 물리 주소 공간에 접근합니다. 여기서 가운데 존재하는 '변환 ..
[Arm프로세서] 가상 주소와 물리 주소의 개념 리눅스를 비롯한 대부분의 운영체제에서는 가상 메모리를 메모리 관리 기법으로 활용합니다. 이번에는 가상 메모리와 물리 주소에 대해 알아보고 가상 메모리 기법이 적용된 이유를 알아봅시다. 대부분의 운영체제는 다양한 메모리(DRAM) 상에서 실행될 수 있는데, 다음 그림은 가상 메모리 기법을 적용하기 전의 시스템 구조도입니다. 그림 19.2 물리 메모리와 메모리 시스템의 관계 물리 메모리가 '물리 메모리 A' ~ '물리 메모리 D'까지 있습니다. 만약 소프트웨어 개발자가 물리 메모리 타입에 따라 주소 오프셋을 변경하는 설정을 하거나 추가로 물리 메모리와 관련된 설정을 하면 소프트웨어의 복잡도가 많이 늘어날 수 있습니다. 물리 메모리에 대한 예외 상황을 점검해야 하니 골치가 아플 것입니다. 하드웨어 측면에서는 ..
[Arm프로세서] MMU 란 MMU(Memory Management Unit)란 무엇일까요? 가상 주소를 물리 주소로 변환하는 일을 하는 주인공이 MMU입니다. MMU는 하드웨어 블록으로 Arm 프로세서 내부에 존재합니다. MMU를 눈으로 직접 확인하고 싶지만 Arm 코어와 함께 MMU가 내부에 실장돼 있어 확인할 수는 없습니다. 최근에 개발되는 대부분 시스템에서 프로세스는 MMU를 활성화한 상태에서 실행됩니다. 그래서 MMU를 활성화하면 운영체제에서 실행되는 프로세스가 바라보는 주소는 가상 주소입니다. 여기서 ‘가상’이라는 용어는 말 그대로 세상에 존재하지 않는 논리적인 개념으로 볼 수 있습니다. 그런데 가상 주소가 존재하려면 MMU가 있어야 하는데, MMU의 역할은 가상 주소를 물리 주소로 변환하는 것입니다. 그렇다면 MMU는 ..
[Arm프로세서] 메모리 매니지먼트란? Arm 아키텍처에서 메모리 매니지먼트란 무엇일까요? Arm 아키텍처에서 메모리와 관련된 내용을 다룰 때 '메모리 매니지먼트'와 MMU를 함께 설명하는 경우가 많아 메모리 매니지먼트에 대해 한 문장으로 정의하기 어렵습니다. Arm 아키텍처에서 메모리 매니지먼트는 다음과 같은 기능을 활용해 운영체제 커널에서 메모리 관련 시스템을 구축할 수 있는 환경을 제공하는 것입니다.  MMU: 가상 주소를 물리 주소로 변환  메모리 컨트롤 레지스터: MMU와 메모리 시스템 관련 속성 설정  그렇다면 MMU는 무엇일까요? 가상 주소를 물리 주소로 변환하는 일을 하는 하드웨어 블록을 MMU라고 합니다. 메모리 매니지먼트의 전체 구조 다음 그림을 보면서 메모리 매니지먼트를 구성하는 주요 기능에 대해 알아봅시다. 그림 19..
[Armv7-A] 가상 주소를 물리 주소 변환 하는 과정 분석하기 1. 0xc13342c0 가상 주소가 물리주소로 변환되는 과정 확인 crash> p schedule schedule = $1 = {int (void)} 0xc13342c0 물리주소는 0x813342c0임 crash> vtop 0xc13342c0 VIRTUAL PHYSICAL c13342c0 813342c0 PAGE DIRECTORY: c0004000 PGD: c000704c => 8131940e PMD: c000704c => 8131940e PAGE: 81300000 (1MB) PAGE PHYSICAL MAPPING INDEX CNT FLAGS c4926680 81334000 0 0 1 400 reserved 0xc13342c0 가상 주소에서 L1 Page Table Index는 c13임(0xc13342..