Jieunny์ ๋ธ๋ก๊ทธ
S4) Unit 5. [์ปดํจํฐ ๊ณตํ] ์ด์์ฒด์ & ๋ฌธ์์ด๊ณผ ๊ทธ๋ํฝ & ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ณธ๋ฌธ
S4) Unit 5. [์ปดํจํฐ ๊ณตํ] ์ด์์ฒด์ & ๋ฌธ์์ด๊ณผ ๊ทธ๋ํฝ & ๊ฐ๋น์ง ์ปฌ๋ ์
Jieunny 2023. 3. 27. 16:00๐ฃ ์ด์์ฒด์
๐ญ. ์ด์์ฒด์ ๋?
โ๏ธ ํ๋์จ์ด์๊ฒ ์ผ์ ์ํค๋ ์ฃผ์ฒด
๐ฎ. ์ด์์ฒด์ ์ ๋ชฉ์ ๋ฐ ๊ธฐ๋ฅ
โ๏ธ ๋ชฉ์
โฐ ์ฒ๋ฆฌ๋ฅ๋ ฅ ํฅ์
โฐ ์ฌ์ฉ ๊ฐ๋ฅ๋ ํฅ์
โฐ ์ ๋ขฐ๋ ํฅ์
โฐ ๋ฐํ ์๊ฐ ๋จ์ถ ๋ฑ
โ๏ธ ๊ธฐ๋ฅ
โฐ ํ๋ก์ธ์, ๊ธฐ์ต์ฅ์น, ์ ์ถ๋ ฅ์ฅ์น, ํ์ผ ๋ฐ ์ ๋ณด ๋ฑ์ ์์์ ๊ด๋ฆฌ
โฐ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์์์ ์ค์ผ์ค๋ง ๊ธฐ๋ฅ์ ์ ๊ณต(์ด๋ค ์์์ ๋๊ฐ, ์ธ์ , ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ง๋ฅผ ๊ฒฐ์ )
โฐ ์ฌ์ฉ์์ ์์คํ ๊ฐ์ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
โฐ ์์คํ ์ ๊ฐ์ข ํ๋์จ์ด์ ๋คํธ์ํฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ์ด
๐ฏ. ์ด์์ฒด์ ์ ์์คํ ์์ ๊ด๋ฆฌ
โ๏ธ ์ด์์ฒด์ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด์๊ฒ ์ผ์ ์ํฌ ์ ์๋๋ก ๋๋๋ค.
โฐ ์์ฉ ํ๋ก๊ทธ๋จ : ์ปดํจํฐ๋ฅผ ์ด์ฉํด ๋ค์ํ ์์ ์ ์ํํ๋ค.
โฐ CPU, RAM, ๋์คํฌ ๋ฑ ์์คํ ์์์ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๊ฐ ์ด์์ฒด์ ์ด๋ค.
โ๏ธ ์์ฉ ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ
โฐ ํด์ปค์ ๊ณต๊ฒฉ์ ๋๋นํ๊ธฐ ์ํด ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ถํ์ ๋ํ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
โฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ , ์์คํ ์์์ ์ฌ์ฉํ ์ ์๋๋ก '๊ถํ'๊ณผ '์ฌ์ฉ์'๋ฅผ ๊ด๋ฆฌํ๋ค.
โ๏ธ ์์ฉ ํ๋ก๊ทธ๋จ: ์ด์์ฒด์ ๋ฅผ ํตํด ์ปดํจํฐ์๊ฒ ์ผ์ ์ํค๋ ๊ฒ
โฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ๋ฅผ ํตํด ์ปดํจํฐ์๊ฒ ์ผ์ ์ํค๋ ค๋ฉด, ์ปดํจํฐ๋ฅผ ์กฐ์ํ ์ ์๋ ๊ถํ์ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ถ์ฌ๋ฐ์์ผ ํ๋ฉฐ ๊ถ๋์ ๋ฐ๊ณ ๋๋ฉด ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๋ค.
โฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์ํตํ๊ธฐ ์ํด์๋, ์ด์์ฒด์ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด ์ธํฐํ์ด์ค(API)๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
ใด ์ด๋ฅผ ์ํด ์ด์์ฒด์ ์ฐจ์์์ ๋ค์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ '์์คํ ์ฝ' ์ด๋ผ๊ณ ํ๋ค.
๐ฃ ํ๋ก์ธ์ค
๐ญ. ํ๋ก์ธ์ค๋?
โ๏ธ ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ธ ์ํ๋ก ํน์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฌ๋๊ณ CPU ๊ฐ ํด๋น ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ์ํํ๊ณ ์๋ ์ํ
โฐ ์คํ ์ค์ธ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ 'ํ๋ก์ธ์ค' ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
โฐ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๊ฐ ์คํ => ๋ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ค.
๐ฎ. ํ๋ก์ธ์ค ๊ตฌ์ฑ ์์
1๏ธโฃ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ๊ด๋ฆฌ(Virtual Address Descriptors)
โ๏ธ ํ๋ก์ธ์ค ๋ณ๋ก ๋ ๋ฆฝ๋ ์์ญ์ ๊ฐ์ง๊ฒ ๋๋ ๊ณณ
โฐ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฒฝ์ฐ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๋ฉฐ, ํ๋ก์ธ์ค ๋ณ๋ก ๋ ๋ฆฝ์ ์ธ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์ VAD(Virtual Address Descriptors)๋ผ๋ ๊ด๋ฆฌ ํ ์ด๋ธ์ด ์กด์ฌํ๋ค.
2๏ธโฃ ํธ๋ค ํ ์ด๋ธ(Handle Table)
โ๏ธ ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ชจ๋ ํธ๋ค์ ๋ํ ์ปค๋ ๊ฐ์ฒด ํฌ์ธํฐ ์ ๋ณด๋ฅผ ๋ฐฐ์ด ํํ๋ก ๊ฐ์ง๊ณ ์๋ ๊ณต๊ฐ
โฐ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃํ๊ฒ ๋ ๋ ์ด ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ด ํ๋ก์ธ์์์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ ์ปค๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ๋ฐํํ๋ค.
3๏ธโฃ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
โ๏ธ ํ๋ก์ธ์ค๋ง๋ค ๋ณ๋์ ๊ณ ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
๐ฏ. ํ๋ก์ธ์ค ํน์ง
1๏ธโฃ ์์ ์์ ์ ๋จ์
โฐ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ ์์ ์ ์คํ ์ด๋ฏธ์ง ๋ก๋์ ์คํ์ ํ์ํ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ผํ๋ฉฐ, ์ด๋ ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ๊ตฌ๋ณ๋์ด์ผ ํ๋ค.
โฐ ์ด ๊ณต๊ฐ์ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ๊ณ ์ ํ๋ ํ์ผ, I/O ์ฅ์น๋ค์ ๋ํด์๋ ํ๋ก์ธ์ ๋จ์๋ก ํ ๋น ๋ฐ์ ๊ด๋ฆฌ๋์ด์ผ ํ๋ค.
2๏ธโฃ ๋์คํจ์นญ์ ๋จ์
โฐ ํ๋ก์ธ์ค๋ ํ๋์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ๋ก๋ถํฐ CPU ์ ์์์ ์ผ์ ๊ธฐ๊ฐ ๋์ ํ ๋น ๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๊ฒ์ด๋ฉฐ, ์ด์์ฒด์ ๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ๋๊ฒ ํ๊ธฐ ์ํด์ CPU ์ ์ฌ์ฉ ์๊ฐ์ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ๊ณจ๊ณ ๋ฃจ ๋๋ ์ฃผ์ด์ผ ํ๋ค.
โฐ ํ๋์ ํ๋ก์ธ์ค์์ ์ฌ๋ฌ ๊ฐ์ ๋์คํจ์นญ ๋จ์๊ฐ ์คํ๋ ์ ์๋๋ก ํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฌํ ๋์คํจ์นญ ๋จ์๋ฅผ '์ค๋ ๋' ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๐ฐ. ํ๋ก์ธ์ค ์ํ
โ๏ธ ์คํ(Run) : ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์๋ฅผ ์ฐจ์งํ์ฌ ์๋น์ค๋ฅผ ๋ฐ๊ณ ์๋ ์ํ
โ๏ธ ์ค๋น(Ready) : ์คํ๋ ์ ์๋๋ก ์ค๋น๋๋ ์ํ
โ๏ธ ๋๊ธฐ(Waiting) : CPU ์ ์ฌ์ฉ์ด ์๋๋ผ ์ ์ถ๋ ฅ์ ์ฌ๊ฑด์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
๐ฑ. ํ๋ก์ธ์ VS ํ๋ก์ธ์ค
โ๏ธ ๋์ ์์ฐํ ๋ค๋ฅธ ๊ฐ๋ !
1๏ธโฃ ํ๋ก์ธ์(Processor)
โ๏ธ ํ๋์จ์ด์ ์ธ ์ธก๋ฉด
โฐ ์ปดํจํฐ ๋ด์์ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ํ๋์จ์ด ์ ๋
โฐ ์ค์์ฒ๋ฆฌ์ฅ์น(CPU)๋ฅผ ์๋ฏธํ๋ฉฐ ์ ์ด๋ ํ๋ ์ด์์ ALU์ ๋ ์ง์คํฐ๋ฅผ ๋ด์ฅํ๊ณ ์๋ค.
โ๏ธ ์ํํธ์จ์ด์ ์ธ ์ธก๋ฉด
โฐ ๋ฐ์ดํฐ ํฌ๋งท์ ๋ณํํ๋ ์ญํ ์ ์ํํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์๋ฏธ
โฐ ์๋ํ๋ก์ธ์๋ ์ปดํ์ผ๋ฌ ๋ฑ์ด ์๋ค.
2๏ธโฃ ํ๋ก์ธ์ค(Process)
โฐ ํ๋ก์ธ์ค๋ ํน์ ๋ชฉ์ ์ ์ํํ๊ธฐ ์ํด ๋์ด๋ ์์ ์ ๋ชฉ๋ก์ ์๋ฏธ
โฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ ๋์ด ํ๋ก์ธ์์ ์ํด ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ผ๊ณ ๋ณผ ์ ์๋ค.
๐ฃ ์ค๋ ๋
๐ญ. ์ค๋ ๋๋?
โ๏ธ ๋ช ๋ น์ด๊ฐ CPU ๋ฅผ ํตํด์ ์ํ๋๋ ๊ฐ์ฒด์ ๋จ์
โฐ ํ๋์ ํ๋ก์ธ์ค ๋ด์๋ ๋ฐ๋์ 1๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ค.
โฐ ๊ฐ์ ํ๋ก์ธ์ค์ ์๋ ์์๊ณผ ์ํ๋ฅผ ๊ณต์ ํ๋ค.
ใด ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์๋ ์ค๋ ๋๋ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ ์กด์ฌํ๊ฒ ๋๋ฉฐ ๋์ผํ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
ใด ํ๋์ ์ค๋ ๋๊ฐ ์์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ์ค๋ ๋์ ์ํฅ์ ๋ฏธ์น๋ค.
๐ฎ. ์ค๋ ๋๋ ์ ํ์ํ๊ฐ?
โ๏ธ ์ฌ๋ฌ ๊ฐ์ ์์ ๋จ์๋ก ๊ตฌ์ฑ๋ ํ๋ก๊ทธ๋จ์์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํจ์ด๋ค.
๐ฏ. ์ค๋ ๋์ ๊ตฌ์ฑ์์
1๏ธโฃ ๊ฐ์ CPU : ์ธํฐํ๋ฆฌํฐ, ์ปดํ์ผ๋ฌ์ ์ํด ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ฐ์ ์ฝ๋
2๏ธโฃ ์ํ ์ฝ๋ : Thread Class์ ๊ตฌํ๋์ด ์๋ run() Method ์ฝ๋
3๏ธโฃ ์ฒ๋ฆฌ ๋ฐ์ดํฐ : Thread์์ ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ
๐ฐ. ์ค๋ ๋์ ํน์ง
1๏ธโฃ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์์ด๋ค.
โฐ ํ๋์ ์ค๋ ๋๋ ์์ํด์ ์ข ๋ฃํ ๋๊น์ง ํ๋ฒ์ ํ๋์ฉ ๋ช ๋ น๋ค์ ์ํํ๋ค.
2๏ธโฃ ๊ฐ ์ค๋ ๋๋ง๋ค call stack์ด ์กด์ฌ(call stack: ์คํ ์ค์ธ ์๋ธ๋ฃจํด์ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ)ํ๋ฉฐ, ๋๋จธ์ง Code, Data, Heap ์์ญ์ ์ค๋ ๋ ๋ผ๋ฆฌ ๊ณต์ ํ๋ค.
โฐ ๋ฐ๋๋ก ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
3๏ธโฃ ์ค๋ ๋๋ ๋ค๋ฅธ ์ค๋ ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค.
โฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋์๋๋ ๊ฒฝ์ฐ, ๋ ๊ฐ ์ด์์ ์ค๋ ๋์ ์คํ ๋ฐ ์ข ๋ฃ์์๋ ์์ธกํ ์ ์๋ค.
๐ฃ ์ฑ๊ธ ์ค๋ ๋
๐ญ. ์ฑ๊ธ ์ค๋ ๋๋?
โ๏ธ ํ๋ก์ธ์ค๊ฐ ๋จ์ผ ์ค๋ ๋๋ก ๋์ํ๋ ๋ฐฉ์์ผ๋ก, ์ผ๋ จ์ ์ฒ๋ฆฌ๋ฅผ ๋จ์ผ ์ค๋ ๋๋ง์ผ๋ก ์ง๋ ฌ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
โฐ ํ๋์ ๋ ์ง์คํฐ, ์คํ์ผ๋ก ํํํ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฑ๊ธ ์ค๋ ๋ ์ธ์ด์ด๋ค.
๐ฎ. ์ฑ๊ธ ์ค๋ ๋์ ์ฅ์
1๏ธโฃ ์์ ์ ๊ทผ์ ๋ํ ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
โฐ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์์์ ๊ณต์ ํ ๊ฒฝ์ฐ์๋ ์ค๋ ๋๋ค์ด ๋์์ ๊ฐ์ ์์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ์ดํด์ค์ผ ํ๋ค.
2๏ธโฃ ์์ ์ ๊ทผ์ ๋ํ ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ฏ๋ก ๋ฌธ๋งฅ ๊ตํ(context switch) ์์ ๋ํ ์๊ตฌํ์ง ์๋๋ค.
โฐ ๋ฌธ๋งฅ ๊ตํ : ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ํ๋์ ํ๋ก์ธ์๋ฅผ ๊ณต์ ํ ๋ ๋ฐ์ํ๋ ์์ ์ผ๋ก ๋ง์ ๋น์ฉ์ ํ์๋ก ํ๋ค.
3๏ธโฃ ํ๋ก๊ทธ๋๋ฐ ๋์ด๋๊ฐ ์ฝ๊ณ , CPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋ค.
๐ฏ. ์ฑ๊ธ ์ค๋ ๋์ ๋จ์
1๏ธโฃ ์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ค.
โฐ ์ฑ๊ธ ์ค๋ ๋๋ ํ๋์ ๋ฌผ๋ฆฌ์ ์ฝ์ด๋ฐ์ ์ฌ์ฉํ์ง ๋ชปํด ๋ฉํฐ ์ฝ์ด ๋จธ์ ์์ CPU ์ฌ์ฉ์ ์ต์ ํํ ์ ์๋ค.
2๏ธโฃ ์ฐ์ฐ๋์ด ๋ง์ ์์ ์ ํ๋ ๊ฒฝ์ฐ, ๊ทธ ์์ ์ด ์๋ฃ๋์ด์ผ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋ค.
3๏ธโฃ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๋ ๊ฒฝ์ฐ ๋ฉ์ถ๊ฒ ๋๋ค.
๐ฃ ๋ฉํฐ ์ค๋ ๋
๐ญ. ๋ฉํฐ ์ค๋ ๋๋?
โ๏ธ ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋ ์ด์์ ์ค๋ ๋๊ฐ ๋์์ ์์ ์ ์ํํ๋ ๊ฒ
โฐ ๋ฉํฐ ํ๋ก์ธ์ค : ์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์ํํ๋ ๊ฒ
๐ฎ. ๋ฉํฐ ์ค๋ ๋ฉ์ ์ฅ์
1๏ธโฃ ์์ ์ ๋ถ๋ฆฌํด์ ์ํํ๋ฏ๋ก ์ค์๊ฐ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ตํ ์ ์๋ค.
2๏ธโฃ ํ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์์์ ์ํํ ์ ์์ผ๋ฏ๋ก ํจ์จ์ ์ด๋ค.
๐ฏ. ๋ฉํฐ ์ค๋ ๋ฉ์ ๋ฌธ์ ์
1๏ธโฃ ์ฃผ์ ๊น์ ์ค๊ณ๊ฐ ํ์ํ๋ฉฐ, ๋๋ฒ๊น ์ด ๊น๋ค๋กญ๋ค.
2๏ธโฃ ๋จ์ผ ํ๋ก์ธ์ค ์์คํ ์ ๊ฒฝ์ฐ ํจ๊ณผ๋ฅผ ๊ธฐ๋ํ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ์ค๋ ๋๋ฅผ ์ ์ดํ ์ ์๋ค.
โฐ ํ๋ก์ธ์ค ๋ฐ์์ ์ค๋ ๋ ๊ฐ๊ฐ์ ์ ์ดํ ์ ์๋ค.
3๏ธโฃ ์์ ๊ณต์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
โฐ ํ๋์ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ์ํฅ์ ๋ฐ๊ฒ ๋๋ค.
4๏ธโฃ ๋ฌธ๋งฅ ๊ตํ ์์ ์ด ํ์ํ๋ค.
โฐ ๋ฌธ๋งฅ ๊ตํ : CPU์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์๊ฐ๋ฉด์ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ณผ์
ใด ๋ค๋ฅธ ํ์คํฌ(ํ๋ก์ธ์ค, ์ค๋ ๋)๊ฐ ์์ํ ์ ์๋๋ก ์ด๋ฏธ ์คํ ์ค์ธ ํ์คํฌ(ํ๋ก์ธ์ค, ์ค๋ ๋)๋ฅผ ๋ฉ์ถ๋ ๊ฒ
๐ฐ. ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ์ฐจ์ด
1๏ธโฃ Concurrency(๋์์ฑ, ๋ณํ์ฑ) : ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์๋ถํ ๋ฐฉ์์ผ๋ก ๋์์ ์ํ๋๋ ๊ฒ์ฒ๋ผ ์ฐฉ๊ฐ์ ๋ถ๋ฌ์ผ์ผํจ๋ค.
โฐ ์๋ถํ : ์ด์์ฒด์ (๋๋ ๊ฐ์ ๋จธ์ )๋ ๊ฐ ์ค๋ ๋๋ฅผ ์๊ฐ์ ๋ฐ๋ผ ๋ถํ ํ์ฌ, ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์ผ์ ์๊ฐ๋ง๋ค ๋์๊ฐ๋ฉด์ ์คํ๋๋๋ก ํ๋ค.
2๏ธโฃ Parallelism(๋ณ๋ ฌ์ฑ) : ๋ฉํฐ ์ฝ์ด ํ๊ฒฝ์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์ค์ ๋ก ๋์์ ์ํ๋๋ค.
๐ฃ ๋ฌธ์์ด
๐ญ. ์ ๋์ฝ๋๋?
โ๏ธ ์ ๋์ฝ๋ ํํ(Unicode Consortium)๊ฐ ์ ์ ํ๋ ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ปดํจํฐ์์ ์ผ๊ด๋๊ฒ ํํํ๊ณ ๋ค๋ฃฐ ์ ์๋๋ก ์ค๊ณ๋ ์ฐ์ ํ์ค
โฐ ISO 10646 ๋ฌธ์ ์งํฉ, ๋ฌธ์ ์ธ์ฝ๋ฉ, ๋ฌธ์ ์ ๋ณด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฌธ์๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ ํฌํจํ๊ณ ์๋ค.
โฐ ์ ํฐ์ฝ๋๊ฐ ์๋ ์์ ์๋ ๊ฐ์ ํ๊ธ์ด ์ ์ธ ํ ์คํธ ํ์ผ์ด๋ผ๋ ํํํ๋ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ ์ด๋ค ํ์ผ์ด ์ง์ํ์ง ์๋ ๋ค๋ฅธ ์ธ์ฝ๋ฉ ํ์์ผ๋ก ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ํ์ผ์ ์ ๋๋ก ๋ถ๋ฌ์ฌ ์ ์์๋ค.
โฐ 'ํ์กดํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ๋ชจ๋ ์ ๋์ฝ๋๋ก ๊ต์ฒดํ๋ ๊ฒ'์ด ์ ๋์ฝ๋์ ๋ชฉ์ ์ด๋ค.
๐ฎ. ASCII ๋ฌธ์๋?
โ๏ธ ์๋ฌธ ์ํ๋ฒณ์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๋ฌธ์ ์ธ์ฝ๋ฉ์ผ๋ก 7 ๋นํธ๋ก ๋ชจ๋ ์์ด ์ํ๋ฒณ์ ํํํ ์ ์๋ค.
โฐ 52๊ฐ์ ์๋ฌธ ์ํ๋ฒณ ๋์๋ฌธ์์, 10๊ฐ์ ์ซ์, 32๊ฐ์ ํน์ ๋ฌธ์, ํ๋์ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ํฌํจํ๋ค.
๐ฏ. UTF-8๊ณผ UTF-16์ ์ฐจ์ด์ ์?
โ๏ธ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์ฐจ์ด๋ฅผ ์๋ฏธํ๋ค.
โฐ UTF- ๋ค์ ๋์ค๋ ์ซ์๋ฅผ ๋นํธ(bit) ์ด๋ค.
1๏ธโฃ UTF-8 : ๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ
โ๏ธ ์ ๋์ฝ๋ ํ ๋ฌธ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด 1 byte(= 8 bits)์์ 4 bytes๊น์ง ์ฌ์ฉํ๋ค.
โฐ ๋ฐ์ดํธ ์์๋ฅผ ๋ฐ์ง์ง ์๊ณ ์์๊ฐ ์ ํด์ ธ ์๋ค.
let encoder = new TextEncoder(); // ๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์ 'utf-8'
encoder.encode('์ฝ') // Uint8Array(3) [236, 189, 148]
(236).toString(2) // "11101100"
(189).toString(2) // "10111101"
(148).toString(2) // "10010100"
encoder.encode('b') // Uint8Array [98]
(98).toString(2) // "1100010"
โฐ ์ฌ์ฉ๋ ๋ฌธ์์ ๋ฐ๋ผ ๋ ์์ ํฌ๊ธฐ์ ๋ฌธ์์ด์ ํํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๋ ํ ์คํธ๋ ์ฃผ๋ก UTF-8๋ก ์ธ์ฝ๋ฉ๋๋ค.
โฐ ASCII ์ฝ๋์ ๊ฒฝ์ฐ 1 byte, ํฌ๊ฒ ์์ด ์ธ ๊ธ์๋ 2byte, 3byte, ๋ณด์กฐ ๊ธ์๋ 4byte๋ฅผ ์ฐจ์งํ๋ฉฐ, ์ด๋ชจ์ง๋ ๋ณด์กฐ ๊ธ์์ ํด๋นํ๊ธฐ ๋๋ฌธ์ 4byte๊ฐ ํ์ํ๋ค.
2๏ธโฃ UTF-16 : ์ฝ๋ ๊ทธ๋๋ก ๋ฐ์ดํธ๋ก ํํ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ์ดํธ ์์๊ฐ ๋ค์ํ๋ค.
โ๏ธ ์ ๋์ฝ๋ ์ฝ๋ ๋๋ถ๋ถ(U+0000๋ถํฐ U+FFFF; BMP) ์ 16 bits๋ก ํํํ๋ค.
โฐ ๋๋ถ๋ถ์ ์ํ์ง ์๋ ๊ธฐํ ๋ฌธ์๋ 32 bit(4 bytes)๋ก ํํํ๋ฏ๋ก UTF-16๋ ๊ฐ๋ณ ๊ธธ์ด๋ผ๊ณ ํ ์ ์์ผ๋, ๋๋ถ๋ถ์ 2 ๋ฐ์ดํธ๋ก ํํํ๋ค.
โฐ ์ด์ง๋ฒ์ผ๋ก ํํ๋ ๋ฌธ์๋ฅผ 16 bits(2 bytes)๋ก ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํธ ์์(์๋์ธ)์ ๋ฐ๋ผ UTF-16์ ์ข ๋ฅ๋ ๋ฌ๋ผ์ง๋ค.
๐ฃ ๊ทธ๋ํฝ
๐ญ. ๋นํธ๋งต
โ๏ธ ์น ์์์ ๋์งํธ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๋ฐ์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท ํ์
โฐ ์ผ๋ฐ์ ์ผ๋ก๋ ๋์คํฐ ๊ทธ๋ํฝ(์ ๋ฐฉ์)์ด๋ผ๊ณ ํ๋ฉฐ, ์ด๋ฏธ์ง์ ๊ฐ ์ ๋ค์ ๊ฒฉ์ํ์ ํฝ์ ๋จ์๋ก ๊ตฌ์ฑ๋๋ค.
โฐ ํ ์ง์ญ์ ์ฐจ์งํ๋ ์ ์ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๊ฐ๋๋ค.
โฐ ๋นํธ๋งต์ ์ฌ๊ฐ์ ํฝ์ ํํ๋ก ๋ชจ์ฌ ์๊ธฐ ๋๋ฌธ์ ํ๋๋ฅผ ํ๋ฉด ‘๊ณ๋จํ์’ ๋๋ ‘๊นจ์ง ํ์’์ด ๋ฐ์ํ๋ฉฐ, ๊ฒฝ๊ณ๊ฐ ๋๋ ทํ์ง ์๋ค.
โฐ ํฝ์ ํ๋ ๋น ๋ชจ๋ ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ์ปค์ง์๋ก ์ฉ๋ ๋ํ ๋ฌด๊ฑฐ์์ง๋ค.
๐ฎ. ๋ฒกํฐ
โ๏ธ ์ด๋ฏธ์ง๋ฅผ ์ํ์ ์ธ ๊ณต์์ผ๋ก ํํํ ๊ฒ
โฐ ์ํ์ ์๋ฆฌ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋นํธ๋งต๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฌด๋ฆฌ ํ๋๋ฅผ ํด๋ ‘๊ณ๋จํ์’ ๋๋ ‘๊นจ์ง ํ์’์ด ๋ฐ์ํ์ง ์๋๋ค.
โฐ ๋นํธ๋งต์ ๋นํด ์ปดํจํฐ์๊ฒ ๋ถ๋ด์ ๊ฐํ๋ ๋ฐฉ์์ด๋ฏ๋ก ์ฃผ๋ก ๋ํ, ๊ธ์ ๋ฑ์ ๊ทธ๋ฆฌ๋ ์์ ์ ์ฌ์ฉ๋๋ค.
โฐ ์ํ์ ์ธ ์ฐ์ฐ์ผ๋ก ๋ง๋ค์ด์ง ์ด๋ฏธ์ง์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ด์ฆ๋ฅผ ํค์๋ ์ฉ๋์๋ ๋ณํ๊ฐ ์๋ค.
๐ฃ ๊ฐ๋น์ง ์ปฌ๋ ์
๐ญ. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋?
โ๏ธ ํ๋ก๊ทธ๋จ์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ๋ ๊ฒ
โฐ JavaScript๋ ๊ณ ์์ค ์ธ์ด๋ก์, ๊ฐ์ฒด๊ฐ ์์ฑ๋์์ ๋ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ํ์ํ์ง ์๋ค๋ฉด ์๋์ผ๋ก ํด์ ํ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ๋ด์ฅ๋์ด ์๋ค.
๐ฎ. ๋ฉ๋ชจ๋ฆฌ ์์กด์ฃผ๊ธฐ
1๏ธโฃ ํ์ํ ๋ ๊ฐ๋ฐ์๊ฐ ํ ๋นํ๋ค.
2๏ธโฃ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. (Read and Write)
โฐ ๊ฐ๋ฐ์๊ฐ ๋ณ์๋ฅผ ์ ์ธํด ๊ฐ์ ํ ๋นํ์ฌ ์ฌ์ฉํ๋ ๋ถ๋ถ
3๏ธโฃ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ด์ ํ์ํ์ง ์์ผ๋ฉด ํด์ ํ๋ค.
โฐ JavaScript์ ๊ฐ์ ๊ณ ์์ค ์ธ์ด์์๋ ์๋ฌต์ ์ผ๋ก ์๋ํ๋ค.
๐ฏ. ๋ฉ๋ชจ๋ฆฌ ํ ๋น
โ๏ธ ํ๋ก๊ทธ๋๋จธ ๋์ , ๊ฐ์ ์ ์ธํ ๋ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ค๋ค.
let arr = [100, 200, 300, 400]
โฐ JavaScript๊ฐ ๋ฐฐ์ด๊ณผ ๋ฐฐ์ด์ ๋ด๊ธด ๊ฐ๋ค์ ์ํ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ํ ๋น์ ์์์ ์งํํ๋ค.
๐ฐ. ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ(๊ฐ ์ฌ์ฉ)
โ๏ธ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ์๋ฏธ
โฐ ๋ณ์๋ ๊ฐ์ฒด ์์ฑ์ ๊ฐ์ ์ฝ๊ณ ์ฐ๊ฑฐ๋, ํจ์ ํธ์ถ ์์ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ์ํํ๋ ๋ฐฉ์์ผ๋ก ์ผ์ด๋๋ค.
๐ฑ. ๋ฉ๋ชจ๋ฆฌ ํด์
โ๏ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ชฉ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ถ์ ํ๊ณ , ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ๋์ด์ ํ์ํ์ง ์๊ฒ ๋์๋์ง๋ฅผ “์ค์ค๋ก” ํ๋จํ์ฌ ํ์ํ์ง ์๋ค๊ณ ํ๋จ์ด ๋๋ค๋ฉด ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.
โฐ ์ธ์ด ์ค์ค๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ ํ ํ์ํ์ง ํ์ํ์ง ์์์ง ํ๋จํ๋ ๊ฒ์ ๋น๊ฒฐ์ ์ ์ธ ์์ญ์ด๋ฏ๋ก ๋ด์ฅ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ค์ ์ ํ์ ์ธ ํด๊ฒฐ์ฑ ์ ๊ตฌํํ๋ค.
๐ฒ. ๋ํ์ ์ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฐฉ๋ฒ
โ๏ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ์ด ์์กดํ๊ณ ์๋ ๊ฐ๋ ์ '์ฐธ์กฐ' ์ด๋ค.
โฐ ์ฐธ์กฐ : ๋ช ์์ ์ด๋ , ์๋ฌต์ ์ด๋ ๊ด๊ณ์์ด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ด์ ์์ ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์๋ค๋ฉด ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค๊ณ ๋งํ๋ค.
โฐ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ๋ํด, ๊ฐ์ฒด๋ ํ์์ ๊ฐ๋ ์ผ๋ก ์ผ๋ฐ์ ์ธ JavaScript ๊ฐ์ฒด๋ฅผ ์๋ฏธํ์ง๋ง ๊ด์์ ๊ฐ๋ ์ผ๋ก ํจ์ ์ค์ฝํ(function scope)๋ ๊ธ๋ก๋ฒ ๋ ์์ปฌ ์ค์ฝํ(global lexical scope)๊น์ง๋ ํฌํจํ๋ค.
1๏ธโฃ ๋ ํผ๋ฐ์ค ์นด์ดํ (์ฐธ์กฐ ํ์ ๊ณ์ฐ)
โ๏ธ ํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์์ ์๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฅ ๋จ์ํ ํํ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ
โฐ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์๋ ์ฒ์์๋ ํน์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด ๋ ํผ๋ฐ์ค๊ฐ ํ๋๋ฟ์ด์ง๋ง, ๋ณ์์ ๋ ํผ๋ฐ์ค๊ฐ ๋ณต์ฌ๋ ๋๋ง๋ค ๋ ํผ๋ฐ์ค ์นด์ดํธ๊ฐ ๋์ด๋๊ณ , ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๋ณ์์ ๊ฐ์ด ๋ฐ๋๊ฑฐ๋, ๋ณ์ ์ค์ฝํ๋ฅผ ๋ฒ์ด๋๋ฉด ๋ ํผ๋ฐ์ค ์นด์ดํธ๋ ์ค์ด๋ ๋ค.
โฐ ๋ ํผ๋ฐ์ค ์นด์ดํธ๊ฐ 0์ด ๋๋ฉด, ๊ทธ ๊ฐ์ฒด์ ๊ด๋ จํ ๋ฉ๋ชจ๋ฆฌ๋ ๋น์ธ ์ ์๋ค => ๋ ํผ๋ฐ์ค ์นด์ดํธ๊ฐ 0์ด ๋๋ค๋ ๋ง์ ์๋ฌด๋ ๊ทธ ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ ์๋ฏธ
โฐ ์ํ ์ฐธ์กฐ๋ก ์ธํ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
function reference() {
var obj1 = {};
var obj2 = {};
obj1.p = obj2;
obj2.p = obj1;
}
reference();
// ๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ์๋ก๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ํํ์ด๊ธฐ ๋๋ฌธ์ ์ํ ์ฐธ์กฐ๊ฐ ๋ฐ์
// ์ด ๊ฐ์ฒด๋ค์ ํจ์ ํธ์ถ ๋ค์๋ ์ค์ฝํ๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ฏ๋ก ์ค์ง์ ์ผ๋ก ์ธ๋ชจ๊ฐ ์๊ฒ ๋๋ค.
// ์ด๋ค์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐํ๋ ์ ์์ง๋ง, ๋ ํผ๋ฐ์ค ์นด์ดํ
์๊ณ ๋ฆฌ์ฆ์์๋ ๋ ๊ฐ์ฒด๊ฐ ์ ์ด๋ ํ ๋ฒ์ ์ฐธ์กฐํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ ๋ ๋ค ๊ฐ๋น์ง์ปฌ๋ ์
์ด ๋ ์ ์๋ค.
2๏ธโฃ ํธ๋ ์ด์ฑ
โ๏ธ ํ ๊ฐ์ฒด์ flag๋ฅผ ๋๊ณ , ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฌ์ดํด๋ง๋ค flag์ ํ์ ํ ์ญ์ ํ๋ mark and sweep ๋ฐฉ๋ฒ
โฐ ๊ฐ์ฒด์ in-use flag๋ฅผ ๋๊ณ , ์ฌ์ดํด๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ถ์ ํด์ ์ฌ์ฉ ์ค์ธ์ง ์๋์ง๋ฅผ ํ์(mark) ํ๋ค.
โฐ ๊ทธ ํ ํ์๋์ง ์์ ๊ฐ์ฒด๋ฅผ ์ญ์ (sweep)ํ๋ ๋จ๊ณ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.
โฐ mark and sweep ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฒด๊ฐ ํ์ํ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ํด๋น ๊ฐ์ฒด์ ๋ฟ์ ์ ์๋์ง (reachable)์ ํ๋จํ ํ 3๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
ใด 1. ๋ฃจํธ(Roots): ์ผ๋ฐ์ ์ผ๋ก ๋ฃจํธ๋ ์ฝ๋์์ ์ฐธ์กฐ๋๋ ์ ์ญ ๋ณ์๋ก, ๊ฐ๋น์ง์ปฌ๋ ํฐ๋ ๋ชจ๋ ๋ฃจํธ์ ์์ ํ ๋ชฉ๋ก์ ๋ง๋ ๋ค.
ใด 2. ๋ชจ๋ ๋ฃจํธ์ ๊ทธ ์์๋ค์ ๊ฒ์ฌํด์ ํ์ฑํ ์ฌ๋ถ๋ฅผ ํ์ํ๋ค. (ํ์ฑ์ํ์ด๋ฉด ๊ฐ๋น์ง๊ฐ ์๋, ๋ฃจํธ๊ฐ ๋ฟ์ ์ ์๋ ๊ฒ๋ค์ ๊ฐ๋น์ง๋ก ํ์๋จ)
ใด 3. ๊ฐ๋น์ง์ปฌ๋ ํฐ๋ ํ์ฑ์ผ๋ก ํ์๋์ง ์์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ OS์ ๋ฐํํ๋ค.
๐ณ. ๋ฉ๋ชจ๋ฆฌ ๋์
โ๏ธ Garbage collected ์ธ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๋์์ ์ฃผ์ ์์ธ์ '์์์น ๋ชปํ ์ฐธ์กฐ'
โฐ ์์์น ๋ชปํ ์ฐธ์กฐ : ๊ฐ๋ฐ์๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ ์๊ฐํ์ง๋ง, ์ด๋ ํ ์ด์ ๋ก ํ์ฑํ ์ํ์ธ ๋ฃจํธ ํธ๋ฆฌ ์์ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐ๋ค
1๏ธโฃ ์ฐ๋ฐ์ ์ผ๋ก ์์ฑ๋ ์ ์ญ๋ณ์
2๏ธโฃ DOM ์ธ๋ถ์์์ ์ฐธ์กฐ
3๏ธโฃ ํด๋ก์ ์ ์๋ชป๋ ์ฌ์ฉ
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S4) Unit 7. [Testing] TDD (0) | 2023.03.29 |
---|---|
S4) Unit 6. [API] GraphQL (0) | 2023.03.28 |
S4) Unit 5. [์ปดํจํฐ ๊ณตํ] ์ปดํจํฐ ๊ตฌ์กฐ (2) | 2023.03.27 |
S4) Unit 4. [React] React์ ๊ธฐ๋ฅ (0) | 2023.03.23 |
S4) Unit 4. [React] React Hooks (0) | 2023.03.23 |