๐ก๋ชฉํ : ํ์ด์ง์ ํ๋ ์์ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ
๊ตฌ์กฐ์ฒด ์ฝ์
๊ตฌ์กฐ์ฒด ํ์
๊ตฌ์กฐ์ฒด ์ญ์
๊ตฌ์กฐ์ฒด ์ํ
๐ค Hash table์ด๋?
ํด์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ฒ์ํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ธ ๋ฒํท(bucket)๊ณผ ๋ฐ์ดํฐ๋ฅผ ํด์ ํจ์๋ฅผ ํตํด ๋ฒํท์ ๋งคํํ๋ ์ฐ์ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
ํด์ ํ ์ด๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด๋ก ๊ตฌํ๋๋ฉฐ, ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ฒํท์ด๋ผ๊ณ ํฉ๋๋ค. ๊ฐ ๋ฒํท์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ด์ง ํธ๋ฆฌ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค. ๊ฐ ๋ฐ์ดํฐ๋ ํด์ ํจ์๋ฅผ ํตํด ๋ฒํท์ ๋งคํ๋์ด ์ ์ฅ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋์๋ ๋์ผํ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๋ฒํท์ ์ฐพ์ต๋๋ค.
ํด์ ํจ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ณ ์ ๋ ๊ธธ์ด์ ํด์ ์ฝ๋๋ฅผ ๋ฐํํ๋ ํจ์์ ๋๋ค. ์ด ํด์ ์ฝ๋๋ ๋ฐ์ดํฐ์ ๊ณ ์ ํ ์๋ณ์๋ก ์ฌ์ฉ๋์ด ๋ฒํท๊ณผ ๋งคํ๋ฉ๋๋ค. ํด์ ํจ์๋ ๋ฐ์ดํฐ์ ํน์ง์ ์ ๋ฐ์ํ๊ณ , ์ถฉ๋์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ถฉ๋์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋์ผํ ํด์ ์ฝ๋๋ฅผ ๊ฐ์ง๋ ์ํฉ์ ์๋ฏธํ๋ฉฐ, ์ด๋ ํด์ ํ ์ด๋ธ์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค.
ํด์ ํ ์ด๋ธ์ ์ฃผ์ ์ฐ์ฐ์ ๋ฐ์ดํฐ์ ์ฝ์ , ๊ฒ์, ์ญ์ ์ ๋๋ค. ๋ฐ์ดํฐ์ ์ฝ์ ์ ํด์ ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ๋ฒํท์ ์ ์ฅํฉ๋๋ค. ๊ฒ์์ ํด์ ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ฐพ๊ณ , ํด๋น ๋ฒํท์์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ด์ง ํธ๋ฆฌ ๋ฑ์ ํ์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ต๋๋ค. ์ญ์ ๋ ๊ฒ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ฐพ์ ํ, ํด๋น ๋ฒํท์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
ํด์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ์ ์ฝ์ , ๊ฒ์, ์ญ์ ์ฐ์ฐ์ ํ๊ท ์ ์ผ๋ก ์์ ์๊ฐ(O(1))์ ์ํํ ์ ์์ผ๋ฉฐ, ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ์ ํจ๊ณผ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ํด์ ํจ์์ ์ฑ๋ฅ๊ณผ ์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ์ ์ ํ ํด์ ํจ์์ ์ ํ๊ณผ ์ถฉ๋ ํด๊ฒฐ ๊ธฐ๋ฒ์ ๊ตฌํ์ด ์ค์ํฉ๋๋ค.
Supplemental page table์ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํํ๋ ์ด์ ๋ ํจ์จ์ฑ๊ณผ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด์์ ๋๋ค.
Supplemental page table์ ๊ฐ์ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์ ์ฌ์ด์ ๋งคํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์ด ๋งคํ ์ ๋ณด๋ ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ๊ธฐ ์ํด ํ์ํ๋ฉฐ, ํ์ด์ง ํดํธ๋ ํ์ด์ง ๊ต์ฒด ๋ฑ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์ ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ์์ ์ ๋น๋ฒํ๊ฒ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๋งค๋ฒ ์ ์ฒด ๋งคํ ์ ๋ณด๋ฅผ ์ ํ ๊ฒ์ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ ๋๋ค.
ํด์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก์, ์์ ์๊ฐ(O(1))์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ supplemental page table์ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํํ๋ฉด ๋งคํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์ผ๋ฉฐ, ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ๋ ๊ณผ์ ์์์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ํ, ํด์ ํ ์ด๋ธ์ ์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํตํด ์ถฉ๋์ ์ต์ํํ ์ ์์ต๋๋ค. ์ถฉ๋์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ฃผ์๊ฐ ๋์ผํ ํด์ ๊ฐ์ ๋งคํ๋๋ ์ํฉ์ ์๋ฏธํ๋ฉฐ, ํด์ ํ ์ด๋ธ์์๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฒด์ด๋ ๋๋ ๊ฐ๋ณ ์ฒด์ด๋ ๋ฑ์ ์ถฉ๋ ํด๊ฒฐ ๊ธฐ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋งคํ ์ ๋ณด๋ฅผ ์ ํํ๊ฒ ์ ์งํ๋ฉด์๋ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ supplemental page table์ ๊ตฌํํจ์ผ๋ก์จ, ๋งคํ ์ ๋ณด์ ํจ์จ์ ์ธ ๊ด๋ฆฌ์ ๋น ๋ฅธ ๊ฒ์ ์๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ค๋ง๋ค ๊ฐ์์ฃผ์ ๊ณต๊ฐ์ด ํ ๋น๋๋ฏ๋ก, ๊ฐ์ ํ์ด์ง๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ธ ํด์ ํ ์ด๋ธ ์ ์
synchronization ๋๊ธฐํ
: ft๋ ๋ชจ๋ thread๊ฐ ๊ณต์ ํ๋ ํ๋์ ์์์ผ๋ก ํ๋ฒ์ ํ๋์ thread๊ฐ ์ ๊ทผํ์ฌ ์ถฉ๋ ์์ด ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ lock์ ์ด์ฉํด์ผ ํ๋ค.
๊ตฌ์กฐ์ฒด ์ํ
: swap in/out์ ํ๊ธฐ ์ํด์๋ ft๋ฅผ ์ํํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ์ซ์๋ผ ํ๋ ์์ ๋น ๋ฅด๊ฒ ๊ณจ๋ผ๋ด์ผ ํ๋ค. ์ด๋ eviction policy๋ฅผ ๊ณ ๋ คํ๋ฉด์ ์ํ๋ฅผ ์งํํ๊ณ ๋ฐํํด์ผ ํ๋ค.