Rust ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” Linux ์ปค๋„์šฉ ํŒจ์น˜ ์ œXNUMXํŒ

Rust-for-Linux ํ”„๋กœ์ ํŠธ์˜ ์ €์ž์ธ Miguel Ojeda๋Š” Linux ์ปค๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋„๋ก Rust ์–ธ์–ด๋กœ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋„ค ๋ฒˆ์งธ ๋ฒ„์ „์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. Rust ์ง€์›์€ ์‹คํ—˜์ ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€๋งŒ ์ด๋ฏธ linux-next ๋ธŒ๋žœ์น˜์— ํฌํ•จํ•˜๊ธฐ๋กœ ๋™์˜ํ–ˆ์œผ๋ฉฐ ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ถ”์ƒํ™” ๊ณ„์ธต ์ƒ์„ฑ๊ณผ ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ๋ชจ๋“ˆ ์ž‘์„ฑ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐœ๋ฐœ์€ Google๊ณผ Let's Encrypt ํ”„๋กœ์ ํŠธ์˜ ์ฐฝ๋ฆฝ์ž์ธ ISRG(Internet Security Research Group)์—์„œ ์ž๊ธˆ์„ ์ง€์›๋ฐ›๊ณ  HTTPS์™€ ์ธํ„ฐ๋„ท ๋ณด์•ˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ธฐ์ˆ  ๊ฐœ๋ฐœ์„ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ์ฒ˜๋ฆฌ๋Š” ์ฝ”๋“œ ์‹คํ–‰ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค์˜ ์ •ํ™•์„ฑ ํ‰๊ฐ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฐธ์กฐ ํ™•์ธ, ๊ฐœ์ฒด ์†Œ์œ ๊ถŒ ๋ฐ ๊ฐœ์ฒด ์ˆ˜๋ช…(๋ฒ”์œ„) ์ถ”์ ์„ ํ†ตํ•ด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— Rust์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Rust๋Š” ๋˜ํ•œ ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ณ€์ˆ˜ ๊ฐ’์˜ ํ•„์ˆ˜ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆ๋ณ€ ์ฐธ์กฐ ๋ฐ ๋ณ€์ˆ˜ ๊ฐœ๋…์„ ์ ์šฉํ•˜๊ณ , ๊ฐ•๋ ฅํ•œ ์ •์  ์œ ํ˜• ์ง€์ •์„ ์ œ๊ณตํ•˜์—ฌ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์น˜์˜ ์ƒˆ ๋ฒ„์ „์—์„œ๋Š” ํŒจ์น˜์˜ ์ฒซ ๋ฒˆ์งธ, ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋…ผ์˜ ์ค‘์— ์–ธ๊ธ‰๋œ ์˜๊ฒฌ์ด ๊ณ„์†ํ•ด์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์—์„œ๋Š”:

  • ์ฐธ์กฐ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ Rust 1.58.0์˜ ์•ˆ์ • ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ธ Rust ํˆดํ‚ท์—๋Š” ์•„์ง ํฌํ•จ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘์—๋Š” "-Zsymbol-mangling-version=v0" ํ”Œ๋ž˜๊ทธ(Rust 1.59.0์—์„œ ์˜ˆ์ƒ๋จ) ๋ฐ "maybe_uninit_extra" ๋ชจ๋“œ(Rust 1.60.0์—์„œ ์˜ˆ์ƒ๋จ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .XNUMX)์ด ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. .
  • ์ ํ•ฉํ•œ Rust ๋„๊ตฌ์˜ ๊ฐ€์šฉ์„ฑ์— ๋Œ€ํ•œ ์ž๋™ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹œ์Šคํ…œ์—์„œ Rust ์ง€์›์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์ฝ”๋“œ์—์„œ ์žฅ์น˜ ์‹๋ณ„์ž ํ…Œ์ด๋ธ”("IdArray" ๋ฐ "IdTable")์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ถ”์ƒํ™”๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํƒ€์ด๋จธ ๊ด€๋ จ ๊ธฐ๋Šฅ(์‹œ๊ณ„ ํ”„๋ ˆ์ž„์›Œํฌ)์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ด์–ด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”Œ๋žซํผ ๋“œ๋ผ์ด๋ฒ„๋Š” ์ด์ œ ํŠน์„ฑ ๊ตฌํ˜„์„ ํ†ตํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.
  • ํ”Œ๋žซํผ ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ๋ก์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋งคํฌ๋กœ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ์ผ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„ ํ…œํ”Œ๋ฆฟ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • "dev_*" ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋งคํฌ๋กœ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • IoMem ์œ ํ˜•์— ๋Œ€ํ•œ "{read,write}*_relaxed" ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. .
  • ํŒŒ์ผ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด FileOpener ์†์„ฑ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ๋ก ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜์— "ThisModule" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์–ธ์–ด๋กœ ์ปค๋„ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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