리눅스 eBPF, kfunc
·
[ Laboratory ]/Advanced Operating System
리눅스 커널에서 기능을 확장하는 가장 대표적이고 고전적인 방법은 커널 모듈이다.하지만 최근에는 리눅스의 eBPF 기반의 안전한 확장과 커널 내부 함수까지 호출 가능한 kfunc의 사용이 많아지고 있다. 커널 공간 내부에서 유저가 정의한 코드를 안전하게 실행하기 위해서 필요한 환경 전체를 extended Berkeley Packet Filter = eBPF라고 한다. 단순한 가상 머신만 포함하는 것이 아니라 eBPF 프로그램인 bytecode와 verifier, runtime, helper function, map 등이 포함된다. 유저가 작성한 eBPF 프로그램은 정적 분석 기반으로 안전성을 검증하는 verifier의 검증을 통과해야 실행이 가능하다. 이를 통해 커널 모듈처럼 위험하지 않으면서 런타임 중에..