Life/Study (54) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์ด์์ฒด์ ] ํ์ด์ง ๊ธฐ๋ฒ(์ธ๋ถ ๋จํธํ, ๋ด๋ถ ๋จํธํ) ๊ธฐ์ด ๊ฐ๋ /๋ป ์ด์์ฒด์ ์ฃผ๊ธฐ์ต์ฅ์น ๊ด๋ฆฌ ๊ธฐ๋ฒ์ ์ดํด: ํ์ด์ง(Paging) ๊ธฐ๋ฒ ์ฌ์ธต ๋ถ์ ์ปดํจํฐ์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ๋ฐ๋์ ์ฃผ๊ธฐ์ต์ฅ์น(Main Memory, RAM)์ ์ ์ฌ๋์ด์ผ ํ๋ค. ๊ณผ๊ฑฐ ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ์ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํต์งธ๋ก ํ ๋นํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ์คํ ์๊ฐ์ด ์ง๋ ์๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณณ๊ณณ์ ์์ ๋น ๊ณต๊ฐ๋ค์ด ์๊ฒจ๋ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ฌ์ฉ ๋ถ๊ฐ๋ฅํด์ง๋ ์น๋ช ์ ์ธ ๋ฌธ์ (์ธ๋ถ ๋จํธํ)๋ฅผ ๋ณ์๋ค. ํ์ด์ง ๊ธฐ๋ฒ(Paging)์ ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋์๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น์ ํฌ๊ธฐ๋ฅผ ๋ฐ์ด๋๋ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๊ฒ ํ๋ ๊ฐ์ ๊ธฐ์ต์ฅ์น(Virtual Memory)์ ๊ธฐ๋ฐ์ ๋ค์ง๊ธฐ ์ํด ๋ฑ์ฅํ ํ๊ธฐ์ ์ธ ์ฃผ๊ธฐ์ต์ฅ์น ๊ด๋ฆฌ ๊ธฐ๋ฒ์ด๋ค.1. ํ์ด์ง ๊ธฐ๋ฒ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์๋ ์๋ฆฌํ์ด์ง ๊ธฐ๋ฒ์.. [์๋ฃ๊ตฌ์กฐ] ํ (Heap) ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋, ์ด๋ค ๋ฐ์ดํฐ๋ "์ง๊ธ ๋น์ฅ, ๊ฐ์ฅ ๋จผ์ " ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ์ค์์ฑ์ ๊ฐ์ง๋ค(๋ง์น ์์คํ ์ CPU ์ค์ผ์ค๋ฌ์ฒ๋ผ). ์ด๋ฌํ ์ฐ์ ์์(Priority) ๊ฐ๋ ์ ์๋ฃ ๊ตฌ์กฐ๋ก ๊ตฌํํ ๊ฒ ๋ฐ๋ก ์ฐ์ ์์ ํ(Priority Queue)๊ณ , ์ด ํ๋ฅผ ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๊ตฌํํ๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ ํ(Heap) ์ด๋ค. ํ์ ๋จ์ํ ๋ฐ์ดํฐ ๋ณด๊ดํจ์ด ์๋๋ผ, ํญ์ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋งจ ์์ ๋ฐฐ์นํ๋ '์ ๋ ฌ๋ ๋๋ฏธ'์ ์ญํ ์ ํ๋ค. ํ(Heap)์ ํ๊ธ๋ก "๋๋ฏธ" ๋๋ "์์๋์ ๊ฒ"์ ์๋ฏธํ๋ค. ์ค์ ๋ก ํ์ ๋์ ์๋ฆฌ๋ฅผ ์๊ฐํด๋ณด๋ฉด, ๋ง์น ํธ์์ ์ ์ ํต๊ธฐํ์ด ์๋ฐํ ์ํ์ ๊ฐ์ฅ ์์ ์ง์ดํด๋์ ์ง์ด๋์ ๊ฐ๋ค. ์ด๋ ๊ฒ ํญ์ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ(์ต๋๊ฐ ๋๋ ์ต์๊ฐ)๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ํน์ฑ ๋๋ฌธ์.. [์๋ฃ๊ตฌ์กฐ] ์ค๋ ๋ ํธ๋ฆฌ(Threaded Tree) ๊ธฐ์กด์ ์ด์ง ํธ๋ฆฌ๋ฅผ ์ํํ ๋๋ ๋ฐฉ๋ฌธํ์ง ์๊ณ ์ง๋์ณ์จ ๋ถ๋ชจ ๋ ธ๋๋ค์ ๊ธฐ์ตํ๊ธฐ ์ํด ์คํ(Stack)์ด๋ผ๋ ๋ณ๋์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ํ์ง๋ง ์คํ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํด์ผ ํ๊ณ , ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด ์ค๋ ๋ ํธ๋ฆฌ(Threaded Binary Tree)๋ค. ์ค๋ ๋ ํธ๋ฆฌ๋ "๋ค์์ ์ด๋๋ก ๊ฐ์ผ ํ๋์ง"๋ฅผ ์๋ ค์ฃผ๋ ์ผ์ข ์ ๋ค๋น๊ฒ์ด์ ํ์งํ์ธ '์ค๋ ๋(Thread, ์ค)'๋ฅผ ํธ๋ฆฌ ๋ด๋ถ์ ์ง์ ์ฌ์ด๋์ ๊ตฌ์กฐ๋ค. ์ด๋ฅผ ํตํด ์คํ ์์ด๋ ๋ฌผ ํ๋ฅด๋ฏ ์์ฐ์ค๋ฝ๊ฒ ํธ๋ฆฌ๋ฅผ ์ํํ ์ ์๋ค. ์ด ์ค๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ํ์ฉํ๋๋์ ๋ฐ๋ผ ๊ทธ ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ 'ํฌ์ธํฐ ํ๋ .. [์๋ฃ๊ตฌ์กฐ] B Tree, B+, B* ํธ๋ฆฌ ๋น๊ต & ์ฐจ์ด์ ๊ธฐ์กด์ ์ด์ง ํธ๋ฆฌ(Binary Tree)๋ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ํค๋ง ๋ฉ๋๊ฐ์ด ์ปค์ง๋ ์ญ๊ณผ ์ฝฉ๋๋ฌด์ ์ฝฉ๋๋ฌด์ ๊ฐ์ ๋ถ์์ ํ๋ค. ํธ๋ฆฌ์ ๋์ด๊ฐ ๋๋ฌด ๋์์ง๋ค ๋ณด๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด ํ๋๋์คํฌ๊ฐ ์์์ด ๋ง์ ์ธต์ ์ค๋ฅด๋ด๋ ค์ผ ํ๊ณ ๊ณผ๋ถํ๋ก ์ด์ด์ง๊ฒ ๋๋ค. ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ๋ฑ์ฅํ B ๊ณ์ด ํธ๋ฆฌ๋ ๋ ํจ์จ์ ์ธ ์์ผ๋ก ๋ฑ๋ฑํ๊ณ ์ธต์๋ ๋ฎ์ ๋ ๋ธ๋ณด ํธ๋ฆฌ๋ก ๊ฐ์ข ํ๊ฒ ๋๋ค. ๋ง์น ์ง์ง์ ์ทจ์ฝํ ๊ณ ์ธต ์ํํธ์์ ํ ์ธต์ ๋ฐฉ์ด ๋ง๊ณ ๋์ ์ ์ธต ๊ณ ๊ธ ์ ํ์ผ๋ก ์ด์ฌ๋ฅผ ํ ๊ฒ๊ณผ ๊ฐ๋ค. ์ธต์๋ฅผ ํ๊ธฐ์ ์ผ๋ก ๋ฎ์ถฐ(Low Depth) ์๋ฆฌ๋ฒ ์ดํฐ(I/O)๋ฅผ ํ๋ ํ์๊น์ง ์ค์ธ ์์กดํ ์๋ฃ๊ตฌ์กฐ๋ค. ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ B-ํธ๋ฆฌ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ํ๋ฑํ ๋ฐ์ดํฐ ๋ฏผ์ฃผ์ฃผ์๋ฅผ ํ๋ฐฉํ๋ค. ๋ฐ์ดํฐ๊ฐ ๊ผญ ๋ฐ๋ฅ(leaf node)์๋ง ์๋ ๊ฒ์ด ์๋๋ผ.. ์ด์ 1 2 3 4 ยทยทยท 14 ๋ค์