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 환경 학습은 필수.
'computer engineering' 카테고리의 다른 글
객체지향(OOP)의 오버헤드에 관한 고찰 (1) | 2025.05.21 |
---|---|
Javascript - 클로저(Closure)란? OOP와의 비교 및 고찰 (0) | 2025.05.21 |
LLM - 언어모델 개선을 위한 접근 방법론 이모저모 (1) | 2025.05.20 |
Python - 비동기 프로그래밍 실전 적용 (1) | 2025.05.20 |
Python - 비동기 프로그래밍(asynchronous programming) 원리 및 주요 개념 (0) | 2025.05.20 |