2022년, 리누스 토르발스는 리눅스 커널에 Rust 지원을 통합했으며, 버전 6.1부터 시작되었습니다. 이는 C를 거부하는 것이 아니라, 커널 보안을 강화하기 위한 변화였습니다. 주변 코드(perimeter code)가 상당한 위험을 초래한다는 점을 인지한 것입니다. C로 작성된 커널의 핵심 부분은 세심하게 관리되어 메모리 관련 취약점에 덜 노출됩니다. 커널 메모리 관리는 전통적으로 kmalloc 및 kfree와 같은 수동 C 함수에 의존하는데, 이는 결정적인 성능을 필요로 하기 때문에 가비지 컬렉터는 적합하지 않기 때문입니다. 대부분의 취약점은 이러한 할당자를 사용하는 오류가 발생하기 쉬운 코드, 특히 장치 드라이버와 네트워킹 스택에서 발생합니다.
Rust는 소유권과 차용 개념을 통해 메모리 관리 책임을 인간에서 컴파일러로 전환함으로써 이러한 위험을 완화합니다. Rust는 Go와 같은 언어와 달리 런타임 오버헤드 없이 컴파일 시간에 메모리 안전성을 제공하므로 커널에 적합합니다. 현재 구현은 Rust를 새로운 장치 드라이버와 추상화에 사용하는 하이브리드 모델을 활용합니다. 복잡성과 최적화 문제로 인해 C로 작성된 기존 핵심 서브시스템은 당분간 변경되지 않을 것입니다. 이 접근 방식은 기존 코드를 대대적으로 다시 작성하는 부담 없이 더 안전한 모델로 커널을 발전시킬 수 있게 해줍니다.
dev.to
Rust in Linux: Fixing the Edges, Not the Core
Create attached notes ...
