Guillermo Austin Kim

Sources

Posts

998 posts

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

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 전역 변수가 이 주소를 저장합니다. 다음 ‘가

[리눅스커널] 메모리관리: 페이지 테이블에 대해 알아보기

Guillermo Austin Kim|2019년 7월 17일

페이지 테이블로 가상 주소를 물리 주소로 변환하는 흐름을 살펴봤습니다. 이 과정에서 알아야 하는 주요 개념을 소개합니다. - 페이지 테이블 엔트리 - 페이지 테이블 엔트리 주소 페이지 테이블 엔트리페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)는 페이지 테이블의 정보이며 레코드라고도 부릅니다. 페이지 테이블 엔트리 주소말 그대로 페이지 테이블 엔트리가 있는 주소를 의미합니다. 이해를 돕기 위해 다음 주소 테이블을 보겠습니다. 주소 | 값 1 NSD:80004000 | 0x02 NSD:80004004 | 0x03 NSD:80004008 | 0x04 NSD:8000400C | 0x0...5 NSD:80006018 | 0x0061941E6 NSD:8000

[리눅스커널] 시스템 콜: strace와 ftrace로 시스템 콜 디버깅하기

Guillermo Austin Kim|2019년 7월 16일

이전 시간에 strace로 유저 공간에서 시스템 세부 동작을 확인했습니다.이번에는 strace와 ftrace를 함께 보면서 시스템 콜 동작을 추적해보겠습니다. 먼저 설정 방법을 단계별로 알아봅시다. ftrace 설정  strace 실행 위와 같이 설정을 한 다음 ftrace 로그 받으면 됩니다. ftrace 이벤트를 설정하고 strace를 실행하기시스템 콜 ftrace 이벤트를 설정하는 전체 명령어는 다음과 같습니다.#!/bin/bash echo > /sys/kernel/debug/tracing/set_eventsleep 1 echo 0 > /sys/kernel/debug/tracing/tracing_onsleep 1 echo nop > /sys/kernel/debug/tr

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

Guillermo Austin Kim|2019년 7월 15일

가상 주소를 물리 주소로 변환하는 단계 알아보기 가상 주소를 물리 주소로 변환하는 과정은 다음 단계로 나눌 수 있습니다. 1 단계: 페이지 테이블 엔트리 주소를 검색먼저 페이지 테이블이 있는 주소를 검색합니다. 그래야 페이지 테이블에 담긴 정보를 참고해서 주소를 변환합니다. 2 단계: 레벨 페이지 테이블 엔트리 분석 페이지 테이블 엔트리에 있는 값을 해석합니다. 페이지 테이블 엔트리 [1:0] 비트 패턴에 따라 페이지 테이블 유형이 나뉩니다. [1:0]이 10이면 섹션 엔트리 페이지 테이블이며 물리 주소 변환 정보를 포함하고 있습니다. 바로 가상 주소를 물리 주소로 변환할 수 있습니다. [1:0]이 01이면 페이지 테이블 엔트리엔 라지 페이지와 스몰 페이지 테이블 주소가 저장돼 있습

[리눅스커널] 프로세스: 유저 프로그램 실행 흐름 추적하기

Guillermo Austin Kim|2019년 7월 14일

리눅스 시스템에서는 빌트인으로 제공하는 프로그램이 있습니다. 이를 명령어 형태로 쓰고 있는데 이 프로그램은 실행할 때 프로세스 포멧으로 구동합니다. ftrace 로그로 각 프로그램(프로세스)이 어떻게 생성, 실행 및 종료하는지 확인합시다. ftrace 로그 설정하기ftrace 로그 설정 코드는 다음과 같습니다.1 "echo 1 > /sys/kernel/debug/tracing/events/sched/sched_process_exec/enable"2 "echo 1 > /sys/kernel/debug/tracing/events/sched/sched_process_exit/enable"3 "echo 1 > /sys/kernel/debug/tracing/events/sched/sched_proc