๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ์™€ ์ •๋ณด๊ธฐ์ˆ ์˜ ์›๋ฆฌ] 8์žฅ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

by moon101 2023. 4. 1.

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€?

ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ๊ฐ 0๋ฒˆ์ง€๋ถ€ํ„ฐ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ, ์ด๋“ค ๊ณต๊ฐ„ ์ค‘ ์ผ๋ถ€๋Š” ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ  ์ผ๋ถ€๋Š” ๋””์Šคํฌ์˜ ์Šค์™‘ ์˜์—ญ์— ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

1. ์š”๊ตฌ ํŽ˜์ด์ง•

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹น์žฅ ์‚ฌ์šฉ๋  ํŽ˜์ด์ง€๋งŒ์„ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹

1) ์š”๊ตฌ ํŽ˜์ด์ง•์˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ ์ฒ˜๋ฆฌ

  • CPU๊ฐ€ ๋ฌดํšจ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ฉด ์ฃผ์†Œ ๋ณ€ํ™˜์„ ๋‹ด๋‹นํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์ธ MMU๊ฐ€ ํŽ˜์ด์ง€ ๋ถ€์žฌ ํŠธ๋žฉ(page fault trap)์„ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค
  • ๊ทธ๋Ÿฌ๋ฉด CPU์˜ ์ œ์–ด๊ถŒ์ด ์ปค๋„๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๊ณ , ์šด์˜์ฒด์ œ์˜ ํŽ˜์ด์ง€ ๋ถ€์žฌ ์ฒ˜๋ฆฌ๋ฃจํ‹ด(page fault handler)์ด ํ˜ธ์ถœ๋˜์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํŽ˜์ด์ง€ ๋ถ€์žฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. 
  • ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์ ๋ฒ•ํ•œ ๊ฒฝ์šฐ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋น„์–ด ์žˆ๋Š” ํ”„๋ ˆ์ž„(free frame)์„ ํ• ๋‹น๋ฐ›์•„ ๊ทธ ๊ณต๊ฐ„์— ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์˜จ๋‹ค
  • ๋งŒ์•ฝ ๋น„์–ด ์žˆ๋Š” ํ”„๋ ˆ์ž„์ด ์—†๋‹ค๋ฉด ๊ธฐ์กด์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋””์Šคํฌ๋กœ ์ซ“์•„๋‚ธ๋‹ค(swap out)

2) ์š”๊ตฌ ํŽ˜์ด์ง•์˜ ์„ฑ๋Šฅ

  • ์œ ํšจ ์ ‘๊ทผ์‹œ๊ฐ„์ด ์งง์„์ˆ˜๋ก ์š”๊ตฌ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์˜ ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋œ๋‹ค

 

2. ํŽ˜์ด์ง€ ๊ต์ฒด

  • ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์š”์ฒญ๋œ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฝ์–ด์™€์•ผ ํ•œ๋‹ค
  • ์ด๋•Œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ํ”„๋ ˆ์ž„์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋””์Šคํฌ๋กœ ์ซ“์•„๋‚ด ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๊ณ  ์ด๊ฒƒ์„ ํŽ˜์ด์ง€ ๊ต์ฒด(page replacement)๋ผ๊ณ  ํ•œ๋‹ค. 

1) ์ตœ์  ํŽ˜์ด์ง€ ๊ต์ฒด

๋นŒ๋ ˆ๋””์˜ ์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜(Belady's optimal algorithm)

  • ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€ ์ค‘ ๊ฐ€์žฅ ๋จผ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋  ํŽ˜์ด์ง€๋ฅผ ์ซ“์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ฏธ๋ž˜์— ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ์–ด๋– ํ•œ ์ˆœ์„œ๋กœ ์ฐธ์กฐ๋ ์ง€ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์šด์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์˜จ๋ผ์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†๋‹ค
  • ๋‹ค๋งŒ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ƒํ•œ์„ (upper bound)์„ ์ œ๊ณตํ•œ๋‹ค

2) ์„ ์ž…์„ ์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜(First In First Out: FIFO)

  • ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์žฅ ๋จผ์ € ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋‚ด์ซ“๋Š”๋‹ค
  • FIFO์˜ ์ด์ƒ ํ˜„์ƒ(FIFO anomaly): FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฆ๊ฐ€์‹œ์ผฐ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ์˜คํžˆ๋ ค ๋Š˜์–ด๋‚˜๋Š” ์ƒํ™ฉ

3) LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜(Least Recently Used)

  • ์‹œ๊ฐ„์ง€์—ญ์„ฑ(temporal locality): ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ๋‹ค์‹œ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์„ฑ์งˆ
  • ์‹œ๊ฐ„์ง€์—ญ์„ฑ์„ ์ด์šฉํ•ด ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ ๊ฐ€์žฅ ์˜ค๋ž˜์ „์— ์ฐธ์กฐ๊ฐ€ ์ด๋ฃจ์–ด์ง„ ํŽ˜์ด์ง€๋ฅผ ์ซ“์•„๋‚ธ๋‹ค

4) LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜(Least Frequently Used)

  • ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€ ์ค‘์—์„œ ๊ณผ๊ฑฐ์— ์ฐธ์กฐ ํšŸ์ˆ˜(reference count)๊ฐ€ ๊ฐ€์žฅ ์ ์—ˆ๋˜ ํŽ˜์ด์ง€๋ฅผ ์ซ“์•„๋‚ด๊ณ  ๊ทธ ์ž๋ฆฌ์— ์ƒˆ๋กœ ์ฐธ์กฐ๋  ํŽ˜์ด์ง€๋ฅผ ์ ์žฌํ•œ๋‹ค
  • Incache-LFU: ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํ›„๋ถ€ํ„ฐ์˜ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ๋ฐฉ์‹
  • Perfect-LFU: ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๊ทธ ํŽ˜์ด์ง€์˜ ๊ณผ๊ฑฐ ์ด ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ๋ฐฉ์‹

5) ํด๋Ÿญ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Clock)

  • ํŽ˜์ด์ง€ ์ฐธ์กฐ ์‹œ๊ฐ ๋ฐ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” LRU, LFU์™€ ๋‹ฌ๋ฆฌ ํ•˜๋“œ์›จ์–ด์ ์ธ ์ง€์›์„ ํ†ตํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ธ ๋ฐฉ์‹
  • NUR(Not Used Recently) ๋˜๋Š” NRU(Not Recently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค
  • ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„๋“ค์˜ ์ฐธ์กฐ๋น„ํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐ์‚ฌํ•˜๋ฉด์„œ 0์ธ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค

 

3. ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„ ํ• ๋‹น

ํ• ๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜(allocation algorithm)

  • ๊ท ๋“ฑํ• ๋‹น(equal allocation): ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ๊ท ์ผํ•˜๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ๋น„๋ก€ํ• ๋‹น(proportional allocation): ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•œ ๊ท ๋“ฑํ• ๋‹น ๋ฐฉ์‹
  • ์šฐ์„ ์ˆœ์œ„ํ• ๋‹น(priority allocation): ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ๋‹ค๋ฅด๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹

 

4. ์ „์—ญ๊ต์ฒด์™€ ์ง€์—ญ๊ต์ฒด

๊ต์ฒดํ•  ํŽ˜์ด์ง€๋ฅผ ์„ ์ •ํ•  ๋–„, ๊ต์ฒด ๋Œ€์ƒ์ด ๋  ํ”„๋ ˆ์ž„์˜ ๋ฒ”์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ •ํ• ์ง€์— ๋”ฐ๋ผ ๊ต์ฒด ๋ฐฉ๋ฒ•์„ ์ „์—ญ๊ต์ฒด์™€ ์ง€์—ญ๊ต์ฒด๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

  • ์ „์—ญ๊ต์ฒด(global replacement)
    • ๋ชจ๋“  ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์ด ๊ต์ฒด ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
  • ์ง€์—ญ๊ต์ฒด(local replacement)
    • ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น๋œ ํ”„๋ ˆ์ž„ ๋‚ด์—์„œ๋งŒ ๊ต์ฒด ๋Œ€์ƒ์„ ์„ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

 

5. ์Šค๋ ˆ์‹ฑ(thrashing)

์Šค๋ ˆ์‹ฑ์ด๋ž€? 

์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๊บผ๋ฒˆ์— ์ ์žฌํ•˜์ง€ ๋ชปํ•ด ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ(page fault rate)์ด ์ƒ์Šนํ•˜๊ณ  CPU ์ด์šฉ๋ฅ (CPU utilization)์ด ๋–จ์–ด์ง€๋Š” ํ˜„์ƒ

 

MPD(multi-programming degree): ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜

 

MPD๋ฅผ ์ ์ ˆํžˆ ์กฐ์ ˆํ•ด CPU ์ด์šฉ๋ฅ ์„ ๋†’์ด๋Š” ๋™์‹œ์— ์Šค๋ ˆ์‹ฑ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์›Œํ‚น์…‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜(working-set algorithm)
    • ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ์„ ์ง€์—ญ์„ฑ ์ง‘ํ•ฉ(locality set)์ด๋ผ๊ณ  ํ•œ๋‹ค
    • ์›Œํ‚น์…‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋Ÿฌํ•œ ์ง€์—ญ์„ฑ ์ง‘ํ•ฉ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค
  • ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋นˆ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(page-fault frequency scheme)
    • ํŽ˜์ด์ง€์˜ ๋ถ€์žฌ์œจ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์กฐ์‚ฌํ•˜๊ณ  ์ด ๊ฐ’์— ๊ทผ๊ฑฐํ•ด์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•  ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•œ๋‹ค

 

 

 

 

 

๋Œ“๊ธ€