Linux Kernel

EEVDF 스케줄러

Linux 6.6부터 기존의 CFS(Completely Fair Scheduler)를 대체하는 EEVDF(Earliest Eligible Virtual Deadline First) 스케줄러가 메인라인에 병합되었다. EEVDF는 1996년 Stoica & Zhang이 제안한 알고리즘을 기반으로 하며, CFS의 구조적 한계였던 레이턴시 불공정 문제를…

Continue ReadingEEVDF 스케줄러

Linux 메모리 관리 – 페이지 캐시와 스왑 동작 원리

Linux는 디스크 I/O 비용을 줄이기 위해 읽은 파일 데이터를 RAM에 보관한다. 이것이 페이지 캐시(Page Cache)다. 반대로 RAM이 부족해지면 잘 안 쓰는 메모리를 디스크로 밀어내는데, 이것이 스왑(Swap)이다. 두 메커니즘은 서로 긴밀하게…

Continue ReadingLinux 메모리 관리 – 페이지 캐시와 스왑 동작 원리

Yocto 환경에서 커널에 Clang/LLVM 빌드 환경 적용하기

아래는 (1) 커널 레시피만 Clang으로 빌드하는 방법과, (2) 배포판 전체를 Clang toolchain으로 전환하는 방법을 각각 “Yocto에서 실제로 적용 가능한 형태”로 정리한 것이다.핵심 변수/흐름은 Yocto의 toolchain/clang 체계와 meta-clang의 TOOLCHAIN 스위치에 기반한다.…

Continue ReadingYocto 환경에서 커널에 Clang/LLVM 빌드 환경 적용하기

SoC 벤더 커널을 Clang으로 옮길 때 깨지는 패턴 정리

메인라인 커널은 이미 Clang / LLVM 빌드를 공식 지원한다.하지만 SoC 벤더 커널(특히 4.x/5.4 계열)이나 오래된 BSP 트리는 여전히 GCC 전용 코드가 많다. 리눅스 커널 Clang 빌드 호환성은 아래 글에서 대략의…

Continue ReadingSoC 벤더 커널을 Clang으로 옮길 때 깨지는 패턴 정리

Linux 커널 Clang/LLVM 빌드 호환성 타임라인

Linux 커널은 오랫동안 GCC 중심으로 개발되어 왔다.하지만 최근 몇 년 사이 Clang / LLVM 기반 빌드가 빠르게 안정화되었다. 이 글은 커널에서 Clang 빌드가 어떻게 발전해왔는지를 실제 메인라인 흐름 기준으로 정리한…

Continue ReadingLinux 커널 Clang/LLVM 빌드 호환성 타임라인

ARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)

ARM64(AArch64)에서 inline asm은 “문법이 어렵다”보다 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다.특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택 + clobber + barrier 3개가 대부분의 원인이다. 이 글에서는 ARM64에서…

Continue ReadingARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)

Clang/LLVM로 Linux 커널 빌드 하기

이 글은 Ubuntu 환경에서 Clang / LLVM 툴체인을 이용해 Linux 커널을 실제로 빌드하는 방법을 단계별로 정리한다. Clang/LLVM 툴체인 설치는 아래 글을 먼저 확인한다. https://junorionblog.co.kr/linux-%ec%bb%a4%eb%84%90-clang-llvm-%ed%88%b4%ec%b2%b4%ec%9d%b8-%ec%a4%80%eb%b9%84%ed%95%98%ea%b8%b0/ Ubuntu 커널 빌드에 대한건 아래 글을…

Continue ReadingClang/LLVM로 Linux 커널 빌드 하기