CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ(๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ)

1eehyunji 2023. 8. 24. 22:57

์šด์˜์ฒด์ œ์˜ ๋Œ€ํ‘œ์ ์ธ ํ•  ์ผ ์ค‘ ํ•˜๋‚˜์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๊ด€๋ จํ•ด์„œ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•œ๋‹ค!

์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ๋‚ด์˜ ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. 

 

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

 ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์˜ ํ•˜๋‚˜๋กœ, ์ปดํ“จํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ์ถ”์ƒํ™”ํ•ด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ํฐ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ฆ‰, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋งŽ์•„ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ๋‹ค.

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋”๋ผ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ผ๋ถ€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋””์Šคํฌ์— ๋‘๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ๊ฐ€์ƒ์ ์œผ๋กœ ์ฃผ์–ด์ง„ ์ฃผ์†Œ๋ฅผ '๊ฐ€์ƒ ์ฃผ์†Œ(Logical address)'๋ผ ํ•˜๋ฉฐ, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ '์‹ค์ œ ์ฃผ์†Œ(Physical address)'๋ผ ํ•œ๋‹ค.

๊ฐ€์ƒ ์ฃผ์†Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜(MMU)์— ์˜ํ•ด ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ์ด ๋•๋ถ„์— ์‚ฌ์šฉ์ž๋Š” ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์˜์‹ํ•  ํ•„์š” ์—†์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ์‹ค์ œ ์ฃผ์†Œ๊ฐ€ ๋งคํ•‘๋˜์–ด ์žˆ๊ณ , ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” 'ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”'๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

์ด๋•Œ, ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด TLB๋ฅผ ์“ด๋‹ค.

* TLB(Translation Lookaside Buffer) : ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์ด์— ์žˆ๋Š” ์ฃผ์†Œ ๋ณ€ํ™˜์„ ์œ„ํ•œ ์บ์‹œ์ด๋‹ค. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๊ด€ํ•˜๋ฉฐ CPU๊ฐ€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ํ•ด์„œ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์บ์‹œ ๊ณ„์ธต์ด๋‹ค. 

 

์Šค์™€ํ•‘(swapping)

๋งŒ์•ฝ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์กด์žฌํ•˜์ง€๋งŒ, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์ธ RAM์—๋Š” ํ˜„์žฌ ์—†๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ์ฝ”๋“œ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ, ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‹น์žฅ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜์—ญ์„ ํ•˜๋“œ๋””์Šคํฌ๋กœ ์˜ฎ๊ธฐ๊ณ  ํ•˜๋“œ๋””์Šคํฌ์˜ ์ผ๋ถ€๋ถ„์„ ๋งˆ์น˜ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ๋ถˆ๋Ÿฌ์™€ ์“ฐ๋Š” ๊ฒƒ์„ ์Šค์™€ํ•‘์ด๋ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ ๋‹ค. 

ํŽ˜์ด์ง€ ํดํŠธ ์™ธ์—๋„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์„ ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋Œ€๊ธฐ ์ƒํƒœ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž ์‹œ ํ•˜๋“œ๋””์Šคํฌ๋กœ ์˜ฎ๊ธฐ๊ณ (Swap-out), ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•˜๋“œ๋””์Šคํฌ์— ์˜ฎ๊ฒจ๋‘” ํ”„๋กœ์„ธ์Šค์—์„œ ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.(Swap-in)

 

ํŽ˜์ด์ง€ ํดํŠธ(page fault)

ํŽ˜์ด์ง€ ํดํŠธ๋ž€ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์—๋Š” ์กด์žฌํ•˜์ง€๋งŒ ์ง€๊ธˆ ์ด ์ปดํ“จํ„ฐ์˜ RAM์—๋Š” ์—†๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•œ๋‹ค. 

ํŽ˜์ด์ง€ ํดํŠธ์™€ ๊ทธ๋กœ ์ธํ•œ ์Šค์™€ํ•‘์€ ๋‹ค์Œ ๊ณผ์ •์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

  1. CPU๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์—†์œผ๋ฉด ํŠธ๋žฉ์„ ๋ฐœ์ƒํ•ด์„œ ์šด์˜์ฒด์ œ์— ์•Œ๋ฆฐ๋‹ค. 
  2. ์šด์˜์ฒด์ œ๋Š” CPU์˜ ๋™์ž‘์„ ์ž ์‹œ ๋ฉˆ์ถ˜๋‹ค.
  3. ์šด์˜์ฒด์ œ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜์—ฌ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์—†์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ํ˜„์žฌ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„์–ด ์žˆ๋Š” ํ”„๋ ˆ์ž„์ด ์žˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค. ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์—๋„ ์—†๋‹ค๋ฉด ์Šค์™€ํ•‘์ด ๋ฐœ๋™๋œ๋‹ค.
  4. ๋น„์–ด ์žˆ๋Š” ํ”„๋ ˆ์ž„์— ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ตœ์‹ ํ™”ํ•œ๋‹ค.
  5. ์ค‘๋‹จ๋˜์—ˆ๋˜ CPU๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค.

* ํŽ˜์ด์ง€ : ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์†Œ ํฌ๊ธฐ ๋‹จ์œ„

* ํ”„๋ ˆ์ž„ : ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„ ํฌ๊ธฐ

 

์Šค๋ ˆ์‹ฑ(thrashing)

์Šค๋ ˆ์‹ฑ์€ ํŽ˜์ด์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ํดํŠธ์œจ์ด ๋†’์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ์˜ ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.

์Šค๋ ˆ์‹ฑ์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€์„œ ์Šค์™€ํ•‘์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋ฉด ๋ฐœ์ƒํ•œ๋‹ค. 

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ CPU๊ฐ€ ๋ฉˆ์ถ”๋ฉด์„œ CPU ์ด์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง„๋‹ค.

CPU ์ด์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง€๊ฒŒ ๋˜๋ฉด ์šด์˜์ฒด์ œ๋Š” CPU๊ฐ€ ํ•œ๊ฐ€ํ•œ ์ค„ ์•Œ๊ณ  ๊ฐ€์šฉ์„ฑ์„ ๋” ๋†’์ด๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์ด์™€ ๊ฐ™์€ ์•…์ˆœํ™˜์ด ๋ฐ˜๋ณต๋˜๋ฉด์„œ ์Šค๋ ˆ์‹ฑ์ด ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜, HDD๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด HDD๋ฅผ SSD๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 

์ด์™ธ์— ์šด์˜์ฒด์ œ์—์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ž‘์—… ์„ธํŠธ(working set)
    • ํ”„๋กœ์„ธ์Šค์˜ ๊ณผ๊ฑฐ ์‚ฌ์šฉ ์ด๋ ฅ์ธ ์ง€์—ญ์„ฑ์„ ํ†ตํ•ด ๊ฒฐ์ •๋œ ํŽ˜์ด์ง€ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค์–ด์„œ, ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 
    • ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋ฉด ํƒ์ƒ‰์— ๋“œ๋Š” ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ์Šค์™€ํ•‘ ๋˜ํ•œ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • PFF(Page Fault Frequency)
    • ํŽ˜์ด์ง€ ํดํŠธ ๋นˆ๋„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ๋งŒ์•ฝ ์ƒํ•œ์„ ์— ๋„๋‹ฌํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋งŽ์€ ํ”„๋ ˆ์ž„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ํ”„๋ ˆ์ž„์„ ๋Š˜๋ฆฌ๊ณ , ํ•˜ํ•œ์„ ์— ๋„๋‹ฌํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋ ˆ์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ํ”„๋ ˆ์ž„์„ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค.