Popcorn์€ Linux ์ปค๋„์šฉ ๋ถ„์‚ฐ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ง€๋‹ˆ์•„ ๊ณต๋Œ€ ะฟั€ะตะดะปะพะถะธะป Linux ์ปค๋„ ๊ฐœ๋ฐœ์ž์˜ ๋…ผ์˜๋ฅผ ์œ„ํ•ด ๋ถ„์‚ฐ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ํŒจ์น˜ ์„ธํŠธ ํŒ์ฝ˜ (๋ถ„์‚ฐ ์Šค๋ ˆ๋“œ ์‹คํ–‰) - ํ˜ธ์ŠคํŠธ ๊ฐ„ ์Šค๋ ˆ๋“œ ๋ฐฐํฌ ๋ฐ ํˆฌ๋ช…ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Popcorn์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•œ ํ˜ธ์ŠคํŠธ์—์„œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ์ค‘๋‹จ ์—†์ด ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๊ฐœ๋ณ„ ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํฌ๋ฆฌ ์šฐPopcorn์€ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰์„ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ค‘์— ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์›ํ™œํ•˜๊ณ  ๋™์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋™์‹œ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์—์„œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํŒ์ฝ˜ ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ ํ˜•ํƒœ ํŒจ์น˜ ๋ฆฌ๋ˆ…์Šค ์ปค๋„๊ณผ ะฑะธะฑะปะธะพั‚ะตะบะฐ Popcorn ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ปค๋„ ์ˆ˜์ค€์—์„œ๋Š” ๋ถ„์‚ฐ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ™•์žฅ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต์ ์ด๊ณ  ์ผ๊ด€๋œ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ์ผ๊ด€์„ฑ์€ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ฝ์„ ๋•Œ ํ˜ธ์ŠคํŠธ์— ๋ณต์ œํ•˜๊ณ  ์“ธ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋ฌดํšจํ™”ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ TCP ์†Œ์ผ“์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ปค๋„ ์ˆ˜์ค€ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋””๋ฒ„๊น…๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด TCP/IP๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž๋Š” ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ ๊ด€์ ์—์„œ TCP/IP๊ฐ€ ์ปค๋„ ๊ตฌ์กฐ์˜ ๋‚ด์šฉ๊ณผ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•˜๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ๋Š” ๋™์ผํ•œ ์‹ ๋ขฐ ์ˆ˜์ค€์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•ˆ์ •ํ™”๋œ ํ›„์—๋Š” ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์šด์†ก ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŒ์ฝ˜์€ 2014๋…„๋ถ€ํ„ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ ๊ฐ€๋Šฅ์„ฑ์„ ์—ฐ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐœ๋ฐœ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ์ด์งˆ์ ์ธ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜(Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”์–ด๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํŒ… ์‹œ์Šคํ…œ. Linux ์ปค๋„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ์•ˆ๋œ ํŒจ์น˜ ์„ธํŠธ๋Š” x86 CPU๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ์‹คํ–‰์„ ์ง€์›ํ•˜์ง€๋งŒ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ CPU ์•„ํ‚คํ…์ฒ˜(x86 ๋ฐ ARM)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ณด๋‹ค ๊ธฐ๋Šฅ์ ์ธ ๋ฒ„์ „์˜ Popcorn Linux๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ธฐ์ข… ํ™˜๊ฒฝ์—์„œ ํŒ์ฝ˜์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŠน์ˆ˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ LLVM ๊ธฐ๋ฐ˜. ๋™์ผํ•œ ์•„ํ‚คํ…์ฒ˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋ถ„์‚ฐ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Popcorn์€ Linux ์ปค๋„์šฉ ๋ถ„์‚ฐ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ถœ์ฒ˜ : opennet.ru

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