[Linux Kernel] kvmalloc() 함수
kvmalloc() 함수는 리눅스 커널에서 메모리를 동적으로 할당하는 여러 함수 중 하나이다. 이 함수는 kmalloc()와 vmalloc()의 장점을 결합하여, 필요한 경우 페이지별로 물리적 메모리를 할당하는 기능을 제공한다. 이 글에서는 kvmalloc() 함수의 사용법과…
Linux Kernel
kvmalloc() 함수는 리눅스 커널에서 메모리를 동적으로 할당하는 여러 함수 중 하나이다. 이 함수는 kmalloc()와 vmalloc()의 장점을 결합하여, 필요한 경우 페이지별로 물리적 메모리를 할당하는 기능을 제공한다. 이 글에서는 kvmalloc() 함수의 사용법과…
커널 개발에서 메모리 누수는 심각한 문제이다. 메모리 누수는 시스템의 성능을 저하시키고, 장기적으로는 시스템이 불안정해지는 원인이 될 수 있기 때문이다. 이를 해결하기 위해 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…