์ด์ ๊ธ์ ์ด์ด์ง๋ ๋ด์ฉ์ผ๋ก, ๊ฐ์ฉ ๋ธ๋ก์ ๊ด๋ฆฌํ๋ ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ธ ๋ฌต์์ ๋ฆฌ์คํธ ๋ฐฉ์์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ๋ฌต์์ ๋ฆฌ์คํธ ๋ฐฉ์ (Implicit List)
๐ ํค๋(Header)
๋ชจ๋ ํ ๋น๊ธฐ๋ ๋ธ๋ก ๊ฒฝ๊ณ๋ฅผ ๊ตฌ๋ถํ๊ณ , ํ ๋น๋ ๋ธ๋ก๊ณผ ๊ฐ์ฉ ๋ธ๋ก์ ๊ตฌ๋ถํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์๋ก ํฉ๋๋ค.
๋๋ถ๋ถ์ ํ ๋น๊ธฐ๊ฐ ํด๋น ์ ๋ณด๋ฅผ ๋ธ๋ก ๋ด๋ถ์ ์ ์ฅํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ถ๊ฐ์ ์ผ๋ก 1๋ธ๋ก์ ์ฌ์ฉํ์ฌ ๋ธ๋ก ์์ ๋ธ๋ก์ ํฌ๊ธฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด๋ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ 1 ์๋๋ฅผ ํค๋(Header)๋ผ๊ณ ํฉ๋๋ค.
ํค๋๋ ๋ธ๋ก ํฌ๊ธฐ์ ๋ธ๋ก์ด ํ ๋น๋์๋์ง, ํน์ ๊ฐ์ฉ ์ํ์ธ์ง๋ฅผ ์ธ์ฝ๋ฉํฉ๋๋ค.
๋ง์ฝ ๋๋ธ ์๋(8๋ฐ์ดํธ) ์ ๋ ฌ ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ๋ค๋ฉด, ๋ธ๋ก ํฌ๊ธฐ๋ ํญ์ 8์ ๋ฐฐ์์ ๋๋ค.
์ฆ ๋ธ๋ก ํฌ๊ธฐ์ ํ์ 3๋นํธ๋ ํญ์ 0์ด ๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ธ๋ก ํฌ๊ธฐ์ ์์ 29๋นํธ๋ง ์ ์ฅํ ํ์๊ฐ ์์ผ๋ฉฐ, ๋๋จธ์ง 3๋นํธ๋ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉํ๊ธฐ ์ํด ๋จ๊ฒจ๋ก๋๋ค.
์ด ๊ฒฝ์ฐ ๋ธ๋ก์ด ํ ๋น๋์๋์ง ํน์ ๊ฐ์ฉ ์ํ์ธ์ง๋ฅผ ๋ํ๋ด๊ธฐ ์ํด LSB๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ธ๋ก ํฌ๊ธฐ 24๋ฐ์ดํธ(0x18)๋ฅผ ๊ฐ๋ ํ ๋น๋ ๋ธ๋ก์ด ์๋ ๊ฒฝ์ฐ, ํค๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
0x00000018[๋ธ๋ก ํฌ๊ธฐ] | 0x1[๊ฐ์ฉ ์ํ ์ฌ๋ถ] = 0x00000019
๋ธ๋ก ํฌ๊ธฐ 40๋ฐ์ดํธ(0x28)๋ฅผ ๊ฐ๋ ๊ฐ์ฉ ๋ธ๋ก์ด ์๋ ๊ฒฝ์ฐ, ํค๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
0x00000028[๋ธ๋ก ํฌ๊ธฐ] | 0x0[๊ฐ์ฉ ์ํ ์ฌ๋ถ] = 0x00000028
ํค๋ ๋ค์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด malloc์ ํธ์ถํ์์ ๋ ์๊ตฌํ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํฉ๋๋ค.
๋ฐ์ดํฐ ์ดํ์์ ์ฌ์ฉ๋์ง ์๋ ํจ๋ฉ์ด ๋ฐ๋ผ์ฌ ์ ์๋๋ฐ, ์ด๋ค์ ํฌ๊ธฐ๋ ๊ฐ๋ณ์ ์ ๋๋ค.
ํจ๋ฉ์ ์ฌ์ฉํ๋ ์ด์ ๋ก๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ, ์๋ฅผ ๋ค์ด ์ธ๋ถ ํํธํ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ํ ๋น๊ธฐ์ ์ ๋ต์ผ ์๋ ์์ผ๋ฉฐ, ์ ๋ ฌ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๊ธฐ ์ํด ํ์ํ ์ ์์ต๋๋ค.
์์์ ์ดํด๋ณธ ๋ด์ฉ๋ค์ ํฉ์น ๋ธ๋ก์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ ๊ฐ์ ๋ธ๋ก ํํ๊ฐ ์ฃผ์ด์ก์ ๋, ํ์ ์ฐ์๋ ํ ๋น ๋ฐ ๊ฐ์ฉ ๋ธ๋ก์ ๋ฐฐ์ด๋ก ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ๋ฌต์์ ๋ฆฌ์คํธ๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ๊ทธ๊ฒ์ ๊ฐ์ฉ ๋ธ๋ก์ด ํค๋ ๋ด ํ๋์ ์ํด์ ๋ฌต์์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํน๋ณํ ๋ง์ง๋ง ๋ธ๋ก([0/1])์ด ํ์ํ๋ค๋ ์ ์ ์ ์ํ์ฌ์ผ ํฉ๋๋ค.
์ ๊ทธ๋ฆผ์์ ํ์ ๋ง์ง๋ง ํค๋๋ ํ ๋น ๋นํธ๊ฐ 1๋ก ์ธํ ๋์ด ์์ผ๋ฉฐ, ๊ทธ ํฌ๊ธฐ๋ 0์ ๊ฐ์ต๋๋ค.
์ด๋ฅผ ์ํ๋ก๊ทธ ํค๋(epilogue header)๋ผ ๋ถ๋ฆ ๋๋ค.
๐ง ํ ๋นํ ๋ธ๋ก ๊ฒฐ์ ํ๊ธฐ
์ ํ๋ฆฌ์ผ์ด์ ์ด k ๋ฐ์ดํธ์ ๋ธ๋ก์ ์์ฒญํ ๋, ํ ๋น๊ธฐ๋ ์์ฒญํ ๋ธ๋ก์ ์ ์ฅํ๊ธฐ์ ์ถฉ๋ถํ ํฐ ๊ฐ์ฉ ๋ธ๋ก์ ๋ฆฌ์คํธ์์ ๊ฒ์ํฉ๋๋ค.
์ด๋, ๊ฒ์์ ์ํํ๋ ๋ฐฉ๋ฒ์ first fit, next fit, best fit๊ณผ ๊ฐ์ ๋ฐฐ์น ์ ์ฑ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
๐ First fit (์ต์ด ํ ๋น)
์ฒ์๋ถํฐ ๊ฒ์์ ์์ํ์ฌ ๋งจ ์ฒ์ ํฌ๊ธฐ๊ฐ ๋ง๋ ๋ธ๋ก์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ชจ๋ ๋ธ๋ก(ํ ๋น๋์๊ฑฐ๋, ๊ฐ์ฉํ ๋ธ๋ก)์ ์์ ๋น๋กํ ์๊ฐ์ด ์์๋ฉ๋๋ค.
๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์ ์์ ํํธ๋ค์ด ๋ค์ ๋ฐ์ํ ์ ์์ต๋๋ค.
First fit์ ๋ฆฌ์คํธ์ ๋ง์ง๋ง์ ๊ฐ์ฅ ํฐ ๊ฐ์ฉ ๋ธ๋ก๋ค์ ๋จ๊ฒจ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋จ์ ์ผ๋ก๋ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์ ์์ ๊ฐ์ฉ ๋ธ๋ก๋ค์ ๋จ๊ฒจ๋๋ ๊ฒฝํฅ์ด ์๋ค๋ ๊ฒ์ธ๋ฐ, ์ด๋ก ์ธํด ํฐ ๋ธ๋ก์ ์ฐพ๋ ๊ฒฝ์ฐ์ ๊ฒ์ ์๊ฐ์ด ๋์ด๋ ์ ์์ต๋๋ค.
๐ Next fit (๋ค์ ํ ๋น)
first fit๊ณผ ์ ์ฌํ์ง๋ง, ์ด์ ์ ๊ฒ์์ด ์ข ๋ฃ๋ ์์น์์ ๊ฒ์์ ์์ํ๋ค๋ ์ ์ด ๋ค๋ฆ ๋๋ค.
์ด๋ ์ด์ ๊ฒ์์์ ๊ฐ์ฉ ๋ธ๋ก์ ๋ฐ๊ฒฌํ๋ค๋ฉด ๋ค์ ๊ฒ์์์๋ ๋ฆฌ์คํธ์ ๋๋จธ์ง ๋ถ๋ถ์์ ์ํ๋ ๋ธ๋ก์ ์ฐพ์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ์์ด๋์ด์์ ์ฐฉ์ํ ๋ฐฉ๋ฒ์ ๋๋ค.
first fit์ ๋นํ์ฌ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ์ง์ง๋ง, ํํธํ๊ฐ first fit๋ณด๋ค ๋ ์ฌํ๊ฒ ๋ฐ์๋ฉ๋๋ค.
๐ Best fit (์ต์ ํ ๋น)
๋ฆฌ์คํธ๋ฅผ ๊ฒ์ํ์ฌ ๊ฐ์ฅ ๊ทผ์ ํ ํฌ๊ธฐ์ ๋ธ๋ก์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํํธํ๋ฅผ ํฌ๊ฒ ์๋ฐฉํ ์ ์์ผ๋, ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ํ์ํ๋ฏ๋ก first fit๋ณด๋ค ํจ์ฌ ๋๋ฆฌ๊ฒ ๋์ํฉ๋๋ค.
๐ง Free ๋ธ๋ก์ ๋ถํ
ํ ๋น๊ธฐ๊ฐ ํ ๋นํ ๊ฐ์ฉ ๋ธ๋ก์ ์ฐพ์ ํ, ๊ฐ์ฉ ๋ธ๋ก์ ์ด๋ ์ ๋๋ฅผ ํ ๋นํ ์ง์ ๋ํด ๊ฒฐ์ ํ์ฌ์ผ ํฉ๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ํด๋น ๊ฐ์ฉ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ์ง์ง๋ง, ๋ด๋ถ ํํธํ๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐ์ฉ ๋ธ๋ก์ ์ชผ๊ฐ์ด, ํ ๋นํ ๋ธ๋ก๊ณผ ์๋ก์ด ๊ฐ์ฉ ๋ธ๋ก์ผ๋ก ๋๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์๋ ๊ทธ๋ฆผ์ ๊ทธ ์์์ ๋๋ค.
๐ง ๊ฐ์ฉ ๋ธ๋ก ํตํฉํ๊ธฐ
ํ ๋น๊ธฐ๊ฐ ํ ๋นํ ๋ธ๋ก์ ๋ฐํํ ๋, ์๋กญ๊ฒ ๋ฐํํ๋ ๋ธ๋ก์ ์ธ์ ํ ๋ค๋ฅธ ๊ฐ์ฉ ๋ธ๋ก๋ค์ด ์์ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ธ์ ๊ฐ์ฉ ๋ธ๋ก๋ค์ ์ค๋ฅ ๋จํธํ(false fragmentation)๋ผ๋ ํ์์ ์ ๋ฐ์ํฌ ์ ์์ผ๋ฉฐ, ์ด๋๋ ๋๋ฌด ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฉ ๋ธ๋ก์ผ๋ก ์ชผ๊ฐ์ง ๋ง์ ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ค์ด ์กด์ฌํฉ๋๋ค.
์๋ ๊ทธ๋ฆผ์ ํตํด ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ๊ทธ๋ฆผ์ ํ ๋นํ ๋ธ๋ก์ ๋ฐํํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๋ฐํ ์ดํ ํฌ๊ธฐ 4์๋์ ๊ฐ์ฉ ๋ธ๋ก๊ณผ, 2์๋์ ๊ฐ์ฉ ๋ธ๋ก์ด ๊ฐ๊ฐ ์กด์ฌํฉ๋๋ค.
์ด ๋์ ํฉ์น๋ค๋ฉด 5์๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ์ ์์ง๋ง, ์ ์ํฉ์ด๋ผ๋ฉด ์์ฒญ์ ์คํจํฉ๋๋ค.
์ค๋ฅ ๋จํธํ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ์ค์ฉ์ ์ธ ํ ๋น๊ธฐ๋ผ๋ฉด ๊ฒฐํฉ(coalescing)์ด๋ผ๋ ๊ณผ์ ์ ํตํด ๊ฐ์ฉ ๋ธ๋ก๋ค์ ํตํฉํด์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์์ ์ธ์ ์ฐ๊ฒฐ์ ์ํํด์ผ ํ ์ง์ ๊ดํ ์ค์ํ ์ ์ฑ ๊ฒฐ์ ์ ํด์ผ ํฉ๋๋ค.
ํ ๋น๊ธฐ๋ ๋ธ๋ก์ด ๋ฐํ๋ ๋๋ง๋ค ์ธ์ ๋ธ๋ก์ ํตํฉํด์ ์ฆ์ ์ฐ๊ฒฐ์ ์ ํํ ์ ์์ต๋๋ค.
๋๋ ์ผ์ ์๊ฐ ํ์ ๊ฐ์ฉ ๋ธ๋ก๋ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๋ ์ง์ฐ ์ฐ๊ฒฐ์ ์ ํํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ํ ๋น๊ธฐ๋ ์ผ๋ถ ํ ๋น ์์ฒญ์ด ์คํจํ ๋๊น์ง ์ฐ๊ฒฐ์ ์ง์ฐํ ์ ์์ผ๋ฉฐ, ๊ทธ ํ์ ์ ์ฒด ํ์ ๊ฒ์ํด์ ๋ชจ๋ ๊ฐ์ฉ ๋ธ๋ก๋ค์ ์ฐ๊ฒฐํฉ๋๋ค.
์ฆ์ ์ฐ๊ฒฐ์ ๊ฐ๋จํ๋ฉฐ ์์ ์๊ฐ ๋ด์ ์ํ๋ ์ ์์ง๋ง, ์ผ๋ถ ์์ฒญ ํจํด์ ๋ํด์๋ ๋ธ๋ก์ด ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ์ ์ ํ์ ๋ถํ ๋๋ ์ฐ๋์ฑ์ ํํ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
๐ง ๊ฒฝ๊ณ ํ๊ทธ
ํ ๋น๊ธฐ์์ ์ฐ๊ฒฐ์ ๊ตฌํํ๋ ๊ณผ์ ์ ์๊ฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐํํ๋ ค๋ ๋ธ๋ก์ ํ์ฌ ๋ธ๋ก์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
์ด ๊ฒฝ์ฐ ๋ค์ ๊ฐ์ฉ ๋ธ๋ก์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ฝ๊ณ ๋ํ ํจ์จ์ ์ ๋๋ค.
ํ์ฌ ๋ธ๋ก์ ํค๋๋ ๋ค์ ๋ธ๋ก์ ํค๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์ ๋ค์ ๋ธ๋ก์ด ๊ฐ์ฉํ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฒดํฌ๋ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ทธ ํฌ๊ธฐ๋ ํ์ฌ ๋ธ๋ก์ ํค๋์ ํฌ๊ธฐ์ ๋ํด์ง๊ณ , ๋ธ๋ก์ ์์ ์๊ฐ ๋ด์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด์ ๊ฐ์ฉ ๋ธ๋ก์ ์ฐ๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด์ ๊ฐ์ฉ ๋ธ๋ก์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ฒฝ๊ณ ํ๊ทธ(Boundary Tag)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ ๊ฐ ๋ธ๋ก์ ๋ ๋ถ๋ถ์ ํธํฐ(footer, boundary tag)๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก, ํด๋น ํธํฐ๋ ํค๋๋ฅผ ๋ณต์ฌํ ๊ฒ์ ๋๋ค.
๋ง์ผ ๊ฐ ๋ธ๋ก์ด ์ด์ ๊ฐ์ ํธํฐ๋ฅผ ํฌํจํ๊ฒ ๋๋ฉด, ํ ๋น๊ธฐ๋ ์์ ์์น์ ์ด์ ๋ธ๋ก์ ์ํ๋ฅผ ํํฐ๋ฅผ ์กฐ์ฌํด์ ๊ฒฐ์ ํ ์ ์๊ฒ ๋๋ฉฐ,
ํด๋น ํํฐ๋ ํญ์ ํ์ฌ ๋ธ๋ก์ ์์ ๋ถ๋ถ์ ํ ์๋ ์ ์ ์กด์ฌํฉ๋๋ค.
๋ค์์ ๊ฒฝ๊ณ ํ๊ทธ๋ฅผ ํฌํจํ ๋ธ๋ญ์ ๊ตฌ์กฐ์ ๋๋ค.
๐ง ๊ฒฝ๊ณ ํ๊ทธ๋ฅผ ์ฌ์ฉํ Coalescing
ํ ๋น๊ธฐ๊ฐ ํ์ฌ ๋ธ๋ก์ ๋ฐํํ ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ด์ ๊ณผ ๋ค์ ๋ธ๋ก์ด ๋ชจ๋ ํ ๋น๋์ด ์๋ค.
๋ค์๊ณผ ๊ฐ์ด Coalescing์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
2. ์ด์ ๋ธ๋ก์ ํ ๋น๋์ด ์์ง๋ง, ๋ค์ ๋ธ๋ก์ ๊ฐ์ฉ์ํ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ค์ ๋ธ๋ก๊ณผ๋ง Coalescing์ด ๋ฐ์ํฉ๋๋ค.
3. ์ด์ ๋ธ๋ก์ ๊ฐ์ฉ์ํ์ด๊ณ , ๋ค์ ๋ธ๋ก์ ํ ๋น๋์ด์๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ด์ ๋ธ๋ก๊ณผ๋ง Coalescing์ด ๋ฐ์ํฉ๋๋ค.
4. ์ด์ ๋ธ๋ก๊ณผ ๋ค์ ๋ธ๋ก ๋ชจ๋ ๊ฐ์ฉ์ํ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ด์ ๋ธ๋ก๊ณผ ๋ค์ ๋ธ๋ก ๋ชจ๋์ Coalescing์ด ๋ฐ์ํฉ๋๋ค.
๊ฒฝ๊ณ ํ๊ทธ๋ ๊ฐ๋จํ๊ณ ์ ์ฉํ ๊ฐ๋ ์ด์ง๋ง, ๊ฐ ๋ธ๋ก์ด ํค๋์ ํธํฐ๋ฅผ ์ ์งํด์ผ ํ๋ค๋ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค.
๋ฐ๋ผ์ ๋ง์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ํฌ๊ธฐ์ ๋ธ๋ก์ ๋ง์ด ๋ค๋ฃฌ๋ค๋ฉด ์๋นํ ์์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์กฐ๊ธ์ด๋๋ง ์ต์ ํ ํ๊ธฐ ์ํด, ํ ๋น๋ ๋ธ๋ก์์๋ ํํฐ๋ฅผ ์์ ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค.
ํ์ฌ ๋ธ๋ก์ ์ด์ ๊ณผ ๋ค์ ๋ธ๋ก๊ณผ ์ฐ๊ฒฐํ๋ ค๊ณ ํ ๋, ๋ง์ผ ์ด์ ๋ธ๋ก์ด ๊ฐ์ฉํ ๊ฒฝ์ฐ์๋ง ์ด์ ๋ธ๋ก์ ํํฐ์ ์๋ size ํ๋๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
ํ์ฌ ๋ธ๋ก์ ์ถ๊ฐ์ ์ธ ํ์ ๋นํธ๋ค ์ค์ ํ๋์ ์ด์ ๋ธ๋ก์ ํ ๋น, ๊ฐ์ฉ ๋นํธ๋ฅผ ์ ์ฅํ๋ ค๊ณ ํ๋ค๋ฉด, ํ ๋น๋ ๋ธ๋ก๋ค์ ํํฐ๊ฐ ํ์๊ฐ ์์ด์ง๊ณ , ์ด ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ํด ์ฌ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฉ ๋ธ๋ก์ ์ฌ์ ํ ํธํฐ๋ฅผ ํ์๋ก ํ๋ค๋ ๊ฒ์ ์ ์ํด์ผ ํฉ๋๋ค.
๐ง ๋ฌต์์ ๊ฐ์ฉ ๋ฆฌ์คํธ์ ์ฅ๋จ์
๋ฌต์์ ๊ฐ์ฉ ๋ฆฌ์คํธ์ ์ฅ์ ์ ๋จ์ํจ์ ๋๋ค.
๋จ์ ์ผ๋ก๋ ๊ฐ์ฉ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํ๋ ์ฐ์ฐ๋ค์ ๋น์ฉ์ด ํ์ ์๋ ์ ์ฒด ํ ๋น๋ ๋ธ๋ก๊ณผ ๊ฐ์ฉ ๋ธ๋ก์ ์์ ๋น๋กํ๋ค๋ ๊ฒ์ ๋๋ค.
(์ฆ linear time์ด ์์๋ฉ๋๋ค.)
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ ๋น ์ ์ฑ (first fit, next fit, best fit)์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ค์ malloc/free ๊ตฌํ ์์๋ ์ด์ฉํ์ง ์๋๋ฐ, ์ด๋ ์์์ ์ดํด๋ณธ ํ ๋น ์์ ์ ํ์ ์ธ ์ฑ๋ฅ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ณณ์์ ์ดํด๋ณธ ๋ธ๋ญ์ ๋ถํ ๊ณผ ๊ฒฝ๊ณ ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฉ ๋ธ๋ญ์ ํตํฉ(coalescing)ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ํ ๋น๊ธฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.