Rust์—์„œ Linux ์ปค๋„์šฉ ๋ณด์•ˆ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ

Intel์—์„œ ๊ทผ๋ฌดํ•˜๋ฉฐ Crates.io ๊ฐœ๋ฐœ์„ ๊ฐ๋…ํ•˜๋Š” ์œ„์›ํšŒ์˜ ์œ„์›์ธ Josh Triplett๊ฐ€ Open Source Technology Summit์—์„œ ์—ฐ์„คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ž… ๋œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ถ„์•ผ์—์„œ Rust ์–ธ์–ด๋ฅผ C ์–ธ์–ด์™€ ๋™๋“ฑํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ž‘์—… ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—… ๊ทธ๋ฃน์—์„œ Rust ๊ฐœ๋ฐœ์ž๋Š” Intel์˜ ์—”์ง€๋‹ˆ์–ด์™€ ํ•จ๊ป˜ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด Rust์—์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๋Š” ์‚ฌ์–‘์„ ์ค€๋น„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ๊ถŒํ•œ ์žˆ๋Š” ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กœ์„ธ์„œ ์ƒํƒœ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๋“ฑ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์กฐ์ž‘์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Rust๋ฅผ ์œ„ํ•ด ์ด๋ฏธ ๊ฐœ๋ฐœ ์ค‘์ธ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์ค‘์—์„œ ์ด๋ฆ„ ์—†๋Š” ๊ตฌ์กฐ, ๊ณต์šฉ์ฒด, ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด ์‚ฝ์ž…("asm!" ๋งคํฌ๋กœ) ๋ฐ BFLOAT16 ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์ด ์ฃผ๋ชฉ๋ฉ๋‹ˆ๋‹ค.

Josh๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ฏธ๋ž˜๊ฐ€ Rust์— ์†ํ•ด ์žˆ๋‹ค๊ณ  ๋ฏฟ์œผ๋ฉฐ, ํ˜„๋Œ€ ํ˜„์‹ค์—์„œ C ์–ธ์–ด๋Š” ์ง€๋‚œ ๋ช‡ ๋…„๊ฐ„ Assembly๊ฐ€ ์ฐจ์ง€ํ–ˆ๋˜ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋…น
๊ฐœ๋ฐœ์ž๋Š” ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” C ์–ธ์–ด ๊ณ ์œ ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ตœ์‹  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ฐœ๋ฐœ์— C ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋™์•ˆ ํ† ๋ก  ๊ณต์—ฐ
Josh๋Š” Linux ์ปค๋„์— Rust ์–ธ์–ด๋กœ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ๋‚ด๋†“์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ด์ œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค์™€ ๊ฐ™์€ ๋ฌธ์ œ ์—†์ด ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ๋” ์•ˆ์ „ํ•˜๊ณ  ๋” ๋‚˜์€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ.

Linux ์ปค๋„์˜ ์•ˆ์ •์ ์ธ ๋ธŒ๋žœ์น˜ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” Greg Kroah-Hartman์€ Rust ์–ธ์–ด๋กœ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ C์— ๋น„ํ•ด ์‹ค์งˆ์ ์ธ ์žฅ์ ์ด ์žˆ๋‹ค๋ฉด ์ปค๋„์— ์ถ”๊ฐ€ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ฐํ˜”์Šต๋‹ˆ๋‹ค. ์ปค๋„ API๋ฅผ ํ†ตํ•œ ๋ฐ”์ธ๋”ฉ. ๋˜ํ•œ Greg๋Š” Rust๋ฅผ ์ปค๋„์˜ ๋นŒ๋“œ ์ข…์†์„ฑ์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ์˜ต์…˜์œผ๋กœ๋งŒ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์—ฌ๋Ÿฌ ํŒ€์ด ์ด ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "Fish in a Barrel"์ด๋ผ๋Š” ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž ะฟะพะดะณะพั‚ะพะฒะธะปะธ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ปค๋„ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ถ”์ƒ ๊ณ„์ธต ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Rust ์–ธ์–ด๋กœ Linux ์ปค๋„์šฉ ๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ปค๋„ ํ—ค๋” ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์–ด๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ๊ฒ. Clang์€ ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„์ธต ์™ธ์—๋„ ์กฐ๋ฆฝ๋œ ๋ชจ๋“ˆ์€ staticlib ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ‰ํ–‰ ๊ฐœ๋ฐœ ์ค‘ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋Š” ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋ฐ IoT ์žฅ์น˜์šฉ ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ, Bindgen์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ ํ—ค๋” ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๋“œ๋ผ์ด๋ฒ„ ๋ณด์•ˆ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„์—์„œ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๋ณด๋‹ค ์•ˆ์ „ํ•œ Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ฌธ์ œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ฐ์‚ฌ๋ฅผ ์‹ค์‹œํ•˜์ง€ ์•Š๊ณ  ์„œ๋‘˜๋Ÿฌ ๋…์  ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์žฅ๋น„ ์ œ์กฐ์—…์ฒด์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค.

์˜๋„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์•„์ง ๊ตฌํ˜„๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด๋ฏธ ์ž‘์—…์— ๋งค์šฐ ์ ํ•ฉํ•˜๋ฉฐ Raspberry Pi 9512 ๋ณด๋“œ์— ์ œ๊ณต๋˜๋Š” LAN3 USB ์ด๋”๋„ท ์ปจํŠธ๋กค๋Ÿฌ์šฉ ์ž‘๋™ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. C ์–ธ์–ด. Rust์—์„œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ชจ๋“ˆ ํฌ๊ธฐ์™€ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฏธ๋ฏธํ•˜๋ฏ€๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ์žฅ์น˜์— ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€