ํฐ์คํ ๋ฆฌ ๋ทฐ
์ด์์ฒด์ : ์ฃผ๊ธฐ์ต์ฅ์น ๊ด๋ฆฌ
dirmathfl 2020. 6. 21. 21:40์์ ๋ด์ฉ๋ค์ ํ๋ก์ธ์ค ๊ด๋ฆฌ ์ค, CPU์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ค์ผ์ค๋ง ํ๊ฑฐ๋ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ํด ์์๋ณด์๋ค. ํ๋ก์ธ์ค๋ ๋ณด์กฐ ์ ์ฅ์ฅ์น(HDD, SSD. etc.)์ ์ ์ฅ๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ธ์ ์คํํ๋ ๊ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ๋ณด์กฐ ์ ์ฅ์ฅ์น์ ๋นํด ์๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์์, ํ๋ก์ธ์ค ๋ณ๋ก ํจ์จ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒ์ ์ค์ํ๋ค.
ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ
๊ณผ๊ฑฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ 16MB, 32MB์ ๊ฐ์ด ์ง๊ธ์ ์์ํ ์๋ ์์ ์ ๋๋ก ์๋นํ ์์๋ค. ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ์๋์ ์ผ๋ก ์ ์ฅ๊ณต๊ฐ์ด ํฐ ๋ณด์กฐ ์ ์ฅ์ฅ์น๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค.
๋์ ์ ์ฌ (Dynamic Loading)
ํ๋ก๊ทธ๋จ ์ค ์ ์ฌ ํ ๋ฐ๋ก ์คํ๋์ง ์๋ ๋ถ๋ถ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฒ์ ์ ์ฌํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์๋ค. ์ฐ์ , ํ๋ก๊ทธ๋จ์ ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ฌ์ผ ํ๋ฏ๋ก ์ด๊ธฐ ์คํ์ ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค. ๋ํ, ์ง์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ถ๋ถ์ด ์๋ ์ด๊ธฐํ ๊ณผ์ ์ค ์ฌ์ฉ๋๊ฑฐ๋, ํ๋ก๊ทธ๋จ ์ข ๋ฃ์ ์ฌ์ฉ๋๋ ๋ถ๋ถ๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ญ๋นํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด๋ฅผ ์ ์ ์ ์ฌ(Static Loading)์ด๋ผ๊ณ ํ๋ค.
์ด์ ๋ฌ๋ฆฌ ๋์ ์ ์ฌ๋ ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ ๋์ค ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋๋ก ํ์ฌ, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
๋์ ์ฐ๊ฒฐ (Dynamic Linking)
๋์ ์ฐ๊ฒฐ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์์ ๋์ผํ๊ฒ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด, ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ด ์๋, ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ฌํ๊ณ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค A, B์์ printf() ํธ์ถ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ง๋ค printf() ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ด ์๋๋ค. ํ๋ก์ธ์ค A, B๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(printf())๋ฅผ Linkํ์ฌ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
๋ฆฌ๋ ์ค, ์๋์ฐ์์๋ ์ด๋ฌํ ๋ฐฉ์์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Shared Library), ๋์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamic Linking Library, DLL)์ด๋ผ๊ณ ํ๋ค.
Swapping
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํญ์ ์ ์ฌํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ํฉ์ ์ผ๊ธฐํ๋ค. ๋ฐ๋ผ์ ์ํฉ์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ๋ณด์กฐ ์ ์ฅ์ฅ์น์ ์ ์ฅํ๋ swap-out๊ณผ ๋ณด์กฐ ์ ์ฅ์ฅ์น๋ก ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ์ฌํ๋ swap-in์ ํ๊ฒ ๋๋ค.
์ ์ ๋ ๋ฒจ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ ๋ฟ ์๋, ๋ฆฌ๋ ์ค ์ปค๋์์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ ๋ณด์ธ PCB์์๋ ์ด๋ฌํ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. PCB์ ๋ชจ๋ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ ๊ณผ๊ฑฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 16MB, 32MB์ธ ๊ฒฝ์ฐ ์๋นํ ๋นํจ์จ์ ์ธ ๋ฐฉ์์ด์๋ค. ๋ฐ๋ผ์ Swapping ๋ฐฉ์์ ์ฌ์ฉํ์ฌ, PCB ์ค ๋ฐ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํด์ผ ๋๋ ๋ถ๋ถ์ ์ ์ธํ๊ณ ๋๋จธ์ง๋ ํ๋ก์ธ์ค ์ค์ผ์ค๋ง์ผ๋ก ๊ต์ฒด๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ swap-out๋๋๋ก ํ์๋ค.
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น (Contiguous Memory Allocation)
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ง๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์๋ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
-
First-fit(์ต์ด ์ ํฉ) : ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ณต๊ฐ์ ํ์ํ์ฌ, ๊ฐ์ฅ ๋จผ์ ์ฐพ๊ฒ ๋๋ ๊ณต์ ์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
-
Best-fit(์ต์ ์ ํฉ) : ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๊ณต๊ฐ์ ํฌ๊ธฐ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
-
Worst-fit(์ต์ ์ ํฉ) : ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๊ณต๊ฐ์ ํฌ๊ธฐ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ํฐ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
์๋ฅผ ๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ 0 - 10๊น์ง ์๊ณ ํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ ๊ณต๊ฐ์ 5 - 8์ธ ๊ฒฝ์ฐ ํ๋ก์ธ์ค A๋ 2์ ๊ณต๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ 5 - 7 ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ค. ํ์ํ ๊ณต๊ฐ์ด 1์ธ ํ๋ก์ธ์ค๊ฐ ์คํ๋์ง ์๋ ์ด์ 7 - 8์ ๊ณต๊ฐ์ ์ฌ์ฉ๋์ง ์๋ hole์ด ๋๋ค. ๋ํ, ์ด๋ฌํ ๊ณผ์ ์ด ์ง์์ ์ผ๋ก ๋ฐ๋ณต๋ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ณณ์ hole์ด ๋ฐ์ํ๊ฒ ๋๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ชปํ๋ค.
์ด์ ๊ฐ์ด ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ฐ๋ผ ์ฌ๋ฌ hole์ด ๋ฐ์ํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ(Memory fragmentation)์ด๋ผ๊ณ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์์ถ(Compaction) ๊ณผ์ ์ ํตํด ์ฌ์ฉ๊ฐ๋ฅํ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์์ง๋ง, ์ค๋ฒํค๋๊ฐ ํฌ๊ณ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํ ์ต์ ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์ง ์๋๋ค.
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฒด์ : ์ธ๊ทธ๋จผํ ์ด์ (0) | 2020.06.22 |
---|---|
์ด์์ฒด์ : ํ์ด์ง (0) | 2020.06.21 |
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ๋ชจ๋ํฐ (0) | 2020.06.20 |
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ๊ต์ฐฉ์ํ (0) | 2020.06.20 |
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ์์ฑ์ โ ์๋น์ (0) | 2020.06.20 |