Essence๋Š” ์ž์ฒด ์ปค๋„๊ณผ ๊ทธ๋ž˜ํ”ฝ ์…ธ์„ ๊ฐ–์ถ˜ ๊ณ ์œ ํ•œ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

์ž์ฒด ์ปค๋„ ๋ฐ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์ƒˆ๋กœ์šด Essence ์šด์˜ ์ฒด์ œ๋ฅผ ์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” 2017๋…„๋ถ€ํ„ฐ ํ•œ ์—ด์„ฑํŒฌ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋ฐ์Šคํฌํƒ‘ ๋ฐ ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ ๊ตฌ์ถ•์— ๋Œ€ํ•œ ๋…์ฐฝ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ธฐ๋Šฅ์€ ์ฐฝ์„ ํƒญ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ํ•œ ์ฐฝ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ด๊ฒฐ ์ค‘์ธ ์ž‘์—…์— ๋”ฐ๋ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐฝ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Essence๋Š” ์ž์ฒด ์ปค๋„๊ณผ ๊ทธ๋ž˜ํ”ฝ ์…ธ์„ ๊ฐ–์ถ˜ ๊ณ ์œ ํ•œ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

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

Essence๋Š” ์ž์ฒด ์ปค๋„๊ณผ ๊ทธ๋ž˜ํ”ฝ ์…ธ์„ ๊ฐ–์ถ˜ ๊ณ ์œ ํ•œ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

์ปค๋„์—๋Š” ์—ฌ๋Ÿฌ ์šฐ์„  ์ˆœ์œ„ ์ˆ˜์ค€์„ ์ง€์›ํ•˜๋Š” ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ, mmap ๋ฐ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํ•˜์œ„ ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ ์Šคํƒ(TCP/IP), ์‚ฌ์šด๋“œ ๋ฏน์‹ฑ์„ ์œ„ํ•œ ์˜ค๋””์˜ค ํ•˜์œ„ ์‹œ์Šคํ…œ, VFS ๋ฐ ๋ฐ์ดํ„ฐ ์บ์‹ฑ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ๋ ˆ์ด์–ด๊ฐ€ ์žˆ๋Š” EssenceFS ํŒŒ์ผ ์‹œ์Šคํ…œ. ์ž์ฒด FS ์™ธ์—๋„ Ext2, FAT, NTFS ๋ฐ ISO9660์šฉ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์œ ์‚ฌํ•œ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๋Š” ACPICA, IDE, AHCI, NVMe, BGA, SVGA, HD ์˜ค๋””์˜ค, ์ด๋”๋„ท 8254x ๋ฐ USB XHCI(์Šคํ† ๋ฆฌ์ง€ ๋ฐ HID)๋ฅผ ๊ฐ–์ถ˜ ACPI์šฉ์œผ๋กœ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ์˜ ํ˜ธํ™˜์„ฑ์€ GCC ๋ฐ ์ผ๋ถ€ Busybox ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ POSIX ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Essence๋กœ ํฌํŒ…๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” Musl C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Bochs ์—๋ฎฌ๋ ˆ์ดํ„ฐ, GCC, Binutils, FFmpeg ๋ฐ Mesa๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Essence์šฉ์œผ๋กœ ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ํŒŒ์ผ ๊ด€๋ฆฌ์ž, ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ, IRC ํด๋ผ์ด์–ธํŠธ, ์ด๋ฏธ์ง€ ๋ทฐ์–ด ๋ฐ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Essence๋Š” ์ž์ฒด ์ปค๋„๊ณผ ๊ทธ๋ž˜ํ”ฝ ์…ธ์„ ๊ฐ–์ถ˜ ๊ณ ์œ ํ•œ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์€ 64MB ๋ฏธ๋งŒ์˜ RAM์„ ๊ฐ–์ถ˜ ๋ ˆ๊ฑฐ์‹œ ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•ฝ 30MB์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์‹คํ–‰๋˜๊ณ  ๋ชจ๋“  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ๊ทธ๋žจ์€ ์ผ์‹œ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ๋กœ๋”ฉ์—๋Š” ๋ช‡ ์ดˆ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฉฐ ์ข…๋ฃŒ๋Š” ๊ฑฐ์˜ ์ฆ‰์‹œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” QEMU ํ…Œ์ŠคํŠธ์— ์ ํ•ฉํ•œ ์ƒˆ๋กœ์šด ๊ธฐ์„ฑ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋งค์ผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.



์ถœ์ฒ˜ : opennet.ru

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