๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋?
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ CPU๊ฐ ์ง์ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ
ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ค๋ฉด ํด๋น ํ๋ก๊ทธ๋จ์ด ๋ณต์ฌ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ผ ํจ, ์ด๋ฅผ ํ๋ก์ธ์ค๋ผ ํ๋ค
CPU๋ ์ฐ์ฐ์ ์ํํ ํ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌํจ
MMU
MMU(๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ฅ์น)๋?
- MMU๋ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํ์์ผ์ค
- ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ ์บ์ ๊ด๋ฆฌ ๋ฑ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๊ฒ์ ๊ด๋ฆฌํด์ฃผ๋ ํ๋์จ์ด
- ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์์๊ฒ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ณ ์๋ ๋ฏ์ด ์์ด๊ธฐ ์ํด '๊ฐ์ ์ฃผ์'๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ์์
- ์ด ๊ฐ์ ์ฃผ์๋ฅผ ์ค์ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋น ๋ฅด๊ฒ ๋ณํ์์ผ์ผ ํ๋๋ฐ, ์ด๋ฅผ MMU๊ฐ ๋์์ค
MMU์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ
- ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋ค๋ฅธ ๊ณต๊ฐ์ ์นจ๋ฒํด์๋ ์๋จ
- ๋ฐ๋ผ์ ํ ํ๋ก์ธ์ค์๊ฒ ์ฃผ์ ์์ญ์ ์ค์ ํ๊ณ , ์๋ชป๋ ์ ๊ทผ์ด ์ค๋ฉด ์ด๋ฅผ ๋ณดํธํด์ผ ํจ
์ฐธ๊ณ ) base์ limit ๋ ์ง์คํฐ๋ฅผ ํ์ฉํ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๊ธฐ๋ฒ
base ๋ ์ง์คํฐ๋ ํ๋ก์ธ์ค ์์์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ์ ์ฅํ๊ณ , limit ๋ ์ง์คํฐ๋ ํ๋ก์ธ์ค์ ์ฌ์ด์ฆ๋ฅผ ์ ์ฅ
base <= x < base + limit ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ถ์ฌํจ
๋ฉ๋ชจ๋ฆฌ ๊ณผํ ๋น(over allocating)
๋ฉ๋ชจ๋ฆฌ ๊ณผํ ๋น์ด๋?
์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ณด๋ค ๋ ํฐ ์ฌ์ด์ฆ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ก์ธ์ค์ ํ ๋นํ ์ํฉ
ํ์ด์ง ๊ธฐ๋ฒ๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ ์ฌ์ฉ์๊ฐ ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋๋ผ๋๋ก ๋์์์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ค
์ด๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ
๊ณผํ ๋น ์ํฉ์๋ ์ด๋ฌํ ๋์์ ๊ณผ์ ์ ์ฌ์ฉ์์๊ฒ ๋คํฌ ์ํฉ์ด ์กด์ฌํ๋ค.
- ํ์ด์ง ํดํธ ๋ฐ์
- ํ์ด์ง ํดํธ๋ฅผ ๋ฐ์์ํจ ํ์ด์ง ์์น๋ฅผ ๋์คํฌ์์ Search
- ๋น ํ๋ ์์ด ์์
=> ๋น ํ๋ ์์ ํ๋ณดํ๊ธฐ ์ํด swapping ๊ธฐ๋ฒ ํ์ฉ.
ํ์ด์ง ๊ต์ฒด
ํ์ด์ง ๊ต์ฒด๋?
swapping ๊ธฐ๋ฒ์์ ํ๋์ ํ๋ก์ธ์ค๋ฅผ swap outํด์ ๋น ํ๋ ์์ ํ๋ณดํ๋ ๊ฒ
swapping ๊ธฐ๋ฒ ๊ณผ์
- ํ์ด์ง ํดํธ ๋ฐ์
- ํ์ด์ง ํดํธ๋ฅผ ๋ฐ์์ํจ ํ์ด์ง ์์น๋ฅผ ๋์คํฌ์์ Search
- ๋ฉ๋ชจ๋ฆฌ์ ๋น ํ๋ ์์ด ์๋ ํ์ธ
- ๋ง์ฝ ๋น ํ๋ ์์ด ์์ผ๋ฉด ํด๋น ํ๋ ์์ ์ฌ์ฉ
- ๋น ํ๋ ์์ด ์์ผ๋ฉด, ํฌ์ ํ๋ ์์ ์ ์ ํด ๋์คํฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ๊ณ ํ์ด์ง ํ ์ด๋ธ์ ์ ๋ฐ์ดํธ
- ๋น ํ๋ ์์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ ํ์ด์ง๋ฅผ ์ฌ๋ฆฌ๊ณ , ํ์ด์ง ํ ์ด๋ธ ์ ๋ฐ์ดํธ
์ด๋ ํ์ด์ง ๊ต์ฒด๊ฐ ์ผ์ด๋๋, ์ฌ์ฉ์๊ฐ ๋ชป๋๋ผ๋๋ก ํ๋ก์ธ์ค๋ฅผ ๋ฌธ์ ์์ด ๊ณ์ ์ํ์์ผ์ผ ํจ => ์ค๋ฒํค๋๋ฅผ ๊ฐ์ ์์ผ์ผ ํจ!
๋น ํ๋ ์์ด ์๋ ์ํฉ์์ ํฌ์ ํ๋ ์์ ๋น์ธ ๋์ ์ํ๋ ํ์ด์ง๋ฅผ ํด๋น ํ๋ ์์ผ๋ก ์ฌ๋ฆด ๋ ์ด ๋ ๋ฒ์ ๋์คํฌ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง
๋ง์ฝ, ํ์ด์ง ๊ต์ฒด๊ฐ ๋ง์ด ์ด๋ฃจ์ด์ง๋ค๋ฉด ์ค๋ฒํค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ
์์ ์ ๊ทผํ๋ ํ์๋ฅผ ์ค์ด์!
- swapping ๊ณผ์ ์์ ์ด ๋ ๋ฒ์ ๋์คํฌ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง๋๋ฐ ์ ๊ทผ ํ์๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?
- ๋ชจ๋ ํ์ด์ง์ ๋ด์ฉ์ ๋ณ๊ฒฝ๊ณผ ๊ด๋ จ๋ ๋ณ๊ฒฝ ๋นํธ๋ฅผ ๋์! ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ์ ํฌ์ ํ์ด์ง๊ฐ ์ ํด์ง๋ค๋ฉด ๊ทธ ๋ณ๊ฒฝ ๋นํธ๋ฅผ ํ์ธํ์
- ๋ง์ฝ ๊ทธ ๋นํธ๊ฐ set ์ํ๋ผ๋ฉด, ํด๋น ํ์ด์ง์ ๋ด์ฉ์ด ๋ฌ๋ผ์ก์ผ๋ฏ๋ก ๋์คํฌ์ ๊ธฐ๋กํด์ผํ๋ค!
- ๋ง์ฝ ๊ทธ ๋นํธ๊ฐ clear ์ํ๋ผ๋ฉด, ๋ด์ฉ์ด ๋ฌ๋ผ์ง์ง ์์์ผ๋ฏ๋ก ๋์คํฌ์ ์ ๊ทผํ์ง ์์๋ ๋๋ค!
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ!
- ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํํ๋ค๋ฉด ์ค๋ฒํค๋๋ฅผ ํ์คํ ์ค์ผ ์ ์๋ค.
- ์ฆ, ํ์ฌ ์ํฉ์์ ํ์ด์ง ํดํธ ํ๋ฅ ์ต๋ํ ์ค์ฌ์ค ์ ์๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ๋ง ํ๋ค.
- FIFO, OPT, LRU
์บ์ ๋ฉ๋ชจ๋ฆฌ
์บ์ ๋ฉ๋ชจ๋ฆฌ๋?
์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋ ๋ด์ฉ์ ์ผ๋ถ๋ฅผ ์์๋ก ์ ์ฅํด๋๋ ๊ธฐ์ต์ฅ์น
CPU์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์ฑ๋ฅ ์ฐจ์ด์ ๋ํ ์ฑ๋ฅ ์ ํ๋ฅผ ์ค์ด๊ธฐ ์ํ ๋์
๋ง์ฝ CPU๊ฐ ์ด๋ ํ ๋ฐ์ดํฐ์ ๋ํ์ฌ ๋ค์ ์ฌ์ ๊ทผ์ ํ ๋, ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋จ๋ค๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊น์ง ์ ๊ทผํ ํ์๊ฐ ์์
์บ์ฑ ๊ณผ์
- CPU์์ ์ฃผ์๋ฅผ ์ ๋ฌ, ํด๋น ๋ช ๋ น์ด ์บ์ ๊ธฐ์ต์ฅ์น์ ์กด์ฌํ๋์ง ํ์ธ
- ์กด์ฌํ๋ฉด Hit!, ํด๋น ๋ช ๋ น์ด๋ฅผ CPU์๊ฒ ์ ๋ฌ
- ์กด์ฌํ์ง ์๋๋ค๋ฉด Miss!
- ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ ๊ทผ
- ํด๋น ๋ช ๋ น์ด๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ ์ธ์ถ
- ํด๋น ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์บ์์ ์ ์ฅ
- ํด๋น ๋ช ๋ น์ด๋ฅผ CPU๋ก ์ ์ก
์บ์๋ฅผ ์ด์ฉํ๋ฉด ๋น์ฉ์ ๋ง์ด ์ค์ผ ์ ์์ง๋ง, ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํด์ ์ ์ค๋ฅ ์ ๊ทน๋ํ ํด์ผํจ!
์ด๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ์ง์ญ์ฑ์ ์๋ฆฌ
์ง์ญ์ฑ์ ์๋ฆฌ
- ๊ธฐ์ต ์ฅ์น ๋ด์ ๋ฐ์ดํฐ๋ฅผ ๊ท ๋ฑํ๊ฒ ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ ํ ์๊ฐ์ ํน์ ํ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ ๊ทผํ๋ ํน์ฑ
- ์๊ฐ ์ง์ญ์ฑ : ์ต๊ทผ์ ์ฐธ์กฐ๋ ์ฃผ์์ ๋ด์ฉ์ ๊ณง ๋ค์์๋ ์ฐธ์กฐ๋๋ ํน์ฑ
- ๊ณต๊ฐ ์ง์ญ์ฑ : ์ค์ ํ๋ก๊ทธ๋จ์ด ์ฐธ์กฐ๋ ์ฃผ์์ ์ธ์ ํ ์ฃผ์์ ๋ด์ฉ์ด ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ
์บ์ฑ ๋ผ์ธ
- ์บ์๋ฅผ ์ฌ์ฉํ ๋, ์ฃผ์์ ํด๋น๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ์ํด ์ผ์ผํ ์ํํ๋ ๊ฒ์ ๋นํจ์จ์
- ๋ฐ๋ผ์ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋, ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํจ๊ป ์ ์ฅ
- ์ฆ, map ์๋ฃ๊ตฌ์กฐ์ ๊ฐ์ด ๋น ๋ฅด๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋๋ก ๊ตฌํํจ
Reference
https://github.com/gyoogle/tech-interview-for-developer