[리눅스커널] 메모리 관리: 가상 메모리 기법의 주요 개념 소개
By Guillermo Austin Kim | 2019년 6월 1일 |
가상 메모리의 주요 개념 소개 가상 메모리의 주요 개념을 다음 그림을 보면서 배워 보겠습니다. [그림 1] 가상주소와 물리주소 및 페이지와의 관계 위 그림과 함께 가상 주소를 물리 주소로 변환하는 실행 흐름을 배워봅시다. 가장 왼쪽에 보이는 주소 맵이 가상 메모리입니다. 가장 윗 부분에 0x0000_0000 주소가 있는데 아랫 방향으로 주소가 커집니다. 가장 아랫 부분은 0FFF0_0000 주소입니다. 즉, 가상 주소 범위는 0x0~0xFFFF_FFFF 이며 전체 크기는 4GB입니다. CPU에서 구동 중인 프로세스가 보는 주소는 가상 주소입니다. 우리가 분석한 모든 커널 함수는 이 가상 물리 메모리 공간에서 실행하는 것입니다. 가상 메모리 박스 오른쪽 화살표를 눈으로 따라가면 주소 변
[리눅스커널][인터럽트후반부] IRQ 스레드 핸들러 실행 시각 측정하기
By Guillermo Austin Kim | 2019년 2월 28일 |
IRQ 스레드 핸들러 실행 시각 측정하기 이전 절에서는 ftrace 로 콜스택과 함께 인터럽트가 언제 발생하고 언제 IRQ Thread를 깨우는지 알아봤습니다. 이번에는 실제 인터럽트 핸들러와 IRQ Thread 핸들러 함수 실행 시간을 측정하는 방법을 소개합니다. 각 함수의 실행 시간을 측정하고 실행 시간이 오래 걸리면 인터럽트 핸들러 함수 코드를 점검할 필요가 있습니다. 나중에 여러분이 인터럽트 핸들러를 작성한 후 이 방법을 써서 실행 시간을 측정해 보시길 바랍니다. ftrace에서 지원하는 function_graph 트레이서를 쓸려면 다음 config가 설정돼 있어야 합니다.CONFIG_DYNAMIC_FTRACE=yCONFIG_DYNAMIC_FTRACE_WITH_REGS=yCONFIG_FUNCTI
임베디드 리눅스 개발자 양극화를 극복하는 방법: 리눅스 커널 메일링 리스트 활용
By Guillermo Austin Kim | 2019년 9월 21일 |
제가 올린 포스팅 중 생각지도 않게 조회수가 높은 글이 종종 있습니다. 그 중 하나는 다음 포스팅입니다.임베디드 개발자 양극화는 얼마나 심각할까? 댓글을 보면 알 수 있듯 많은 분들이 공감해주셨습니다. * 맞다! 임베디드 개발의 양극화는 정말 심하다! 이글을 올린 후 리눅스 세미나에서 다음과 같은 질문을 받았습니다. * 임베디드 개발의 양극화가 심하다는 것은 알겠다. * 그런데 그 해결책은 무엇이냐? 이 질문을 받고 바로 전 다음과 같이 대답을 했습니다. * 출간될 제 책을 사보세요. * 제 책이 임베디드 양극화의 Gap을 줄여 줄 수 있을 것이라 생각합니다. 농담 반, 진담 반으로 드렸던 대답이었습니다. 다시 생각을 해보니 정말 *헛소리*를 했단 생각이 듭니다.그래
리눅스에서 스왑(swap) 사용률 확인 및 우선순위 변경
By 반달가면 | 2018년 1월 5일 |
리눅스에서 메모리가 부족할 경우 디스크를 메모리처럼 사용하기 위해 스왑(swap) 파티션을 할당하게 되는데, 현재 어느 정도의 용량이 할당되어 있고 얼마나 사용되고 있는지 확인하는 방법이다. 스왑 파티션의 현재 상태는 /proc/swaps의 내용을 확인하면 된다. 터미널창에서 아래와 같이 입력 # 스왑 파티션 사용률 확인 cat /proc/swaps Filename Type Size Used Priority /dev/sda5 partition 1046524 0 -1 위의 예시를 보면 /dev/sda5 파티션이 스왑으로 사용되고 있으며 1046524바이트가 할당되어 있고(Size 항목), 사용되고 있는 용량은 0바이트(Used 항목)이다. 우선순위(