Rust-for-Linux ํ๋ก์ ํธ์ ์ ์์ธ Miguel Ojeda๋ Linux ์ปค๋ ๊ฐ๋ฐ์๊ฐ ๊ณ ๋ คํ ์ ์๋๋ก Rust ์ธ์ด๋ก ์ฅ์น ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ ๋ฐ์ดํธ๋ ๋ฒ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ์ต๋๋ค. Rust ์ง์์ ์คํ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง๋ง ์ด๋ฏธ linux-next ๋ธ๋์น์ ํฌํจํ๊ธฐ๋ก ํฉ์๋์์ต๋๋ค. ์ ๋ฒ์ ์์๋ ํจ์น์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ๋ ผ์ํ๋ ๋์ ์ธ๊ธ๋ ๋ด์ฉ์ด ์ ๊ฑฐ๋์์ต๋๋ค. Linus Torvalds๋ ์ด๋ฏธ ํ ๋ก ์ ์ฐธ์ฌํ์ฌ ์ผ๋ถ ๋นํธ ์ฐ์ฐ์ ์ฒ๋ฆฌํ๋ ๋ ผ๋ฆฌ ๋ณ๊ฒฝ์ ์ ์ํ์ต๋๋ค.
์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ํตํด Rust๋ฅผ ๋๋ผ์ด๋ฒ ๋ฐ ์ปค๋ ๋ชจ๋ ๊ฐ๋ฐ์ ์ํ ๋ ๋ฒ์งธ ์ธ์ด๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์. Rust ์ง์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ง ์๋ ์ต์ ์ผ๋ก ์ ๊ณต๋๋ฉฐ Rust๊ฐ ์ปค๋์ ๋ํ ํ์ ๋น๋ ์ข ์์ฑ์ผ๋ก ํฌํจ๋์ง ์์ต๋๋ค. ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ์ Rust๋ฅผ ์ฌ์ฉํ๋ฉด ํด์ ํ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐ ๋ฒํผ ์ค๋ฒ๋ฐ๊ณผ ๊ฐ์ ๋ฌธ์ ์์ด ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ๋ ์์ ํ๊ณ ๋ ๋์ ๋๋ผ์ด๋ฒ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ ์ฒ๋ฆฌ๋ ์ฝ๋ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ ํ์ฑ ํ๊ฐ๋ฟ๋ง ์๋๋ผ ์ฐธ์กฐ ํ์ธ, ๊ฐ์ฒด ์์ ๊ถ ๋ฐ ๊ฐ์ฒด ์๋ช (๋ฒ์) ์ถ์ ์ ํตํด ์ปดํ์ผ ์๊ฐ์ Rust์์ ์ ๊ณต๋ฉ๋๋ค. Rust๋ ๋ํ ์ ์ ์ค๋ฒํ๋ก์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ ์ ๋ณ์ ๊ฐ์ ํ์ ์ด๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ค๋ฅ๋ฅผ ๋ ์ ์ฒ๋ฆฌํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ ์ฐธ์กฐ ๋ฐ ๋ณ์ ๊ฐ๋ ์ ์ ์ฉํ๊ณ , ๊ฐ๋ ฅํ ์ ์ ์ ํ ์ง์ ์ ์ ๊ณตํ์ฌ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ต์ํํฉ๋๋ค.
์ ๋ฒ์ ์ ํจ์น์์ ๊ฐ์ฅ ๋์ ๋๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ฝ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ "ํจ๋" ์ํ๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ฌ์์ ํ๋ Rust alloc ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณํ์ด ํฌํจ๋์ด ์์ง๋ง ๊ถ๊ทน์ ์ธ ๋ชฉํ๋ ์ปค๋์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ alloc์ ๋ฉ์ธ ์๋์ ์ผ๋ก ์ด์ ํ๋ ๊ฒ์ ๋๋ค(๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ ์ค๋น๋์ด ํ์ค ๋ฒ์ ์ผ๋ก ์ด์ ๋์์ต๋๋ค). ๋ฌ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ).
- ์ผ๊ฐ ๋น๋ ๋์ ์ด์ Rustc ์ปดํ์ผ๋ฌ์ ๋ฒ ํ ๋ฆด๋ฆฌ์ค์ ์์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ฌ์ฉํ์ฌ Rust๋ฅผ ์ง์ํ๋ ์ปค๋์ ์ปดํ์ผํ ์ ์์ต๋๋ค. ํ์ฌ๋ Rustc 1.54-beta1์ด ๋ ํผ๋ฐ์ค ์ปดํ์ผ๋ฌ๋ก ์ฌ์ฉ๋๊ณ ์์ง๋ง, ์ด๋ฌ ๋ง 1.54 ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋ ์ดํ์๋ ๋ ํผ๋ฐ์ค ์ปดํ์ผ๋ฌ๋ก ์ง์๋ ์์ ์ ๋๋ค.
- Rust์ ํ์ค "#[test]" ์์ฑ์ ์ฌ์ฉํ์ฌ ํ ์คํธ ์์ฑ์ ๋ํ ์ง์๊ณผ doctest๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ๋ฌธ์ํํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ด์ ์ ์ง์๋ x32_86 ๋ฐ ARM64 ์ธ์ ARM64 ๋ฐ RISCV ์ํคํ ์ฒ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ด์ ๋ชจ๋ ๊ธฐ๋ณธ ํ ์คํธ๋ฅผ ํต๊ณผํ GCC Rust(Rust์ฉ GCC ํ๋ฐํธ์๋) ๋ฐ Rustc_codegen_gcc(GCC์ฉ Rustc ๋ฐฑ์๋)์ ๊ตฌํ์ด ๊ฐ์ ๋์์ต๋๋ค.
- ๋ ๋-๋ธ๋ ํธ๋ฆฌ, ์ฐธ์กฐ ์นด์ดํธ ๊ฐ์ฒด, ํ์ผ ์ค๋ช ์ ์์ฑ, ์์ , ํ์ผ ๋ฐ I/O ๋ฒกํฐ์ ๊ฐ์ด C๋ก ์์ฑ๋ ์ปค๋ ๋ฉ์ปค๋์ฆ์ Rust ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ก์ด ์์ค์ ์ถ์ํ๊ฐ ์ ์๋์์ต๋๋ค.
- ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ ๊ตฌ์ฑ ์์๋ file_options ๋ชจ๋, ๋ชจ๋ ๋งคํฌ๋ก, ๋งคํฌ๋ก ๋ฑ๋ก ๋ฐ ๊ธฐ๋ณธ ๋๋ผ์ด๋ฒ(ํ์ ๋ฐ ์ ๊ฑฐ)์ ๋ํ ์ง์์ ํฅ์ํ์ต๋๋ค.
- ์ด์ ๋ฐ์ธ๋๋ ํ์ผ ์ค๋ช ์ ๋ฐ LSM ํํฌ ์ ๋ฌ์ ์ง์ํฉ๋๋ค.
- Rust ๋๋ผ์ด๋ฒ์ ๋ณด๋ค ๊ธฐ๋ฅ์ ์ธ ์๊ฐ ์ ์๋์์ต๋๋ค. ์ฆ, Raspberry Pi ๋ณด๋์ ํ๋์จ์ด ๋์ ์์ฑ๊ธฐ๋ฅผ ์ํ bcm2835-rng์ ๋๋ค.
๋ํ ์ปค๋์์ Rust๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์ผ๋ถ ํ์ฌ์ ํ๋ก์ ํธ๊ฐ ์ธ๊ธ๋์ด ์์ต๋๋ค.
- Microsoft๋ Rust ์ง์์ Linux ์ปค๋์ ํตํฉํ๋ ์์ ์ ์ฐธ์ฌํ๋ ๋ฐ ๊ด์ฌ์ ํ๋ช ํ์ผ๋ฉฐ ์์ผ๋ก ๋ช ๋ฌ ์์ Rust์์ Hyper-V์ฉ ๋๋ผ์ด๋ฒ ๊ตฌํ์ ์ ๊ณตํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค.
- ARM์ ARM ๊ธฐ๋ฐ ์์คํ ์ ๋ํ Rust ์ง์์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. Rust ํ๋ก์ ํธ๋ ์ด๋ฏธ 64๋นํธ ARM ์์คํ ์ Tier 1 ํ๋ซํผ์ผ๋ก ๋ง๋๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ์ต๋๋ค.
- Google์ Linux์ฉ Rust ํ๋ก์ ํธ๋ฅผ ์ง์ ์ง์ํ๊ณ , Rust์์ Binder ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฉ์ปค๋์ฆ์ ์๋ก์ด ๊ตฌํ์ ๊ฐ๋ฐํ๊ณ ์์ผ๋ฉฐ, Rust์์ ๋ค์ํ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์์ ํ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค. Google์ ISRG(Internet Security Research Group)๋ฅผ ํตํด Rust ์ง์์ Linux ์ปค๋์ ํตํฉํ๋ ์์ ์ ์๊ธ์ ์ ๊ณตํ์ต๋๋ค.
- IBM์ PowerPC ์์คํ ์ฉ Rust์ ๋ํ ์ปค๋ ์ง์์ ๊ตฌํํ์ต๋๋ค.
- LSE(Systems Research Laboratory) ์ฐ๊ตฌ์์์๋ Rust๋ก SPI ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru