computer engineering

Rust - 러스트 기본

제이훈 : 세상 모든 지식의 탐구자 2025. 5. 21. 11:08

Rust 개요

Rust는 C/C++처럼 컴파일된 언어.

기계어(어셈블리어)로 변환되어 실행됨.

Rust의 컴파일 과정

컴파일러는 rustc.

LLVM 기반으로 동작함.

  • Rust 소스코드 (.rs)
  • ↓ rustc
  • LLVM 중간 표현 (LLVM IR)
  • ↓ 최적화
  • 어셈블리 코드 (.asm)
  • ↓ 어셈블러 + 링커
  • 실행 파일 (Machine Code)

LLVM은 다양한 CPU 아키텍처 지원.

x86, ARM 등으로 변환 가능.

결국 Rust도 CPU별 어셈블리어로 실행됨.

Rust와 하드웨어 상호작용

1. OS와 상호작용

표준 라이브러리(std) 사용.

OS API(System Call) 호출함.

파일, 네트워크 등 하드웨어 기능 제어 가능.

2. no_std 환경

운영체제 없이 실행 가능.

Bare-metal, 임베디드, OS 커널 등에 사용됨.

3. MMIO 방식

메모리 주소 직접 접근.

운영체제 없이 하드웨어 제어 가능.

Rust vs C/C++ 비교

특징 Rust C/C++
컴파일러 LLVM GCC, Clang 등
표준 라이브러리 std (no_std 지원) stdlib.h, iostream 등
시스템 호출 OS API OS API
하드웨어 접근 unsafe 블록 포인터 직접 접근
메모리 관리 소유권 시스템 수동 관리 (malloc/free)

Rust 적용 사례

운영체제 개발

Redox OS 사용 사례.

커널과 시스템 호출을 Rust로 구현.

임베디드 시스템

RPi, STM32, ESP32 등 지원.

embedded-hal 라이브러리 사용.

커널 드라이버

Linux에서 Rust 공식 지원 중.

Rust로 커널 모듈 개발 가능.

결론

Rust는 어셈블리어로 변환됨.

하드웨어 접근은 C/C++과 유사함.

다만 메모리 안전성이 강점임.

unsafe으로 저수준 제어도 가능함.

결국, 안전성과 성능을 동시에 추구 가능.

추천: no_std 환경 학습은 필수.