Linux ์ปค๋„ 5.18์—์„œ๋Š” C ์–ธ์–ด ํ‘œ์ค€ C11์˜ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

Linked List ์ฝ”๋“œ์˜ Spectre ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํŒจ์น˜ ์„ธํŠธ๋ฅผ ๋…ผ์˜ํ•˜๋˜ ์ค‘, ์ตœ์‹  ๋ฒ„์ „์˜ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋Š” C ์ฝ”๋“œ๋ฅผ ์ปค๋„์— ํ—ˆ์šฉํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค ์›ํ™œํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ถ”๊ฐ€๋œ ์ปค๋„ ์ฝ”๋“œ๋Š” 89๋…„์— ํ˜•์„ฑ๋œ ANSI C(C1989) ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ Spectre ๊ด€๋ จ ๋ฌธ์ œ๋Š” ๋ฃจํ”„ ์ดํ›„ ๋ณ„๋„๋กœ ์ •์˜๋œ ๋ฐ˜๋ณต์ž๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งคํฌ๋กœ๋Š” ์—ฐ๊ฒฐ๋œ ๋ชฉ๋ก์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ฃจํ”„ ๋ฐ˜๋ณต์ž๊ฐ€ ํ•ด๋‹น ๋งคํฌ๋กœ์— ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํ”„ ์ž์ฒด ์™ธ๋ถ€์—์„œ ์ •์˜๋˜๋ฉฐ ๋ฃจํ”„ ํ›„์—๋„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C99 ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜๋ฉด for() ๋ธ”๋ก์— ๋ฃจํ”„ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ์•Š๊ณ ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linus Torvalds๋Š” ์ƒˆ๋กœ์šด ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด์— ๋™์˜ํ•˜๊ณ  5.18๋…„์— ๋ฐœํ‘œ๋œ C11 ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜๋„๋ก 2011 ์ปค๋„์„ ์ด๋™ํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋น„ ํ…Œ์ŠคํŠธ ๋™์•ˆ ์ƒˆ ๋ชจ๋“œ์˜ GCC ๋ฐ Clang ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ํŽธ์ฐจ ์—†์ด ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ฒ ์ €ํ•œ ํ…Œ์ŠคํŠธ ์ค‘์— ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด 5.18 ์ปค๋„ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ '--std=gnu89' ์˜ต์…˜์ด '--std=gnu11 -Wno-shift-negative-value'๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. C17 ํ‘œ์ค€์„ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ๊ณ ๋ ค๋˜์—ˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ GCC์˜ ์ตœ์†Œ ์ง€์› ๋ฒ„์ „์„ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. C11 ์ง€์› ํฌํ•จ์€ GCC ๋ฒ„์ „(5.1)์˜ ํ˜„์žฌ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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