가상주소

Category
아이템: 
포스트 갯수4

[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기

By Guillermo Austin Kim | 2019년 7월 25일 | 
[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기
가상 주소를 물리 주소 변환하는 세부 원리 알아보기이번에는 가상 주소를 물리 주소로 변환하는 과정을 살펴보겠습니다. 다음 그림을 같이 보겠습니다. [그림 14.18] 가상 주소를 물리 주소로 변환하는 과정 전체 흐름도 가상 주소를 물리 주소로 변환하는 과정은 크게 2 단계로 나눌 수 있습니다. [그림 14.19] 가상 주소를 물리 주소로 변환하는 단계 1단계[그림 14.18] 가장 위쪽에 있는 주소는 TTBR(Translation Table Base Register)에 저장된 변환 테이블 시작 주소입니다. 페이지 테이블의 베이스 주소입니다. 변환 베이스 주소와 SBZ로 구분할 수 있는데 SBZ는 항상 0라는 의미입니다. 커널에서는 swapper_pg_dir 전역 변수가 이 주소를 저장합니다. 다음 ‘가

[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기

By Guillermo Austin Kim | 2019년 7월 17일 | 
가상 주소를 물리 주소 변환하는 세부 원리 알아보기이번에는 가상 주소를 물리 주소로 변환하는 과정을 살펴보겠습니다. 다음 그림을 같이 보겠습니다. [그림 14.18] 가상 주소를 물리 주소로 변환하는 과정 전체 흐름도 가상 주소를 물리 주소로 변환하는 과정은 크게 2 단계로 나눌 수 있습니다. [그림 14.19] 가상 주소를 물리 주소로 변환하는 단계 1단계[그림 14.18] 가장 위쪽에 있는 주소는 TTBR(Translation Table Base Register)에 저장된 변환 테이블 시작 주소입니다. 페이지 테이블의 베이스 주소입니다. 변환 베이스 주소와 SBZ로 구분할 수 있는데 SBZ는 항상 0라는 의미입니다. 커널에서는 swapper_pg_dir 전역 변수가 이 주소를 저장합니다. 다음 ‘가

[리눅스커널] 메모리관리: 가상 주소 변환 과정 전체 구조 파악하기

By Guillermo Austin Kim | 2019년 7월 14일 | 
이번 절에서는 가상 주소를 물리 주소로 바꾸는 전반적인 흐름과 세부 개념에 대해 상세히 알아봅니다. 가상 주소를 물리 주소로 변환하는 과정은 리눅스 커널에서 CPU 아키텍처에 의존적입니다. 다음은 라즈베리파이에서 ‘/proc/cpuinfo’ 파일로 확인한 CPU정보입니다. [https://www.raspberrypi.org/forums/viewtopic.php?t=155181]pi@raspberrypi:~ $ less /proc/cpuinfo processor : 0model name : ARMv7 Processor rev 4 (v7l)BogoMIPS : 38.40Features : half thumb fastmult vfp edsp neon vfpv3 tls

[리눅스커널] 메모리 관리: 가상 메모리 기법의 주요 개념 소개

By Guillermo Austin Kim | 2019년 6월 1일 | 
가상 메모리의 주요 개념 소개 가상 메모리의 주요 개념을 다음 그림을 보면서 배워 보겠습니다. [그림 1] 가상주소와 물리주소 및 페이지와의 관계 위 그림과 함께 가상 주소를 물리 주소로 변환하는 실행 흐름을 배워봅시다. 가장 왼쪽에 보이는 주소 맵이 가상 메모리입니다. 가장 윗 부분에 0x0000_0000 주소가 있는데 아랫 방향으로 주소가 커집니다. 가장 아랫 부분은 0FFF0_0000 주소입니다. 즉, 가상 주소 범위는 0x0~0xFFFF_FFFF 이며 전체 크기는 4GB입니다. CPU에서 구동 중인 프로세스가 보는 주소는 가상 주소입니다. 우리가 분석한 모든 커널 함수는 이 가상 물리 메모리 공간에서 실행하는 것입니다. 가상 메모리 박스 오른쪽 화살표를 눈으로 따라가면 주소 변