Memory

์šด์˜์ฒด์ œ(OS) ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž„.

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ฒดํ•˜๋ฉฐ, ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ.


1. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ(Memory Hierarchy)

๋ฉ”๋ชจ๋ฆฌ๋Š” ์†๋„์™€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑ๋จ. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง.

  1. ๋ ˆ์ง€์Šคํ„ฐ(Register) : CPU ์™€ RAM ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง.(๋‚˜๋…ธ์ดˆ ๋‹จ์œ„)

  2. ์บ์‹œ(Cache Memory) : CPU์™€ RAM ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋ฉฐ, L1, L2, L3 ์บ์‹œ๋กœ ๊ตฌ๋ถ„๋จ.

  3. ์ฃผ ๋ฉ”๋ชจ๋ฆฌ(Main Memory, RAM) : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„.

  4. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory) : ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋””์Šคํฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉ.

  5. ๋ณด์กฐ ์ €์žฅ์žฅ์น˜(Storage, HDD/SDD) : ์žฅ๊ธฐ ์ €์žฅ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ ‘๊ทผ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋А๋ฆผ.


2. ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ์ฃผ์†Œ ๋ณ€ํ™˜(Addressing & Translation)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ(Logical Address) ๋˜๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ(Virtual Address) ์ด๋ฉฐ, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์œ„์น˜์ธ ๋ฌผ๋ฆฌ ์ฃผ์†Œ(Physical Address) ๋กœ ๋ณ€ํ™˜๋จ.

์ด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์žฅ์น˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์œ ๋‹›(MMU, Memory Management Unit) ์ž„.

์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ(Address Binding)

์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ์€ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋‰จ.

  1. ์ปดํŒŒ์ผ ํƒ€์ž„ ๋ฐ”์ธ๋”ฉ(Compile Time Binding)

    1. ํ”„๋กœ๊ทธ๋žจ์ด ์ปดํŒŒ์ผ๋  ๋•Œ ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋จ.

    2. ์‹คํ–‰ ์ค‘์— ์œ„์น˜ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ.

  2. ๋กœ๋“œ ํƒ€์ž„ ๋ฐ”์ธ๋”ฉ(Load Time Binding)

    1. ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ๋“œ๋  ๋•Œ ์‹ค์ œ ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋จ.

    2. ์‹คํ–‰ ์ „์ด๋ผ๋ฉด ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ

  3. ์‹คํ–‰ ์‹œ๊ฐ„ ๋ฐ”์ธ๋”ฉ(Execution Time Binding)

    1. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์—๋„ ์ฃผ์†Œ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ.

    2. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋จ.

์ฃผ์†Œ ๋ณ€ํ™˜ ๋ฐฉ์‹

  • ๋ฒ ์ด์Šค(Base) ๋ ˆ์ง€์Šคํ„ฐ + ํ•œ๊ณ„(Limit) ๋ ˆ์ง€์Šคํ„ฐ ๋ฐฉ์‹ : ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ์ฃผ์†Œ์™€ ํฌ๊ธฐ๋ฅผ ๊ด€๋ฆฌ

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table) : ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜

  • ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”(Segment Table) : ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰


3. ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Contiguos Memory Allocation)

ํ”„๋กœ์„ธ์Šค์— ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•์ž„.

๊ณ ์ • ๋ถ„ํ• (Fixed Partitioning)

  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ด€๋ฆฌ

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation) ๋ฐœ์ƒ ๊ฐ€๋Šฅ

๊ฐ€๋ณ€ ๋ถ„ํ• (Variable Partitioning)

  • ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์— ๋งž๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹น.

  • ์™ธ๋ถ€ ๋‹จ๋ณ€ํ™”(External Fragmentation) ๋ฐœ์ƒ ๊ฐ€๋Šฅ

๋‹จํŽธํ™”(Fragmentation)

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ๊ณต๊ฐ„๋ณด๋‹ค ์ž‘์€ ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋จ.

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”(External Fragmentation) : ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ›„ ๋นˆ ๊ณต๊ฐ„์ด ์กฐ๊ฐ๋‚˜์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ณต๊ฐ„์ด ๋ฐœ์ƒ

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ์••์ถ• : ๋ฉ”๋ชจ๋ฆฌ์˜ ๋นˆ ๊ณต๊ฐ„์„ ํ•œ ๊ณณ์œผ๋กœ ๋ชจ์•„ ํฐ ๊ณต๊ฐ„์„ ํ™•๋ณด

  • ํŽ˜์ด์ง• ๋˜๋Š” ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation) ์‚ฌ์šฉ.


4. ํŽ˜์ด์ง• ๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜

์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ๋‹จ์ (์™ธ๋ถ€ ๋‹จํŽธํ™”)์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋น„์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ธฐ๋ฒ•์ด ์‚ฌ์šฉ๋จ.

ํŽ˜์ด์ง•(Paging)

  • ๋ฉ”๋ชจ๋ฆฌ ๊ณ ์ • ํฌ๊ธฐ(ํŽ˜์ด์ง€ ๋‹จ์œ„)๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌ

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table) ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜.

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๊ฐ€๋Šฅ

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table) ๊ตฌ์กฐ

  • ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” : ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์„ ์œ ์ง€

  • ๋‹ค๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Multi-level Page Table) : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ๋„ˆ๋ฌด ํด ๊ฒฝ์šฐ ๊ณ„์ธต์ ์œผ๋กœ ์ €์žฅ

  • TLB(Translation Lookaside Buffer) : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์กฐํšŒ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ์บ์‹œ

์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation)

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„(์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ ๋“ฑ)๋กœ ๋‚˜๋ˆ„์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌ

  • ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”(Segment Table) ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.


5. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‹ค์ œ RAM ๋ณด๋‹ค ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ž„. ํ”„๋กœ์„ธ์Šค๋Š” ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‹คํ–‰ํ•จ.

ํŽ˜์ด์ง€ ๊ต์ฒด(Page Replacement) ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด, ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•จ.

  1. FIFO(First-In-First-Out) : ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐ

  2. LRU(Least Recently Used) : ๊ฐ€์žฅ ์˜ค๋ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐ

  3. Optimal(OPT) : ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐ

  4. LFU(Least Frequently Used) : ๊ฐ€์žฅ ์ ๊ฒŒ ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐ


6. ์Šค์™€ํ•‘(Swapping)

  • ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋ฒ•

  • ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์‹œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ(Context Switching) ๋น„์šฉ์ด ๋ฐœ์ƒ


7. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(Cache Memory)

CPU ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ์†๋„ ์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ

์บ์‹œ ๋งคํ•‘ ๋ฐฉ์‹

  • ์ง์ ‘ ๋งคํ•‘(Direct Mapping) : ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ธ”๋ก์„ ํŠน์ • ์บ์‹œ ๋ผ์ธ์— ๋งคํ•‘

  • ์—ฐ๊ด€ ๋งคํ•‘(Associative Mapping) : ๋ชจ๋“  ์บ์‹œ ๋ผ์ธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๊ฐ€๋Šฅ

  • ์„ธํŠธ ์—ฐ๊ด€ ๋งคํ•‘(Set-Associative Mapping) : ์ง์ ‘ ๋งคํ•‘๊ณผ ์—ฐ๊ด€ ๋งคํ•‘์˜ ์ ˆ์ถฉ์•ˆ


8. ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ(Memory Protection)

์šด์˜์ฒด์ œ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณดํ˜ธํ•จ.

๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋ฒ•

  • ๋ฒ ์ด์Šค(Base) ์™€ ๋ฆฌ๋ฏธํŠธ(Limit) ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์šฉ

  • ํŽ˜์ด์ง€ ๋ณดํ˜ธ ๋น„ํŠธ(Protcetion Bit) ํ™œ์šฉ.

  • MMU์™€ ์ปค๋„ ๋ชจ๋“œ(Kernel Mode) ์ง€์›


9. NUMA(Non-Uniform Memory Access)

  • ๋ฉ€ํ‹ฐ์ฝ”์–ด ๋ฐ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์—์„œ ๊ฐ CPU๊ฐ€ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋น„๊ท ์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„๋ฅผ ๊ฐ€์ง.

  • NUMA ์‹œ์Šคํ…œ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ€ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์‚ฌ์šฉ ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•จ.

Last updated

Was this helpful?