QEMU 8.0 ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ถœ์‹œ

QEMU 8.0 ํ”„๋กœ์ ํŠธ์˜ ์ถœ์‹œ๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ์„œ QEMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x86 ํ˜ธํ™˜ PC์—์„œ ARM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QEMU์˜ ๊ฐ€์ƒํ™” ๋ชจ๋“œ์—์„œ๋Š” CPU์—์„œ ๋ช…๋ น์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๊ณ  Xen ํ•˜์ดํผ๋ฐ”์ด์ € ๋˜๋Š” KVM ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ฝ”๋“œ ์‹คํ–‰ ์„ฑ๋Šฅ์€ ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ x86 ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ Linux ์‹คํ–‰ ํŒŒ์ผ์ด ๋น„ x86 ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก Fabrice Bellard๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด 14๊ฐœ์˜ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์˜ ์ˆ˜๋Š” 400๊ฐœ๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 8.0์„ ์ค€๋น„ํ•˜๋ฉด์„œ 2800๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ 238๊ฐœ ์ด์ƒ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

QEMU 8.0์— ์ถ”๊ฐ€๋œ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • x32 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 86๋น„ํŠธ ํ˜ธ์ŠคํŠธ์—์„œ ์‹œ์Šคํ…œ ์—๋ฎฌ๋ ˆ์ด์…˜(KVM ๋ฐ Xen ํ•˜์ดํผ๋ฐ”์ด์ € ์‚ฌ์šฉ์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด OS ์‹คํ–‰)์— ๋Œ€ํ•œ ์ง€์›์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์œผ๋ฉฐ ๊ณง ์ค‘๋‹จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. 32๋น„ํŠธ x86 ํ˜ธ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ ์—๋ฎฌ๋ ˆ์ด์…˜(๋‹ค๋ฅธ CPU์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰)์— ๋Œ€ํ•œ ์ง€์›์€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.
  • x86 ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” KVM ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฐ Linux 5.12+ ์ปค๋„ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ Xen ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ์•„ํ‚คํ…์ฒ˜์šฉ ํด๋ž˜์‹ TCG ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋Š” ์ด์ œ FSRM, FZRM, FSRS ๋ฐ FSRC CPUID ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด CPU ๋ชจ๋ธ Intel Sapphire Rapids(Intel 7)์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ด์ œ Cortex-A55 ๋ฐ Cortex-R52 CPU๋ฅผ ์ง€์›ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ Olimex STM32 H405 ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ, FEAT_EVT(Enhanced Virtualization Traps), FEAT_FGT(Fine-Grained Traps) ๋ฐ AArch32 ARMv8-R ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ. gdbstub์—๋Š” M-ํ”„๋กœํ•„ ์•„ํ‚คํ…์ฒ˜(๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ํ”„๋กœํ•„)์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” OpenTitan, PolarFire ๋ฐ OpenSBI ์—๋ฎฌ๋ ˆ์ดํŠธ ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์–ด ์„ธํŠธ(ISA) ๋ฐ ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค: Smstateen, icount ๋””๋ฒ„๊ทธ ์นด์šดํ„ฐ, PMU ์ด๋ฒคํŠธ ์บ์‹œ ๊ด€๋ จ ๊ฐ€์ƒ ๋ชจ๋“œ, ACPI, Zawrs, Svadu, T-Head ๋ฐ Zicond ํ™•์žฅ.
  • HPPA ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” fid(๋ถ€๋™ ์†Œ์ˆ˜์  ์‹๋ณ„) ๋ช…๋ น์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ 32๋น„ํŠธ ๋ชจ๋“œ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 390x ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ๋ณดํ˜ธ๋œ KVM ๊ฒŒ์ŠคํŠธ๋ฅผ ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ ๋น„๋™๊ธฐ์‹ ๋ฉ”๋ชจ๋ฆฌ ๋ถ„๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ๋œ zPCI ์žฅ์น˜์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์ƒ ๋จธ์‹ ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ซ ํ”Œ๋Ÿฌ๊ทธ โ€‹โ€‹๋ฐ ์–ธํ”Œ๋Ÿฌ๊ทธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” virtio-mem ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์‹ค์‹œ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์— ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์ „ ํ• ๋‹น์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์›์ด VFIO(Virtual Function I/O)์—์„œ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ์˜ ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์ด ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค).
  • qemu-nbd ๋ธ”๋ก ์žฅ์น˜๋Š” TLS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ TCP๋ณด๋‹ค ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์ŠคํŠธ ์—์ด์ „ํŠธ์—๋Š” OpenBSD ๋ฐ NetBSD์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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