
๋ด๊ฐ ๋ณด๋ ค๊ณ ๋ง๋๋ ๊ธฐ์ ๋ฉด์ ๋ฆฌ์คํธ
< ์ปดํจํฐ ๊ตฌ์กฐํธ! >
๋ฌธ์ ๋ฆฌ์คํธ
- CPU์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ํ๋?
- ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์คํ๋๋๊ฐ?
- ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํด๋ณด์ธ์.
- ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ํ์ํ๊ฐ?
- ์ง์ญ์ฑ(Locality)์ด๋?
- ์คํ(Stack)๊ณผ ํ(Heap)์ ์ฐจ์ด๋?
- ์ฝ ์คํ(Call Stack)์ด๋?
- ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ์์ ๊ณผ ์ด์
- ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ์ด์ด์ง๋์?
- ๋ฉํฐ์ฝ์ด CPU๊ฐ ํ๋ก ํธ์๋์ ์ฃผ๋ ์ด์ ์?
- ์ปจํ ์คํธ ์ค์์นญ์ด๋?
- ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด UI๋ฅผ ๋ฉ์ถ๊ฒํ๋ ์ด์
- Web Worker๋ ์ ํ์ํ๊ฐ์?
๋ค์ด๊ฐ๊ธฐ ์ ,
์ปดํจํฐ ๊ตฌ์กฐ๋ผ๋ ๊ณผ๋ชฉ์, ๋ง ๊ทธ๋๋ก ์ปดํจํฐ์ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ํ๋ฌธ์ผ๋ก ๋ด๊ฐ ๊ณต๋ถํ๊ณ ์๋ ํ๋ก ํธ์๋๋ฅผ ๋์ด ์น ๊ฐ๋ฐ์๋ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์งํ๊ณ ์์ด์ผํ๋ ๋ด์ฉ์ ๋๋ค.
๋ฐ๋ผ์, ๊ณต๋ถํ ๋ด์ฉ์ ์ปดํจํฐ ๊ตฌ์กฐ๋ผ๋ ๊ณผ๋ชฉ์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ฐ๊ฒฐํ์ฌ ๋ฉด์ ์ ์ค๋นํ์์ต๋๋ค.
์ปดํจํฐ์ ๊ตฌ์กฐ
์ปดํจํฐ๋ ๋ณต์กํ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ถํ์ ํ๋์ฉ ์ค๋ช ํ๋ฉด ๊ณต๋ถ๋ง ํ๋ค๊ฐ ๋ฉด์ ์ ๋ชป ๋ณผ ๊ฒ ๊ฐ์ ํ๋ก๊ทธ๋จ ์คํ์ ์์ฃผ๋ก ๊ณต๋ถํ์์ต๋๋ค.
์ปดํจํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก CPU, ๋ฉ๋ชจ๋ฆฌ(RAM), ๋ณด์กฐ๊ธฐ์ต์ฅ์น(SSD)๋ก ๊ตฌ์ฑ(์ด์ธ ๋ถํ์ ์๋ต)๋์ด ์์ผ๋ฉฐ, ๊ฐ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
CPU
- ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์คํํฉ๋๋ค.
- ์ฐ์ฐ(ALU) + ์ ์ด(Control Uni) ํํ
- ์ ์ฅ์ ๊ฑฐ์ ๋ถ๊ฐ(๋ ์ง์คํฐ๋ง ์กด์ฌ)
* ๋ ์ง์คํฐ
- CPU์ ๋น ๋ฅธ ์ฐ์ฐ์ ์ํ ์ ๊ทผ์ด ๊ฐ์ฅ ๋น ๋ฅธ ์์ ์ ์ฅ๊ณต๊ฐ(์ฐ์ฐ์ ํ์ํ ๊ฐ๋ง ์ ์ฅ)
- RAM์ผ๋ก ๋์ฒดํ ๊ฒฝ์ฐ CPU์ฐ์ฐ ์๋๊ฐ ๊ฐ์ ์ฝ์ด์ค๋ ์๊ฐ์ผ๋ก ์ธํด ๋๋ ค์ง๋๋ค.
๋ฉ๋ชจ๋ฆฌ
- ์คํ ์ค์ธ ์ฝ๋์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ณต๊ฐ
- CPU๊ฐ ์ง์ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ผํ ์ฅ์
๋ณด์กฐ๊ธฐ์ต์ฅ์น
- ํ๋ก๊ทธ๋จ์ด ๋ณด๊ด๋๋ ๊ณณ
- CPU๋ ์ง์ ์ ๊ทผ ๋ถ๊ฐ
ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์
ํ๋ก๊ทธ๋จ์ SSD, ์ฆ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋์ด ์๋ ๋ช ๋ น์ด๋ค์ ์งํฉ์ฒด์ ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
- ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ.
- CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด๋ฅผ ์์๋๋ก ์คํ.
๊ฐ๋จํ๊ฒ ํํํด๋ณด๋ฉด,
๋ณด์กฐ ๊ธฐ์ต ์ฅ์น -> ๋ฉ๋ชจ๋ฆฌ -> CPU ํํ๋ก ํ๋ก๊ทธ๋จ์ด ์ด๋ํ์ฌ ์คํ๋๋ ํํ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด, ์ฐ๋ฆฌ๊ฐ Chrome.exe๋ผ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด,
- ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น(SSD)์ ์ ์ฅ๋์ด ์๋ Chrome.exeํ์ผ์ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ๋ฌํ์ฌ ์ ์ฅ.
- ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅ๋์ด ์๋ Chrome.exe ํ๋ก๊ทธ๋จ์ CPU๊ฐ ์ฝ์ด ์ฐจ๋ก๋๋ก ๋ช ๋ น์ด ์คํ.
๊ทธ๋ ๋ค๋ฉด CPU๋ ๋ช ๋ น์ด๋ฅผ ์ด๋ป๊ฒ ์คํํ ๊น? ๋ผ๋ ์๋ฌธ์ด ๋ญ๋๋ค.
CPU์ ๋ช ๋ น์ด ์คํ ์ฌ์ดํด
CPU๋ Fetch -> Decode -> Execute ํํ์ ์ฌ์ดํด์ ๋ฐ๋ณตํ๋ฉฐ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
- Fetch(๊ฐ์ ธ์ค๊ธฐ)
- PC(Program Couter) ๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์์ ๋ช ๋ น์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ด.
- ๊ฐ์ ธ์จ ๋ช ๋ น์ด๋ IR(Instruction Register)
- PC: ๋ค์ ์คํํ ๋ช ๋ น์ด ์ฃผ์(์คํํ ๋ช ๋ น์ด ์ฃผ์)
- IR: PC์ ์ ์ฅ๋์ด ์๋ ์ฃผ์์ ์ ๊ทผํ์ฌ ํ์ฌ ์ํํ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์ ์ฅ(์คํํ ๋ช ๋ น์ด๊ฐ ์ ์ฅ๋ ๋ ์ง์คํฐ)
- Decode(ํด์ํ๊ธฐ)
- Control Unit์ด IR์ ์๋ ๋ช ๋ น์ด๋ฅผ ํด์
- ๋ช ๋ น์ด๊ฐ ์ฐ์ฐ์ธ์ง, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ธ์ง, ์ ํ์ธ์ง ํ๋จ
- ์ด๋ ๋ช ๋ น์ด ํ์(ISA)์ ๋ฐ๋ผ ํด์ํฉ๋๋ค.
- Execute(์คํ)
- ๋ช ๋ น์ด ์ข ๋ฅ์ ๋ฐ๋ผ ์คํ์ด ๋ฌ๋ผ์ง๋๋ค.
- ์ฐ์ฐ ๋ช ๋ น -> ALU๊ฐ ์ฐ์ฐ(ALU: ๋นํธ ์ฐ์ฐ ๋ฐฉ์์ ์ฐ์ฐ์ฅ์น)
- ๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น -> ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
- ๋ถ๊ธฐ ๋ช ๋ น -> PC ๊ฐ ๋ณ๊ฒฝ(๋ค์ ๋ช ๋ น์ด ์ํ์ ๋ํ ๋ช ๋ น์ด - ex) ํจ์ ์คํ)
- ์ด์ ๋ํ ๊ฒฐ๊ณผ๋ ๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋ก๋ฉ๋๋ค.
- PC ์
๋ฐ์ดํธ(์๋ฌต์ ์ธ ๋จ๊ณ)
- ์ผ๋ฐ ๋ช ๋ น์ด: PC + 1 (๋๋ + ๋ช ๋ น์ด ํฌ๊ธฐ)๋ก ๋ค์ ๋ช ๋ น์ด๋ก ํ๋ฆ์ ์ฐ๊ฒฐํฉ๋๋ค.
- ์ ํ ๋ช ๋ น์ด: PC๋ฅผ ๋ค๋ฅธ ์ฃผ์๋ก ๋ณ๊ฒฝํ์ฌ ๋ช ๋ น์ด ์คํ์ ๊ฑด๋๋๋๋ค.(if๋ฌธ, for๋ฌธ ๋ฑ)
์๋ฅผ๋ค์ด, ์๋์ ๊ฐ์ JavaScript์ ์ฝ๋๋ฅผ ์คํํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ์ํ๋ฉ๋๋ค.
// b์ c๋ ์ด๋ฏธ ์ ์ธ๋์ด ์๋ค๊ณ ๊ฐ์
a = b + c;
- b๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ก๋
- c๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ก๋
- ALU๋ก ๋ง์
- ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ์ ์ ์ฅ
- ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ์ ์ฅ(a)
์ฌ๊ธฐ์ ๋ฌธ์ ๋ฆฌ์คํธ์ 1๋ฒ๊ณผ 2๋ฒ ๋ต๋ณ์ ์ฐพ์ ์ ์์ต๋๋ค.
1๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
CPU์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ํ๋?
CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ํด์ํ๊ณ ์คํํ๋ ์ฅ์น์ด๋ฉฐ, ์คํ ๊ณผ์ ์์ ํ์ํ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ CPU ๋ด๋ถ์ ๋ ์ง์คํฐ์ ์ ์ฅํ ๋ค ์ฐ์ฐ์ ์ํํฉ๋๋ค.
๋ํ, ๋ฉ๋ชจ๋ฆฌ๋ CPU๊ฐ ์คํํ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋ ์คํ ๊ณต๊ฐ์ ๋๋ค. CPU๊ฐ ์ ์ผํ๊ฒ ์ ๊ทผํ ์ ์๋ ์ ์ฅ๊ณต๊ฐ์ผ๋ก CPU ๋ช ๋ น์ด ์ํ์ ์ง์ํ๊ธฐ ์ํ ๋ชฉ์ ์ ์ ์ฅ๊ณต๊ฐ์ผ๋ก ์ ์์ด ๊บผ์ง๋ฉด ์ฌ๋ผ์ง๋ ํ๋ฐ์ฑ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
2๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์คํ๋๋๊ฐ?
ํ๋ก๊ทธ๋จ์ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ๋ช ๋ น์ด์ ์งํฉ์ ๋๋ค.
ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์์ ๋ฉ๋ชจ๋ฆฌ๋ก ํ๋ก๊ทธ๋จ์ ๋ก๋ํ ํ, CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ํด์ํ๊ณ ์คํํ๋ฉฐ, ๋ถ๊ธฐ ๋ช ๋ น์ ๋ฐ๋ผ ์คํ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ธต
์ฌ๊ธฐ๊น์ง ์ดํดํ์ จ๋ค๋ฉด, ์ด๋ฐ ๊ถ๊ธ์ฆ์ด ์๊ธธ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋๋ง ์ฌ์ฉํ๋ฉด ์ ๋๋์? ๊ตณ์ด ์ฌ๋ฌ ๊ฐ๋ก ๋๋ ๋์ ์ด์ ๊ฐ ์๋์?
์ด ๊ถ๊ธ์ฆ์ CPU์ ๋ช ๋ น์ด ์ํ ๊ณผ์ ์์์ ๋ต์ ์ป์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ(์ ์ฅ์ฅ์น)๋ ์ ์์ด ๊บผ์ ธ๋ ์ ์ง๋์ด์ผํ๋ ์๊ตฌ ์ ์ฅ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก๊ทธ๋จ์ ์ค์นํ๋๋ฐ ์ ์์ ๊ป๋ค ํค๋ ํํ๋ก ํ๋ก๊ทธ๋จ์ด ์ง์์ง๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ปดํจํฐ ์ฌ์ฉ์ ๋ง์ ๋ถํธํจ์ ๋๊ปด์ผํ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋นํ๋ฐ์ฑ ์ ์ฅ์ฅ์น๋ ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, ๋ง์ฝ ์คํ์ ์ํ ๋ฉ๋ชจ๋ฆฌ๊น์ง ํ๋๋ก ํตํฉํ๋ค๋ฉด CPU๊ฐ ๋ช
๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ง๋ค ๋๋ฆฐ ์ ์ฅ์ฅ์น์ ์ง์ ์ ๊ทผํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ CPU๋ ์ฐ์ฐ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์ ์ฒด ์์คํ
์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ ์ฅ์ฉ ์ฅ์น์ ์คํ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ฑ์ ๋ชจ๋ ๋ง์กฑ์ํค๋ ๊ตฌ์กฐ๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก CPU ์ฐ์ฐ์๋์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ CPU์์ ๊ฑฐ๋ฆฌ, ์๋, ๋น์ฉ์ ๋ฐ๋ผ ๊ตฌ๋ถ(๊ณ์ธตํ)ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
์ ์ฌ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ ๋น๋, ์๋, ๊ฐ๊ฒฉ, ์ฉ๋์ ๋น๊ตํ ์๋ฃ์ ๋๋ค.
์๋ฃ์์ ๋ณด๋ฏ์ด ๋ ์ง์คํฐ๋ CPU์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฉ๋ชจ๋ฆฌ๋ก ์ ๊ทผ ์๋๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๋ฉฐ, ๊ณ์ธต์ด ์๋๋ก ๊ฐ์๋ก ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ, ๋ก์ปฌ ์ ์ฅ์ฅ์น(SSD), ์ธ๋ถ ์ ์ฅ์ฅ์น ์์ผ๋ก ์ ๊ทผ ์๋๊ฐ ๋๋ ค์ง๋๋ค.
์ด๋ฌํ ๊ณ์ธต ๊ตฌ์กฐ๋ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ์ธํด ๋๊ธฐํ์ง ์๋๋ก, ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊น์ด ๋ฉ๋ชจ๋ฆฌ์ ๋์ด ์ ์ฒด ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ์ค๊ณ์
๋๋ค.
3๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ์ ์ฌ๊ธฐ์ ์ฐพ์ ์ ์์ต๋๋ค.
3๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํด๋ณด์ธ์.
CPU์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์๋ ํฐ ์๋ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ๋น์ฉ๊ณผ ๋ฌผ๋ฆฌ์ ํ๊ณ๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๋ ์ง์คํฐ๋ ์บ์์, ๊ทธ๋ ์ง ์์ ๋ฐ์ดํฐ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์ฅ์ฅ์น์ ๋๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํตํด ํ๊ท ์ ๊ทผ ์๊ฐ์ ์ค์ด๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ผ๋ก CPU์ ์๋์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ฅผ ์ํํ ์ ์์ง๋ง, ์ด์ ๋ช ๋ น์ด ์คํ ๊ณผ์ ์ ๋ณด๋ฉด ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ช ๋ น์ด๋ฅผ ๋ก๋ํ๋ ๊ณผ์ ์ ๋๋ฆฝ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กด์ฌํฉ๋๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ CPU์ ๊ฐ๊น์ด ๋์ด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ฅผ ํฅ์ ์ํต๋๋ค.

์ด ์๋ฃ๋ฅผ ๋ค์๋ณด๋ฉด, L1, L2, L3 ์บ์๊ฐ ์กด์ฌํ๊ณ , ์ด๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค๋ ๋น ๋ฅธ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ช ๋ น์ด๋ฅผ ๋ก๋ํ๋ ๊ฒ ๋์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ช ๋ น์ด๋ฅผ ๋ก๋ํ๋ ๊ฒ์ด ๋ ๋น ๋ฅด๋ฉฐ, ์ด๋ CPU์ ์คํ ์๋์ ์ํฅ์ ์ฃผ์ด ์ ์ฒด ์ฑ๋ฅ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์ฌ๊ธฐ์ L1, L2, L3๋ ์บ์ ๋ ๋ฒจ๋ก, L1 -> L3๋ก ๊ฐ์๋ก ์๋๊ฐ ๋๋ ค์ง๋ฉฐ ์ฉ๋์ ์ปค์ง๋๋ค.
์ฃผ์ ํน์ง
- L1: ์ฝ์ด ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ ๊ฐ์ฅ ๋น ๋ฅด์ง๋ง ๊ฐ์ฅ ์์ ์ฉ๋์ ๊ฐ์ง๊ณ ์์
- L2: L1๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง L1 ๋ณด๋ค ํฐ ์ฉ๋์ ๊ฐ์ง๊ณ ์์
- L3: ์ฌ๋ฌ ์ฝ์ด๊ฐ ๊ณต์ ํ๋ฉฐ L1, L2์ ๋นํด ๊ฐ์ฅ ํฐ ์ฉ๋์ ๊ฐ์ง๊ณ ์์
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU๊ฐ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋, ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๋์ํฉ๋๋ค.
- ์บ์ ํ์ธ
- ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ฐ๋ก ์ฌ์ฉ(์บ์ ํํธ, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ ์์)
- ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ (์บ์ ๋ฏธ์ค)
- ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ์ ์ฅ(๋ค์์ ์ธ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฐ์ดํฐ)
์บ์๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์บ์ ํํธ, ๋ฐํํ์ง ๋ชปํ๊ณ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ๊ทผํ๋ค๋ฉด ์บ์ ๋ฏธ์ค๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค.
์บ์ ๋ฏธ์ค๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ค๋ฉด, ๋ถํ์ํ ํ์์ด ์ถ๊ฐ๋์ด ํจ์จ์ฑ์ด ๋จ์ด์ง๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ๊ธฐ์ค์ ๋ฌด์์ผ๊น์?
์ง์ญ์ฑ
์ง์ญ์ฑ์ด๋, ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์์ด ์ผ์ ํ ํจํด์ด ์กด์ฌํ๋ค๋ ํน์ฑ์ ๋งํฉ๋๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ง์ญ์ฑ(Locality)์ด๋ผ๋ ์ฑ์ง์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์๊ฐ ์ง์ญ์ฑ(Time Locality)
- ์ต๊ทผ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ ๊ณง ๋ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
ํ๋ก๊ทธ๋จ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ ์ฌ์ฉํ ๋ค, ์งง์ ์๊ฐ ์์ ๋ค์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด ํน์ฑ์ ํ์ฉํ์ฌ ์ต๊ทผ์ ์ ๊ทผํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํฉ๋๋ค.
๊ณต๊ฐ ์ง์ญ์ฑ(Space Locality)
- ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ทธ ๊ทผ์ฒ ๋ฐ์ดํฐ๋ ๊ณง ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐ์๋ ์ฃผ์์ ์์นํ ๋ฐ์ดํฐ๋ ํจ๊ป ์ ๊ทผ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด ํน์ฑ์ ํ์ฉํด ๋จ์ผ ๋ฐ์ดํฐ๊ฐ ์๋, ์ฐ์๋ ๋ธ๋ก ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ฝ๋ ์์
// ์์
for (let i = 0; i < 1000 ; i++) {
sum += arr[i];
}
์๊ฐ ์ง์ญ์ฑ์ ๋ฐฉ๊ธ ์ ๊ทผํ arr[i] ๋ฅผ ์ง์์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์ต๊ทผ ์ฌ์ฉ๋ arr๋ผ๋ ๋ฐฐ์ด์ด ์ง์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ๋งํฉ๋๋ค.
๊ณต๊ฐ ์ง์ญ์ฑ์ arr๋ผ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ ์ปค์ง๋ ํํ๋ก ์ง์์ ์ผ๋ก ์ ๊ทผํ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์๋ ์ฃผ์๋ฅผ ํ ๋ฒ์ ๋ฌถ์ด ์บ์์ ์ฌ๋ฆฌ๋ ํํ์ ๋๋ค.
์บ์ ๊ต์ฒด ์ ์ฑ (Cache Replacement Policy)
์บ์๋ ์ฉ๋์ด ๋งค์ฐ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์, ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํด์ผํฉ๋๋ค.
์ด๋ฅผ ์ํด ์บ์ ๊ต์ฒด ์ ์ฑ
์ด ์ฌ์ฉ๋ฉ๋๋ค. LRU (Least Recently Used)๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ๋ฐ์ดํฐ๋ถํฐ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก, “์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์๋ค๋ฉด, ์์ผ๋ก๋ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ๋ค”๋ ๊ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ง์ญ์ฑ ์๋ฆฌ์ ์ ๋ง์ ์ค์ ์์คํ
์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
์ด์ธ์๋ FIFO (First In First Out), LFU (Least Frequently Used), Random Replacement ๋ฑ ๋ค์ํ ๋ฐฉ์์ด ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ 4๋ฒ๊ณผ 5๋ฒ์ ๋ํ ๋ต๋ณ์ ์์ฑํ ์ ์์ต๋๋ค.
4๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ํ์ํ๊ฐ?
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM) ์ฌ์ด์ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด, ์์ฃผ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋๋ ๊ณ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. ์ด๋ฅผ ํตํด CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ์ธํด ๋๊ธฐํ์ง ์๋๋ก ํ์ฌ ์ ์ฒด ์คํ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
(+ ์ถ๊ฐ ๊ฐ๋ฅ)
์บ์ ํํธ๋ CPU๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์บ์์์ ๋ฐ๋ก ์ฐพ์ ๊ฒฝ์ฐ์ด๊ณ , ์บ์ ๋ฏธ์ค๋ ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊น์ง ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์บ์ ํํธ๋ ๋น ๋ฅธ ์คํ์, ์บ์ ๋ฏธ์ค๋ CPU ๋๊ธฐ์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํฉ๋๋ค.
5๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์ง์ญ์ฑ(Locality)์ด๋?
์ง์ญ์ฑ(Locality)์ด๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ๋ ์ผ์ ํ ํจํด์ ๋ณด์ด๋ ์ฑ์ง๋ก, ์ต๊ทผ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ ์ธ์ ํ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ํน์ฑ์ ์๋ฏธํฉ๋๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ฌํ ์ง์ญ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ ํ๊ท ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ ์ค์ ๋๋ค.
์คํ(Stack)๊ณผ ํ(Heap) ๋ฉ๋ชจ๋ฆฌ
์ง๊ธ๊น์ง๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ฅผ ๊ฐ์ ํ์ฌ CPU์ ์คํ ํจ์จ์ ๋์ด๋ ๊ตฌ์กฐ์ ๋ํด ์ดํด๋ดค๋ค๋ฉด, ์ด์ ๋ถํฐ๋ ๋ฉ๋ชจ๋ฆฌ ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์คํ ํ๋ฆ๊ณผ ๋ฐ์ดํฐ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ์คํ๊ณผ ํ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด, ์ฝ ์คํ๊ณผ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฃผ ๋ค์ด๋ดค์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
JavaScript๋ ์คํ ์ ์ ์คํ ์ปจํ ์คํธ๋ฅผ ์์ฑํ๋ฉฐ, ์ด ๊ณผ์ ์์ ๊ฐ์ฒด๋ ํจ์๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ค.
์ดํ ์คํ ์ปจํ ์คํธ๊ฐ ์ฝ ์คํ์ ์ฌ๋ผ๊ฐ๊ณ , ์คํ ๋จ๊ณ์์ ์ค์ ์ฝ๋๊ฐ ์คํ๋๋ค.
(๋ง์ฝ ์ด ์ด์ผ๊ธฐ๊ฐ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๋ฉด, ์ด์ ํฌ์คํธ๋ฅผ ๋ณด๊ณ ์ค์๋๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.)
2026.01.16 - [WEB/JavaScript] - ์คํ ์ปจํ ์คํธ(Execution Context)
์คํ ์ปจํ ์คํธ(Execution Context)
๐ฆ ์ปจํ ์คํธ์ปจํ ์คํธ(Context)๋ ์ํฉ, ๋งฅ๋ฝ, ๋ฌธ๋งฅ ์์ ์๋ฏธ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ๊ฐ๋ฐ์๋ต๊ฒ ํด์ํด๋ณด๋ฉด, ํ ์คํธ์ ๋ด์ฉ๋ฟ๋ง ์๋๋ผ, ํ ์คํธ๊ฐ ์ฌ์ฉ๋ ์ํฉ, ์ด์ ๋ฌธ๋งฅ, ์ดํ ๋งฅ๋ฝ ๋ฑ์ ๋ชจ๋ ๊ฐ์ง
blog.dev-sg.cloud
์คํ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ ์์ญ์ผ๋ก, ์ด์ธ์๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ง ํ์ฌ ํฌ์คํธ์์๋ ๋๊ฐ์ง๋ง ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
์คํ ๋ฉ๋ชจ๋ฆฌ(Stack Memory)
์คํ ๋ฉ๋ชจ๋ฆฌ(Stack Memory)๋ ํจ์ ํธ์ถ๊ณผ ์คํ ํ๋ฆ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค.
ํ๋ก๊ทธ๋จ ์คํ ์ค์๋ ํจ์ ํธ์ถ์ด ์์ฃผ ์ผ์ด๋๋ฉฐ, ํจ์ ํธ์ถ์ ์คํ ์ค์ธ ํจ์์ ํจ์ ์ข ๋ฃ ํ ๋์๊ฐ ์ฃผ์, ๊ทธ๋ฆฌ๊ณ ํจ์๊ฐ ๊ฐ์ง๊ณ ์๋ ์ง์ญ ๋ณ์์ ๊ฐ์ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
์ด ๊ณผ์ ์ ๊ด๋ฆฌํ๊ธฐ ๊ฐ์ฅ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ์ ํ์ถ(LIFO)์ด๋ฉฐ, ๋ฐ๋ผ์ ์คํ์ ํ์ฉํ ๋ฉ๋ชจ๋ฆฌ๋ก ํจ์ ํธ์ถ๊ณผ ์คํ ํ๋ฆ์ ๊ด๋ฆฌํฉ๋๋ค.
์คํ ๋ฉ๋ชจ๋ฆฌ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์ ์ฅ๋ฉ๋๋ค.
- ํจ์ ํธ์ถ์ ๋ณด
- ์ง์ญ ๋ณ์
- ๋งค๊ฐ๋ณ์
- ๋ณต๊ท ์ฃผ์
์ด๋ ํ์ฌ ์คํ ์ค์ธ ํจ์์ ์ํ๋ผ๊ณ ๋ ๋ณผ ์ ์์ต๋๋ค.
๋ํ, ์คํ ๋ฉ๋ชจ๋ฆฌ๋ ์คํ ํ๋ฆ์ ๋น ๋ฅด๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์์ต๋๋ค.
ํจ์ ํธ์ถ์ ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ฏ๋ก ํ ๋น/ํด์ ๊ฐ ๋งค์ฐ ๋นจ๋ผ์ผํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋จ์ํด์ผํฉ๋๋ค. ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋น์ฉ์ ๋ฎ์์ง๊ณ , ์คํ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋์์ง๋๋ค.
ํ์ง๋ง ๋ฌดํ ์ฌ๊ท, ๊ณผ๋ํ ํธ์ถ ์ ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํ ๋ฉ๋ชจ๋ฆฌ(Heap Memory)
ํ ๋ฉ๋ชจ๋ฆฌ(Heap Memory)๋ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค.
์ฃผ์ํ ์ ์, ์คํ ๋ฉ๋ชจ๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ ์คํ๊ณผ ๊ฐ์ด push, pop ์ฐ์ฐ์ด ์ผ์ด๋์ง๋ง, ํ์ ์ฐ๋ฆฌ๊ฐ ์๋ ์ฐ์ ์์ ํ๊ณผ๋ ๋ค๋ฅธ ๋ด์ฉ์ ๋๋ค.
ํ(heap)์ ์์ ๋กญ๊ฒ ์์ ์ฌ๋ฆฌ๊ณ , ์ฐ์๋์ง ์์ผ๋ฉฐ, ํ์ํ ๋ ํ ๋นํ๊ณ ํ์ ์์ด์ง๋ฉด ํด์ ํ๋ ์ง์ ์์ด ์์ฌ ์๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์๋ฏธํฉ๋๋ค.
ํ ๋ฉ๋ชจ๋ฆฌ๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํจ์ ์คํ์ด ๋๋ ๋ ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์ฌ๋ฌ ํจ์์์ ๊ณต์ ๋๋ ๊ฐ์ฒด
- ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๋ ๋ฐ์ดํฐ
- ํจ์ ์คํ์ด ๋๋๋ ์ ์ง๋์ด์ผํ๋ ๋ฐ์ดํฐ
ํด๋น ๋ฐ์ดํฐ๋ ์คํ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๊ฒฝ์ฐ, ํจ์ ์ข ๋ฃ์ ํจ๊ป ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์คํ ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐ๋ก ๊ด๋ฆฌํด์ผํฉ๋๋ค.
๋ํ ํ ๋ฉ๋ชจ๋ฆฌ๋ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ์ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์๋ฅผ ์์ธกํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ์๋์ ์ผ๋ก ์์ ๋กญ๊ฒ ๋์ด๋ ์ ์๋๋ก ์ ์ฐํ๊ฒ ๊ด๋ฆฌ๋ฉ๋๋ค. ์ด๋ก ์ธํด, ๋ฉ๋ชจ๋ฆฌ ํ์ฉ ์ ์ฐ์ฑ์ ๋์์ง์ง๋ง, Garbage Collector์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
์คํ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น๊ตํ์ฌ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๊ด์ | ์คํ(Stack) | ํ(Heap) |
| ๊ด๋ฆฌ ๋์ | ์คํ ํ๋ฆ | ๋ฐ์ดํฐ |
| ๋ชฉ์ | ํจ์ ํธ์ถ ๊ด๋ฆฌ | ๋์ ๋ฐ์ดํฐ ์ ์ฅ |
| ์๋ช ์ฃผ๊ธฐ | ํจ์ ์คํ ๋์ | ์ฐธ์กฐ๊ฐ ์กด์ฌํ๋ ๋์ |
| ๊ตฌ์กฐ | LIFO | ์์ ๊ตฌ์กฐ |
| ํด์ ๋ฐฉ์ | ์๋ | Garbage Collector / ๋ช ์์ ํด์ |
์ฌ๊ธฐ์ 6, 7, 8๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ์ ์ฐพ์ ์ ์์ต๋๋ค.
6๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์คํ(Stack)๊ณผ ํ(Heap)์ ์ฐจ์ด๋?
์คํ์ ํจ์ ํธ์ถ๊ณผ ์คํ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๊ณ , ํ์ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์
๋๋ค.
์คํ์๋ ์ง์ญ ๋ณ์์ ๋ณต๊ท ์ฃผ์๊ฐ ์ ์ฅ๋์ด ํจ์ ์คํ์ด ๋๋๋ฉด ์๋์ผ๋ก ํด์ ๋๊ณ , ํ์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ด ํฌ๊ธฐ์ ์๋ช
์ด ์ ํด์ง์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์ฐธ์กฐ๊ฐ ๋จ์ ์๋ ๋์ ์ ์ง๋ฉ๋๋ค.
7๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์ฝ ์คํ(Call Stack)์ด๋?
์ฝ ์คํ์ ํ์ฌ ์คํ ์ค์ธ ํจ์๋ค์ ์คํ ์ปจํ
์คํธ๋ฅผ ์คํ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํ๋ ์์ญ์
๋๋ค.
ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํ ์ปจํ
์คํธ๊ฐ ์ฝ ์คํ์ ์์ด๊ณ , ํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ์ ๊ฑฐ๋๋ฉด์ ์คํ ํ๋ฆ์ด ์ด์ ํจ์๋ก ๋์๊ฐ๋๋ค.
์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์คํ ์์๊ฐ ๊ด๋ฆฌ๋ฉ๋๋ค.
8๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ์์ ๊ณผ ์ด์
์คํ ์ค๋ฒํ๋ก์ฐ๋ ํจ์ ํธ์ถ์ด ๊ณ์ ์์ฌ ์คํ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ ๋ ๋ฐ์ํฉ๋๋ค.
์ฃผ๋ก ์ข
๋ฃ ์กฐ๊ฑด์ด ์๋ ์ฌ๊ท ํธ์ถ์ด๋ ๊ณผ๋ํ๊ฒ ๊น์ ํจ์ ํธ์ถ์ด ์์ธ์ด๋ฉฐ, ์คํ์ ๋น ๋ฅธ ์คํ ํ๋ฆ ๊ด๋ฆฌ๋ฅผ ์ํด ํฌ๊ธฐ๊ฐ ์ ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ํ๊ณ๋ฅผ ๋์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
(+์ถ๊ฐ ๋ด์ฉ)
์คํ์ ์คํ ํ๋ฆ์ ๋น ๋ฅด๊ณ ๋จ์ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ํฌ๊ธฐ๊ฐ ์ ํ๋๋ฉฐ, ํ์ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ์ฐํ๊ฒ ์ค๊ณ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์คํ ์ค๋ฒํ๋ก์ฐ๋ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฐ๋ฉด, ํ ๋ฌธ์ ๋ ์ ์ง์ ์ธ ์ฑ๋ฅ ์ ํ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ํ์ด์ง ์ฑ๋ฅ
๋ฉ๋ชจ๋ฆฌ ๋์
๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)๋, ๋ ์ด์ ํ์์๋ ๊ฐ์ฒด๊ฐ ์ฐธ์กฐ๋ก ์ธํด ํด์ ๋์ง ์๊ณ ํ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ ๋จ์์๋ ์ํ์ ๋๋ค.
ํ ๋ฉ๋ชจ๋ฆฌ๋ ๋์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก, ํ๋ก๊ทธ๋จ ์คํ ์ค ์์ฑ๋๋ ๊ฐ์ฒด์ ๋ณ์๋ค์ด ์ ์ฅ๋๋ฉฐ ์ด ๋ฐ์ดํฐ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค๊ณ ํ๋จ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ (์ ๊ฑฐ)๋์ด์ผ ํฉ๋๋ค. JavaScript๋ ์ด ํด์ ๊ณผ์ ์ GC(Garbage Collection)์ด ๋ด๋นํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ฌธ์ ์
GC๋ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ฉฐ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํฉ๋๋ค.
์ด ๊ณผ์ ์ ๋ณดํต ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ผ์ ์ ์งํ ์ํ์์ ์คํ๋๊ธฐ์ ๋ง์ฝ, GC๊ฐ ์ค๋ ์คํ๋ ์๋ก ํ๋ ์ ๋๋กญ, ์คํฌ๋กค ๋๊น, ์ ๋ ฅ ์ง์ฐ ๋ฑ UI ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ์ด๋๋ฉด, ํ์์๋ ๊ฐ์ฒด๊ฐ ํด์ ๋์ง ์์ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฆ๊ฐํ๊ณ , ํ์ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ด ์ค์ด๋ญ๋๋ค.
๋ํ CPU๊ฐ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋, ๋ถํ์ํ ๋ฐ์ดํฐ๋ก ์ธํด ์บ์ ํํธ ๋น์ค์ด ์ค์ด ์บ์ ํจ์จ์ด ์ ํ๋๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ ์ ๊ทผ ํด์ผํ์ฌ ์ ๊ทผ ๋น์ฉ๋ ์ฆ๊ฐํฉ๋๋ค.
GC๋ ๊ฒ์ฌํด์ผํ๋ ๊ฐ์ฒด๊ฐ ๋์ด๋ ์คํ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ด๋ ํ์ด์ง ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ์ค๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ํ์ด์ง ์ฑ๋ฅ์ ๋ผ์น๋ ์ํฅ
์น ํ์ด์ง๋ฅผ ์ค์ ์ ์ผ๋ก ๋ณด๋ฉด, GC๊ฐ ๋ฉ์ธ ์ค๋ ๋์์ ์์ ํ๊ณ ์๋ ๋ชจ๋ ๋ด์ฉ์ ์ค๋จํ๊ณ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ ์ ํ์ฌ ๋ ๋๋ง์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ์ด์ง๊ฐ ๋ฉ์ถ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฑฐ๋ ์ฌ์ฉ์ ์ธํฐ๋ ์ ์ง์ฐ ๋ฑ์ ๋ฌธ์ ๋ก ์ด์ด์ ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ์ํค๋ ๋ฌธ์ ๋ก ์ด์ด์ง๋๋ค.
์ฌํ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ๊ณต๊ฐ ํ๊ณ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ ์ข ๋ฃ๋๊ฑฐ๋ ๋ชจ๋ฐ์ผ์ ๊ฒฝ์ฐ OS๊ฐ ๋ธ๋ผ์ฐ์ ํญ์ ๊ฐ์ ์ข ๋ฃํ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ก ์ด์ด์ ธ ์ฌ๊ฐํ ๋ฌธ์ ๋ก ๋ค๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฅ ๊ถ๊ธํด์ง๋ ๋ด์ฉ์, ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ธ์ ์์ฃผ ๋ฐ์ํ ๊น? ๋ผ๋ ๋ด์ฉ์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์ฃผ ๋ฐ์ํ๋ ์ํฉ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
- ์ ๊ฑฐ๋์ง ์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋
- ํด์ ๋์ง ์์ ํ์ด๋จธ
- ์ ์ญ ๊ฐ์ฒด์ ๋จ์ ์ฐธ์กฐ
- DOM ์ ๊ฑฐ ํ ๋จ์ JS ์ฐธ์กฐ
- ํด๋ก์ ๋ก ์ธํ ์ฐธ์กฐ ์ ์ง
๋ฐ๋ผ์, ๋ฉ๋ชจ๋ฆฌ์์ ๋ถํ์ํ ๋ฐ์ดํฐ๋ ํด์ ํ ์ ์๋๋ก ๊ด๋ฆฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ฌ๊ธฐ์ 9๋ฒ ์ง๋ฌธ์ ๋ต๋ณํ ์ ์์ต๋๋ค.
9๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ์ด์ด์ง๋์?
๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๊ฐ ํ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ GC(๊ฐ๋น์ง ์ปฌ๋ ์ ) ๋น์ฉ์ ์ฆ๊ฐ์ํค๊ณ , ๊ฒฐ๊ตญ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋น์ฉ์ด ์ปค์ ธ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์์ฃผ ์ค๋จ๋ฉ๋๋ค.
์ด๋ก ์ธํด ๋ ๋๋ง๊ณผ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋์ด ํ์ด์ง ์ฑ๋ฅ ์ ํ์ UI ์ง์ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฉํฐ์ฝ์ด CPU์ ํ๋ก ํธ์๋
CPU๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๋ช ๋ น์ด๋ฅผ ๋ ์ง์คํฐ์ ๋ก๋ํ๊ณ , ์ด๋ฅผ ์คํํฉ๋๋ค.
์ด๋, ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ํ๋ฆ(๋จ์)์ ์ค๋ ๋(Thread)๋ผ๊ณ ํ๋ฉฐ, ์ค๋ ๋๋ PC(Program Counter), ๋ ์ง์คํฐ ์ํ, ์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด๋ค ๋ช ๋ น์ด๋ฅผ ์ด๋ค ์์๋๋ก ์คํ ์ค์ธ๊ฐ๋ฅผ ๋ํ๋ด๋ ์คํ ๋จ์์ ๋๋ค.
์ค๋ ๋ ๊ฐ๋ ์ ๋์ ํ์ฌ CPU์ ๋์๊ณผ์ ์ ๋ค์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค๋ ๋์ PC ํ์ธ
- PC๊ฐ ๊ฐ๋ฆฌํค๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์คํ
- PC๋ฅผ ๋ณ๊ฒฝ
- ๋ค์ ๋ช ๋ น์ด ์คํ
์ฌ๊ธฐ์ ์คํํ ์ค๋ ๋๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ด์์ฒด์ (OS, Operation System)์ด๋ฉฐ, OS๊ฐ ๋ค์ ์คํํ ์ค๋ ๋๋ฅผ ๊ฒฐ์ ํ๊ณ CPU ๋ ์ง์คํฐ์ ๋ก๋ํ๋ฉด CPU๋ ์ด๋ฅผ ์คํํ๋ ํํ๋ก ์งํํฉ๋๋ค.
์ปจํ ์คํธ ์ค์์นญ(Context Switching)
OS๋ ์ํฉ์ ๋ฐ๋ผ, ํ์ฌ CPU๊ฐ ์คํ ์ค์ธ ์ค๋ ๋๋ฅผ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
์ด๋ ๊ธฐ์กด ์ค๋ ๋์ ์คํ ์ํ(PC, ๋ ์ง์คํฐ, ์คํ ํฌ์ธํฐ ๋ฑ)๋ฅผ ์ ์ฅํ๊ณ ์๋ก ์คํํ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ CPU ๋ ์ง์คํฐ์ ๋ณต์ํ๋ ๊ณผ์ ์ด ๋ฐ์ํ๋ฉฐ, ์ด ๊ณผ์ ์ ์ปจํ ์คํธ ์ค์์นญ(Context Switching)์ด๋ผ๊ณ ํฉ๋๋ค.
์ปจํ ์คํธ ์ค์์นญ์ ํตํด ํ๋์ CPU ์ฝ์ด์์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ค ์ ์์ง๋ง,
์ด ๊ณผ์ ์์ ์ํ ์ ์ฅ/๋ณต์์ ๋ฐ๋ฅธ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
ํ๋ก ํธ์๋ ํ๊ฒฝ์์์ ์ปจํ ์คํธ ์ค์์นญ(Context Switching)
์กฐ๊ธ ๋ ์ดํด๋ฅผ ์ฝ๊ฒ ํด๋ณด๊ธฐ ์ํด ํ๋ก ํธ์๋ ํ๊ฒฝ์ ์ ์ฉํด๋ณด๋ฉด, ๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๊ฐ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํฉ๋๋ค.
- JavaScript ์คํ
- DOM ์กฐ์
- ์คํ์ผ ๊ณ์ฐ
- ๋ ์ด์์ ๋ฐ ๋ ๋๋ง
- ํ์ธํ ํธ๋ฆฌ๊ฑฐ
- ์ด๋ฒคํธ ์ฝ๋ฐฑ ์ฒ๋ฆฌ
- ๋ฑ๋ฑ..
๋ง์ฝ ๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋์์ ์ํํ ์ฐ์ฐ์ด ๋ฌด๊ฑฐ์์ง๋ฉด, ํด๋น ์ฐ์ฐ์ด ๋๋ ๋๊น์ง UI ๋ ๋๋ง ์์ ์ด ์คํ๋์ง ๋ชปํฉ๋๋ค.
์ด๋, ์ฌ์ฉ์๋ UI ๋ ๋๋ง์ด ์ด๋ฃจ์ด์ง์ง ์์ ํ๋ฉด์ด ๋ฉ์ถ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฑฐ๋, ํด๋ฆญ, ์คํฌ๋กค ๋ฑ ์ฌ์ฉ์ ์ ๋ ฅ์ด ๋๋ฆฌ๊ฒ ์ ์ฉ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์น ๋ธ๋ผ์ฐ์ ๋ ์์ ์ ๋ฉ์ธ ์ค๋ ๋์ ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ํ์ ์ผ๋ก Web Worker๋ฅผ ํตํด ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ ๋ณ๋์ ์ค๋ ๋์์ ์ํํ๊ณ , ๋ฉ์ธ ์ค๋ ๋์์๋ UI ๋ ๋๋ง๊ณผ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ์์ ์ง์คํ ์ ์๋๋ก ํฉ๋๋ค.
๋ฐ๋ผ์, ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋ธ๋ผ์ฐ์ ๋ ํ๋ฉด ๋ฉ์ถค์ด ์์ด ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ด๋ฐ ๊ถ๊ธ์ฆ์ด ์๊ฒผ์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ค๋ฉด,
๋ธ๋ผ์ฐ์ ์์ CPU์ ์ด์์ฒด์ (OS) ์ญํ ์ ๋๊ฐํ์ง?
์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ปดํจํฐ ์์์ ๋์ํ๋ ๋ฐฉ์์ ์ดํดํ ํ์๊ฐ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์ด์์ฒด์ (OS) ์์์ ํ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก CPU ์ฌ์ฉ์ ์์ฒญํ์ฌ ๋์ํฉ๋๋ค.
๋ํ, ๋ธ๋ผ์ฐ์ ๋ ํญ(Tab)์ด๋ผ๊ณ ํ๋ ํ๋์ ํ๋ก์ธ์ค(Process)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ํ๋ก์ธ์ค ๋ด์ ์ค๋ ๋๋ค(๋ฉ์ธ ์ค๋ ๋, Web Worker ๋ฑ)์ด ๋์ํ๋ ํํ์ ๋๋ค.
๋ฐ๋ผ์, ๋ธ๋ผ์ฐ์ ์์ CPU์ ์ด์์ฒด์ (OS) ์ญํ ์ ๊ธฐ์กด ์ปดํจํฐ์ ์ค์น๋ CPU์ ์ด์์ฒด์ (OS)๊ฐ ์ํํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ํ๋ก์ธ์ค์ ์งํฉ์ผ๋ก, ์ด์์ฒด์ (OS)์ CPU ์ฌ์ฉ์ ์์ฒญํ์ฌ ์ค๋ ๋ ๋์์ ์ํํฉ๋๋ค.
*ํ๋ก์ธ์ค(Process)
- ํ๋ก์ธ์ค(Process)๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ฉฐ, ๋ณด์กฐ ๊ธฐ์ต์ฅ์น์ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ๋๋ ๋ฅ๋์ ์ธ ์์ ๋จ์์ ๋๋ค.
- ํ๋ก์ธ์ค๋ ํ๋ ์ด์์ ์ค๋ ๋๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ์ง ์๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์ ์์์ ํ์ฉํฉ๋๋ค.
๊ทธ๋ผ ๋ธ๋ผ์ฐ์ ๋ ํ๋์ CPU(์ฝ์ด)๋ฅผ ํ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ํํ ๊น์?
๋ฉํฐ์ฝ์ด CPU
CPU ์ฝ์ด 1๊ฐ๋ 1๊ฐ์ ์ค๋ ๋๋ฅผ ๋์์ํฌ ์ ์์ต๋๋ค.
๋ค์ ๋งํด, "CPU ์ฝ์ด === ์์ ์ ์ํํ ์" ๊ณผ ๊ฐ์ ๊ฐ๋ ์ ๋๋ค.
๋ฐ๋ผ์, CPU ์ฝ์ด๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด, ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ฅผ ๋์์ ์์ ํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ฉ์ธ ์ค๋ ๋์ ๋๋ถ์ด Web Worker ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ฐ๋ผ์ ๋ ๊ฐ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋๋ฐ ์์ด ๋ ๊ฐ์ ์ฝ์ด๊ฐ ์์ผ๋ฉด ์ด๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์คํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ด๋ ์ฌ์ฉ์ ์ ์ฅ์์ ๋ถ๋๋ฌ์ด UI๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋ฉ์ธ ์ค๋ ๋์ Web Worker ์ค๋ ๋ ๋ง๊ณ ๋ ๋ ๋๋ง, ๋คํธ์ํฌ, ํ์ด๋จธ, GPU ๋ฑ ๋ค์ํ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ฉฐ, ์์ ์๊ฐํ ๋ด์ฉ๊ณผ ๊ฐ์ด ๋ฉํฐ์ฝ์ด CPU๋ฅผ ํ์ฉํ์ฌ ๋ณด๋ค ๋ถ๋๋ฌ์ด UI๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ด์ ์ด ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก 10, 11, 12, 13๋ฒ ์ง๋ฌธ๋ค์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
10๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
๋ฉํฐ์ฝ์ด CPU๊ฐ ํ๋ก ํธ์๋์ ์ฃผ๋ ์ด์ ์?
๋ฉํฐ์ฝ์ด CPU๋ ์ฌ๋ฌ ์์
์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์ด, ํ๋ก ํธ์๋์์ UI ๋ ๋๋ง๊ณผ ์ฐ์ฐ ์์
์ ๋ถ๋ฆฌํด ์คํํ ์ ์๋ ๊ธฐ๋ฐ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐจ๋จ๋๋ ์ํฉ์ ์ค์ด๊ณ , ์ฌ์ฉ์ ์ธํฐ๋์
๊ณผ ํ๋ฉด ๋ฐ์์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
11๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
์ปจํ ์คํธ ์ค์์นญ์ด๋?
์ปจํ ์คํธ ์ค์์นญ์ CPU๊ฐ ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ ๋ณต์ํ์ฌ ์คํ ๋์์ ์ ํํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋, PC(ํ๋ก๊ทธ๋จ ์นด์ดํฐ), ๋ ์ง์คํฐ ์ํ, ์คํ ํฌ์ธํฐ ๋ฑ์ด ์ ์ฅ/๋ณต์ ๋๋ฉฐ, ์ด ๊ณผ์ ์๋ ์ผ์ ํ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
์ปจํ ์คํธ ์ค์์นญ์ ์ด์ฉํ์ฌ ํ๋์ CPU ์ฝ์ด์์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์คํ๋๋ ๊ฒ์ฒ๋ผ ์คํํ ์ ์์ง๋ง, ์ ํ ๋น์ฉ์ด ์๊ธฐ์ ์ฆ์ ์ค์์นญ์ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
12๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด UI๋ฅผ ๋ฉ์ถ๊ฒํ๋ ์ด์
๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๋ JavaScript ์คํ๊ณผ UI ๋ ๋๋ง์ ํจ๊ป ๋ด๋นํ๋ฉฐ, CPU๋ ํ ์๊ฐ ํ๋์ ์ค๋ ๋๋ง ์คํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ฉ์ธ ์ค๋ ๋์์ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด ์ํ๋๋ฉด, ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐ์ฐ์ ์ ์ ํ์ฌ UI ์์ ์ด ๋๊ธฐ ์ํ๊ฐ ๋์ด ์ฐ์ฐ์ด ๋๋ ๋๊น์ง ๋ ๋๋ง๊ณผ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋์ด ํ๋ฉด์ด ๋ฉ์ถ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
13๋ฒ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ
Web Worker๋ ์ ํ์ํ๊ฐ์?
Web Worker๋ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ ๋ฉ์ธ ์ค๋ ๋์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์ค๋ ๋์์ ์คํํ์ฌ, UI ๋ ๋๋ง๊ณผ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ๊ฐ ์ฐจ๋จ๋์ง ์๋๋ก ํ๊ธฐ์ํด ํ์ํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋ฉํฐ์ฝ์ด CPU ํ๊ฒฝ์์ ์ฐ์ฐ๊ณผ UI๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์๊ณ , ํ๋ฉด ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
๋ค๋ง, Web Worker๋ ๋ฉ์ธ ์ค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ณต์ ํ์ง ์๊ณ , ๋ฉ์ธ์ง ๊ธฐ๋ฐ์ผ๋ก ํต์ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๋ชฉ์ ์ด ๋ช ํํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
์ง๋ฌธ-๋ต๋ณ ์์ฝ
| ์ง๋ฌธ | ๋ต๋ณ |
| CPU์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ํ๋? | CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ ํด์ํ๊ณ ์คํํ๋ ์ฅ์น์ด๋ฉฐ, ์คํ ๊ณผ์ ์์ ํ์ํ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ CPU ๋ด๋ถ์ ๋ ์ง์คํฐ์ ์ ์ฅํ ๋ค ์ฐ์ฐ์ ์ํํฉ๋๋ค. ๋ํ, ๋ฉ๋ชจ๋ฆฌ๋ CPU๊ฐ ์คํํ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋ ์คํ ๊ณต๊ฐ์ ๋๋ค. CPU๊ฐ ์ ์ผํ๊ฒ ์ ๊ทผํ ์ ์๋ ์ ์ฅ๊ณต๊ฐ์ผ๋ก CPU ๋ช ๋ น์ด ์ํ์ ์ง์ํ๊ธฐ ์ํ ๋ชฉ์ ์ ์ ์ฅ๊ณต๊ฐ์ผ๋ก ์ ์์ด ๊บผ์ง๋ฉด ์ฌ๋ผ์ง๋ ํ๋ฐ์ฑ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. |
| ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์คํ๋๋๊ฐ? | ํ๋ก๊ทธ๋จ์ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ๋ช
๋ น์ด์ ์งํฉ์
๋๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์์ ๋ฉ๋ชจ๋ฆฌ๋ก ํ๋ก๊ทธ๋จ์ ๋ก๋ํ ํ, CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ํด์ํ๊ณ ์คํํ๋ฉฐ, ๋ถ๊ธฐ ๋ช ๋ น์ ๋ฐ๋ผ ์คํ ํ๋ฆ์ ์ ์ดํฉ๋๋ค. |
| ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํด๋ณด์ธ์. | CPU์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์๋ ํฐ ์๋ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ๋น์ฉ๊ณผ ๋ฌผ๋ฆฌ์ ํ๊ณ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๋ ์ง์คํฐ๋ ์บ์์, ๊ทธ๋ ์ง ์์ ๋ฐ์ดํฐ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์ฅ์ฅ์น์ ๋๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํตํด ํ๊ท ์ ๊ทผ ์๊ฐ์ ์ค์ด๋๋ก ์ค๊ณ๋์์ต๋๋ค. |
| ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ํ์ํ๊ฐ? | ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM) ์ฌ์ด์ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด, ์์ฃผ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋๋ ๊ณ ์ ๋ฉ๋ชจ๋ฆฌ์
๋๋ค. ์ด๋ฅผ ํตํด CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ์ธํด ๋๊ธฐํ์ง ์๋๋ก ํ์ฌ ์ ์ฒด ์คํ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. (+ ์ถ๊ฐ ๊ฐ๋ฅ) ์บ์ ํํธ๋ CPU๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์บ์์์ ๋ฐ๋ก ์ฐพ์ ๊ฒฝ์ฐ์ด๊ณ , ์บ์ ๋ฏธ์ค๋ ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊น์ง ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์บ์ ํํธ๋ ๋น ๋ฅธ ์คํ์, ์บ์ ๋ฏธ์ค๋ CPU ๋๊ธฐ์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํฉ๋๋ค. |
| ์ง์ญ์ฑ(Locality)์ด๋? | ์ง์ญ์ฑ(Locality)์ด๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ๋ ์ผ์ ํ ํจํด์ ๋ณด์ด๋ ์ฑ์ง๋ก, ์ต๊ทผ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ ์ธ์ ํ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ํน์ฑ์ ์๋ฏธํฉ๋๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ฌํ ์ง์ญ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ ํ๊ท ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ ์ค์ ๋๋ค. |
| ์คํ(Stack)๊ณผ ํ(Heap)์ ์ฐจ์ด๋? | ์คํ์ ํจ์ ํธ์ถ๊ณผ ์คํ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๊ณ , ํ์ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์
๋๋ค. ์คํ์๋ ์ง์ญ ๋ณ์์ ๋ณต๊ท ์ฃผ์๊ฐ ์ ์ฅ๋์ด ํจ์ ์คํ์ด ๋๋๋ฉด ์๋์ผ๋ก ํด์ ๋๊ณ , ํ์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ด ํฌ๊ธฐ์ ์๋ช ์ด ์ ํด์ง์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์ฐธ์กฐ๊ฐ ๋จ์ ์๋ ๋์ ์ ์ง๋ฉ๋๋ค. |
| ์ฝ ์คํ(Call Stack)์ด๋? | ์ฝ ์คํ์ ํ์ฌ ์คํ ์ค์ธ ํจ์๋ค์ ์คํ ์ปจํ
์คํธ๋ฅผ ์คํ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํ๋ ์์ญ์
๋๋ค. ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํ ์ปจํ ์คํธ๊ฐ ์ฝ ์คํ์ ์์ด๊ณ , ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ์ ๊ฑฐ๋๋ฉด์ ์คํ ํ๋ฆ์ด ์ด์ ํจ์๋ก ๋์๊ฐ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์คํ ์์๊ฐ ๊ด๋ฆฌ๋ฉ๋๋ค. |
| ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ์์ ๊ณผ ์ด์ | ์คํ ์ค๋ฒํ๋ก์ฐ๋ ํจ์ ํธ์ถ์ด ๊ณ์ ์์ฌ ์คํ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ ๋ ๋ฐ์ํฉ๋๋ค. ์ฃผ๋ก ์ข ๋ฃ ์กฐ๊ฑด์ด ์๋ ์ฌ๊ท ํธ์ถ์ด๋ ๊ณผ๋ํ๊ฒ ๊น์ ํจ์ ํธ์ถ์ด ์์ธ์ด๋ฉฐ, ์คํ์ ๋น ๋ฅธ ์คํ ํ๋ฆ ๊ด๋ฆฌ๋ฅผ ์ํด ํฌ๊ธฐ๊ฐ ์ ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ํ๊ณ๋ฅผ ๋์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. (+์ถ๊ฐ ๋ด์ฉ) ์คํ์ ์คํ ํ๋ฆ์ ๋น ๋ฅด๊ณ ๋จ์ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ํฌ๊ธฐ๊ฐ ์ ํ๋๋ฉฐ, ํ์ ์คํ ์ค ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ์ฐํ๊ฒ ์ค๊ณ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์คํ ์ค๋ฒํ๋ก์ฐ๋ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฐ๋ฉด, ํ ๋ฌธ์ ๋ ์ ์ง์ ์ธ ์ฑ๋ฅ ์ ํ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. |
| ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ์ด์ด์ง๋์? | ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๊ฐ ํ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ GC(๊ฐ๋น์ง ์ปฌ๋ ์
) ๋น์ฉ์ ์ฆ๊ฐ์ํค๊ณ , ๊ฒฐ๊ตญ ๊ฐ๋น์ง ์ปฌ๋ ์
๋น์ฉ์ด ์ปค์ ธ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์์ฃผ ์ค๋จ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๋ ๋๋ง๊ณผ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋์ด ํ์ด์ง ์ฑ๋ฅ ์ ํ์ UI ์ง์ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. |
| ๋ฉํฐ์ฝ์ด CPU๊ฐ ํ๋ก ํธ์๋์ ์ฃผ๋ ์ด์ ์? | ๋ฉํฐ์ฝ์ด CPU๋ ์ฌ๋ฌ ์์
์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์ด, ํ๋ก ํธ์๋์์ UI ๋ ๋๋ง๊ณผ ์ฐ์ฐ ์์
์ ๋ถ๋ฆฌํด ์คํํ ์ ์๋ ๊ธฐ๋ฐ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐจ๋จ๋๋ ์ํฉ์ ์ค์ด๊ณ , ์ฌ์ฉ์ ์ธํฐ๋์ ๊ณผ ํ๋ฉด ๋ฐ์์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. |
| ์ปจํ ์คํธ ์ค์์นญ์ด๋? | ์ปจํ
์คํธ ์ค์์นญ์ CPU๊ฐ ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ ๋ณต์ํ์ฌ ์คํ ๋์์ ์ ํํ๋ ๊ณผ์ ์
๋๋ค. ์ด๋, PC(ํ๋ก๊ทธ๋จ ์นด์ดํฐ), ๋ ์ง์คํฐ ์ํ, ์คํ ํฌ์ธํฐ ๋ฑ์ด ์ ์ฅ/๋ณต์ ๋๋ฉฐ, ์ด ๊ณผ์ ์๋ ์ผ์ ํ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค. ์ปจํ ์คํธ ์ค์์นญ์ ์ด์ฉํ์ฌ ํ๋์ CPU ์ฝ์ด์์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์คํ๋๋ ๊ฒ์ฒ๋ผ ์คํํ ์ ์์ง๋ง, ์ ํ ๋น์ฉ์ด ์๊ธฐ์ ์ฆ์ ์ค์์นญ์ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. |
| ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด UI๋ฅผ ๋ฉ์ถ๊ฒํ๋ ์ด์ | ๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๋ JavaScript ์คํ๊ณผ UI ๋ ๋๋ง์ ํจ๊ป ๋ด๋นํ๋ฉฐ, CPU๋ ํ ์๊ฐ ํ๋์ ์ค๋ ๋๋ง ์คํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ์ธ ์ค๋ ๋์์ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด ์ํ๋๋ฉด, ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐ์ฐ์ ์ ์ ํ์ฌ UI ์์ ์ด ๋๊ธฐ ์ํ๊ฐ ๋์ด ์ฐ์ฐ์ด ๋๋ ๋๊น์ง ๋ ๋๋ง๊ณผ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋์ด ํ๋ฉด์ด ๋ฉ์ถ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. |
| Web Worker๋ ์ ํ์ํ๊ฐ์? | Web Worker๋ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ ๋ฉ์ธ ์ค๋ ๋์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์ค๋ ๋์์ ์คํํ์ฌ, UI ๋ ๋๋ง๊ณผ ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ๊ฐ ์ฐจ๋จ๋์ง ์๋๋ก ํ๊ธฐ์ํด ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉํฐ์ฝ์ด CPU ํ๊ฒฝ์์ ์ฐ์ฐ๊ณผ UI๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์๊ณ , ํ๋ฉด ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ๋ค๋ง, Web Worker๋ ๋ฉ์ธ ์ค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ณต์ ํ์ง ์๊ณ , ๋ฉ์ธ์ง ๊ธฐ๋ฐ์ผ๋ก ํต์ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๋ชฉ์ ์ด ๋ช ํํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. |
๋๋์
ํ๋ก ํธ์๋๋ ๋ธ๋ผ์ฐ์ , ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ์ง์ ์ ์ผ๋ก ๋ฟ์ ์๋ ์ญํ ์ด์ง๋ง, ๊ทธ๋งํผ ์ปดํจํฐ์ ๋ด๋ถ์ ์ธ ๋ด์ฉ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ์๋ค๊ณ ์์ฐ์ค์ ์๊ฐํ๊ณ ์์ด ์ปดํจํฐ ๊ตฌ์กฐ๋ผ๋ ๋ด์ฉ์ด ํ๋ก ํธ์๋๋ผ๋ ์ง๋ฌด์๋ ์กฐ๊ธ ๋ฉ๊ฒ ๋๊ปด์ง ๊ฒ๋ ์ฌ์ค์ ๋๋ค.
ํ์ง๋ง ์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด, ํ์ฌ ๊ณต๋ถํ๊ณ ์๋ ๋ธ๋ผ์ฐ์ ๋ผ๊ณ ํ๋ ๋ด์ฉ ๋ํ ์ปดํจํฐ๋ผ๊ณ ํ๋ ํ๋์ ๊ตฌ์กฐ์์ ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก ์ปดํจํฐ ๊ตฌ์กฐ์ ์ค์์ฑ์ ๊นจ๋ณ์ ์ ์์์ต๋๋ค.
๋ํ, ์์ฃผ ๋ฃ๋ "JavaScript๋ ์ฑ๊ธ ์ค๋ ๋์ด๋ค.", "๋ธ๋ผ์ฐ์ ์์ ๋ฉํฐ ์ค๋ ๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํด์ ๋น๋๊ธฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค."์ ๊ฐ์ ๊ฐ๋ ๋ค์ ์ง์ ์ ์ผ๋ก ๊ณต๋ถํ ์ ์์ด ์ข์ ๊ฒฝํ์ด ๋์์ต๋๋ค.
