Kernel Memory Leak Detector : kmemleak 사용법
커널 개발에서 메모리 누수는 심각한 문제이다. 메모리 누수는 시스템의 성능을 저하시키고, 장기적으로는 시스템이 불안정해지는 원인이 될 수 있기 때문이다. 이를 해결하기 위해 Linux 커널은 Kernel Memory Leak Detector인 kmemleak 툴을…
Linux Kernel
커널 개발에서 메모리 누수는 심각한 문제이다. 메모리 누수는 시스템의 성능을 저하시키고, 장기적으로는 시스템이 불안정해지는 원인이 될 수 있기 때문이다. 이를 해결하기 위해 Linux 커널은 Kernel Memory Leak Detector인 kmemleak 툴을…
커널 개발에서 메모리 버그는 예기치 않은 동작을 일으키고, 보안 취약점으로 이어질 수 있다. 이를 해결하기 위해 Linux 커널에서는 Kernel Address Sanitizer(KASAN)라는 강력한 도구를 제공한다. 이 기능을 커널에서 활성화 하면 메모리…
이 글에서는 리눅스 커널 소스의 주요 구조를 간략하게 알아본다. arch arch 하부 디렉토리에는 아키텍처별로 동작하는 커널 코드가 있다 .예를 들어, x86, ARM, MIPS 등 아키텍처 dependency가 있는 코드들이 위치한다. /arch…
라즈베리파이 4의 커널을 빌드하는 과정은 특별한 상황이나 하드웨어 지원을 확장하고자 할 때 유용하다. 이 글에서는 라즈베리파이 4의 커널을 빌드하는 방법에 대해 알아본다. 1. 필수 도구 설치 커널을 빌드하기 위해 필요한…
ftrace는 리눅스 커널에 내장된 강력한 추적 도구로, 함수 호출, 스케줄 및 이벤트 추적을 가능하게 하는 강력한 디버깅 및 프로파일링 도구이다. 이 블로그 글에서는 ftrace를 사용하여 리눅스 커널 함수를 추적하는 방법에…
dump_stack() 함수는 리눅스 커널 디버깅의 핵심 도구 중 하나로, 콜 스택을 커널 로그로 볼 수 있게 한다. 커널 개발자들은 이 함수를 활용하여 프로그램의 동작을 추적하고 문제 해결을 위한 힌트를 얻을…
printk() 함수는 리눅스 커널에서 메시지 출력과 디버깅을 위한 핵심 도구 중 가장 기본이 되는 도구이다. 이 글에서는 printk() 함수의 기능, 사용법, 예제 코드, 그리고 유용한 팁에 대해 알아본다. printk() 함수…
리눅스 커널은 다양한 비동기 작업을 관리하기 위한 여러 메커니즘을 제공하는데, 그 중 Tasklet과 Workqueue는 주목할 만한 두 가지 방법이다. 이 두 가지 메커니즘은 각각 고유한 특성과 사용 사례를 가지고 있으며,…
리눅스 커널은 코딩 스타일(https://www.kernel.org/doc/Documentation/process/coding-style.rst)을 가지며, 이를 준수해야 한다. checkpatch 는 커널 소스에서 제공하는 Perl 스크립트로, 커널 패치에 대해 커널 코딩 스타일을 체크하여 수정해야 하는 부분을 알려준다. 이 글에서는 이 checkpatch…
cgroup v1 하에서는 시스템 프로세스들에 대한 계층 구조를 각기 제공하는 별게 cgroup 파일시스템의 각 컨트롤러를 마운트 할 수 있다. 또한 같은 cgroup 파일시스템에 여러 (또는 모든) cgroup v1 컨트롤러들을 함께…