Home ๐Ÿ’พ [Operating System] Virtual Memory ๐Ÿ’พ
Post
Cancel

๐Ÿ’พ [Operating System] Virtual Memory ๐Ÿ’พ

๐Ÿ’พ Swapping

Swapping์ด๋ž€ ํ˜„์žฌ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” Process๋“ค์„ ์ž„์‹œ๋กœ Swap Space๋กœ ์ซ“์•„๋‚ด๊ณ , ์ซ“์•„๋‚ด๊ณ  ์ƒ๊ธด ๋นˆ ๊ณต๊ฐ„์— ๋˜ ๋‹ค๋ฅธ Process๋ฅผ ์ ์žฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Swapping์„ ์‚ฌ์šฉํ•˜๋ฉด ์ œํ•œ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๋งŽ์€ Process๋“ค์„ ์ ์žฌํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Swap Sapce: ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ ์ผ๋ถ€ ์˜์—ญ
  • Swap-Out: ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” Process๋ฅผ Swap Space๋กœ ์ซ“์•„๋‚ด๋Š” ๊ณผ์ •
  • Swap-In: Swap Space์— ์žˆ๋Š” Process๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๊ณผ์ •

๐Ÿ’พ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ํ•˜๋‚˜์˜ Process๋ฅผ ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์—๋Š” ๋‹ค์Œ์˜ $3$๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ตœ์ดˆ ์ ํ•ฉ(First Fit): ์ตœ์ดˆ๋กœ ๋ฐœ๊ฒฌํ•œ ์ ์žฌ ๊ฐ€๋Šฅํ•œ ๋นˆ ๊ณต๊ฐ„์— Process๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹
  • ์ตœ์  ์ ํ•ฉ(Best Fit): OS๊ฐ€ ๋นˆ ๊ณต๊ฐ„์„ ๊ฒ€์ƒ‰ํ•ด ๋ณธ ํ›„, Process๊ฐ€ ์ ์žฌ๋  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ณต๊ฐ„์— Process๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹
  • ์ตœ์•… ์ ํ•ฉ(Worst Fit): OS๊ฐ€ ๋นˆ ๊ณต๊ฐ„์„ ๊ฒ€์ƒ‰ํ•ด ๋ณธ ํ›„, Process๊ฐ€ ์ ์žฌ๋  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ณต๊ฐ„์— Process๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹

๐Ÿ’พ External Fragmentation

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

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

์ด๋Ÿฌํ•œ ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ์•ˆ์œผ๋กœ ์••์ถ•(Compaction)ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์กฐ์ฐจ๋„ ์••์ถ•ํ•˜๋Š” ๋™์•ˆ ์‹œ์Šคํ…œ์ด ํ•˜๋˜ ์ผ์„ ์ค‘์ง€ํ•ด์•ผ ํ•˜๊ณ  Process๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ Overhead๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ Process๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’พ Virtual Memory

Virtual Memory๋ž€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” Program์˜ ์ผ๋ถ€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜์—ฌ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋” ํฐ Process๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

Virtual Memory ๊ธฐ๋ฒ•์—๋Š” ํฌ๊ฒŒ Paging๊ณผ Segmentation์ด ์žˆ๊ณ  ํ˜„๋Œ€ ๋Œ€๋ถ€๋ถ„์˜ OS์—์„œ๋Š” Paging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ Paging

Paging์ด๋ž€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ Frame ๋‹จ์œ„๋กœ ์ž๋ฅด๊ณ  Process์˜ ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ Page ๋‹จ์œ„๋กœ ์ž๋ฅธ ๋’ค ๊ฐ Page๋ฅผ Frame์— ํ• ๋‹นํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Paging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ธฐ๋ฒ•์˜ ๋‹จ์ ์ธ ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ Process๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ ๋‹จ์ 
์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ ํ•ด๊ฒฐ๋‚ด๋ถ€ ๋‹จํŽธํ™”
๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ Process๋ฅผ ์‹คํ–‰Process์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด์„œ Page Table์˜ ํฌ๊ธฐ๋„ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— Page Table์„ ๋ชจ๋‘ ์˜ฌ๋ ค๋‘๋Š” ๊ฒƒ์€ ๋‚ญ๋น„
(Hierarchical Paging์„ ํ†ตํ•ด ํ•ด๊ฒฐ)
Process ๊ฐ„ Page๋ฅผ ๊ณต์œ (Ex. Copy on Write)ย 

๋‚ด๋ถ€ ๋‹จํŽธํ™”: Process์˜ ํฌ๊ธฐ๊ฐ€ Page์˜ ํฌ๊ธฐ๋กœ ์ •ํ™•ํžˆ ๋‚˜๋ˆ ์ง€์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ํ˜„์ƒ

๐Ÿ’พ Page Table

Process๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ CPU๊ฐ€ ํ•ด๋‹น Process๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ˆœ์„œ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CPU๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ์ฃผ์†Œ์ธ ๋…ผ๋ฆฌ ์ฃผ์†Œ์—๋Š” ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์น˜๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Paging ๊ธฐ๋ฒ•์—์„œ๋Š” Page Table์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, CPU๋Š” Page Table์˜ Page Number๋งŒ ๋ณด๊ณ  ํ•ด๋‹น Page๊ฐ€ ์ ์žฌ๋œ Frame์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Process๋งˆ๋‹ค Page Table์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ฐ Process์˜ Page Table์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ ์žฌ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋Š” PTBR(Page Table Base Register)์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด Page Table์˜ ์ผ๋ถ€๋ฅผ TLB(Translation Lookaside Buffer)์— ์ €์žฅํ•˜๊ณ  CPU ๊ณ์— ๋‘์–ด Page Table์˜ Cache ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ Page Table Entry

Page Table Enetry์—๋Š” Page Number์™€ Frame Number ๋ฟ ์•„๋‹ˆ๋ผ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

BitDefinitionBit๊ฐ€ 1์ธ ๊ฒฝ์šฐBit๊ฐ€ 0์ธ ๊ฒฝ์šฐ
์œ ํšจ ๋น„ํŠธ(Valid Bit)ํ•ด๋‹น Page๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” BitPage๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐPage๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ
๋ณดํ˜ธ ๋น„ํŠธ(Protection Bit)Page์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์„ ์ œํ•œํ•˜์—ฌ Page๋ฅผ ๋ณดํ˜ธํ•˜๋Š” Bit์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ Page์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ Page
์ฐธ์กฐ ๋น„ํŠธ(Reference Bit)CPU๊ฐ€ Page์— ์ ‘๊ทผํ•œ ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” BitCPU๊ฐ€ Page์— ์ ‘๊ทผํ•œ ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐCPU๊ฐ€ Page์— ์ ‘๊ทผํ•œ ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ
์ˆ˜์ • ๋น„ํŠธ(Modified Bit, Dirty Bit)ํ•ด๋‹น Page๊ฐ€ ์ˆ˜์ •๋œ ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” BitPage์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ด ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐPage์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ด ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ

๐Ÿ’พ Demand Paging

Demand Paging(์š”๊ตฌ ํŽ˜์ด์ง•)์ด๋ž€ Process๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•  ๋•Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  Page๋ฅผ ์ ์žฌํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ Page๋งŒ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

Demand Paging์˜ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. CPU๊ฐ€ ํŠน์ • Page์— ์ ‘๊ทผํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰
  2. ํ•ด๋‹น Page๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธ
    • ํ•ด๋‹น Page๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ CPU๋Š” Page๊ฐ€ ์ ์žฌ๋œ Frame์— ์ ‘๊ทผ
    • ํ•ด๋‹น Page๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ Page Fault ๋ฐœ์ƒ
  3. Page Fault ์ฒ˜๋ฆฌ: ํ•ด๋‹น Page๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ ์žฌํ•˜๊ณ  Valid Bit๋ฅผ 1๋กœ ์„ค์ •
  4. ๋‹ค์‹œ 1๋ฒˆ ์ˆ˜ํ–‰

Demand Paging ๊ธฐ๋ฒ•์„ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด Page Replacement Algorithm์„ ๊ฒฐ์ •ํ•˜๊ณ  Frame Allocation์„ ์ž˜ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ Page Replacement Algorithm

Page Replacement Algorithm์ด๋ž€ ๊ฐ€๋“์ฐฌ ๋ฉ”๋ชจ๋ฆฌ์—์„œ Page Out์„ ํ•  Page๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Page Fault๋ฅผ ๊ฐ€์žฅ ์ ๊ฒŒ ์ผ์œผํ‚ค๋Š” Page Replacement Algorithm์„ ์ข‹์€ Algorithm์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Page Fault ํšŸ์ˆ˜๋Š” Page Reference String์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰ Page Reference String์„ ํ†ตํ•ด Page Replacement Algorithm์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Page Reference String(ํŽ˜์ด์ง€ ์ฐธ์กฐ์—ด): CPU๊ฐ€ ์ฐธ์กฐํ•˜๋Š” Page๋“ค ์ค‘ ์—ฐ์†๋œ Page๋ฅผ ์ƒ๋žตํ•œ Page String

์—ฐ์†๋œ Page๋ฅผ ์ƒ๋žตํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ์—ฐ์†๋œ Page๋Š” Page Fault๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Page Replacement Algorithm์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Page Replacement AlgorithmDefinition
FIFO(First-In First-Out)์ ์žฌ๋œ Page ์ˆœ์„œ๋Œ€๋กœ ๊ต์ฒดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
Second Chance์ฐธ์กฐ ๋น„ํŠธ๊ฐ€ $1$์ธ ๊ฒฝ์šฐ ์ฐธ์กฐ ๋น„ํŠธ๋ฅผ $0$์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์ ์žฌ ์‹œ๊ฐ„์„ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํ•œ ๋ฒˆ ๋” ๊ธฐํšŒ๋ฅผ ์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ฆ˜
LRU(Least Recently Used)๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ Page๋ฅผ ๊ต์ฒดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
OptimalCPU์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๊ต์ฒดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
(๊ตฌํ˜„์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— OS์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ Page Algorithm์˜ ์ด๋ก ์ƒ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ)

๐Ÿ’พ Frame Allocation

๋งŒ์•ฝ Frame์˜ ์ˆ˜๊ฐ€ ์ ์–ด์„œ Page Fault๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์—ฌ Process๊ฐ€ ์‹ค์ œ ์‹คํ–‰๋˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค Paging์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•ด๋˜๋Š” Thrashing์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Thrashing: ์ง€๋‚˜์น˜๊ฒŒ ๋นˆ๋ฒˆํ•œ Page Replacement๋กœ ์ธํ•ด CPU ์ด์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง€๋Š” ๋ฌธ์ œ

Frame Allocation ๋ฐฉ์‹์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Frame AllocatioDefinition
Static AllocationProcess์˜ ์‹คํ–‰ ๊ณผ์ •์€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ Process์˜ ํฌ๊ธฐ์™€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋งŒ ๊ณ ๋ คํ•˜๋Š” ๋ฐฉ์‹
Equal Allocation๋ชจ๋“  Process๋“ค์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ Frame์„ ํ• ๋‹นํ•ด์ฃผ๋Š” ๋ฐฉ์‹
Proportional AllocationProcess์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ Frame์„ ํ• ๋‹นํ•ด์ฃผ๋Š” ๋ฐฉ์‹
Dynamic AllocationProcess๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ• ๋‹นํ•  Frame์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹
Working Set Modelํ•ด๋‹น Process์— Working Set๋งŒํผ์˜ Frame์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•ด์ฃผ๋Š” ๋ฐฉ์‹
PFF(Page-Fault Frequency)ํŽ˜์ด์ง€ ํดํŠธ์œจ์— ์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์„ ์ •ํ•˜๊ณ  ํŽ˜์ด์ง€ ํดํŠธ์œจ์ด ์ƒํ•œ์„ ๋ณด๋‹ค ๋†’์œผ๋ฉด Frame์„ ๋” ํ• ๋‹นํ•˜๊ณ  ํ•˜ํ•œ์„ ๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด Frame์„ ํšŒ์ˆ˜ํ•˜๋Š” ๋ฐฉ์‹

Working Set(์ž‘์—… ์ง‘ํ•ฉ): ์‹คํ–‰ ์ค‘์ธ Process๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐํ•œ Page์˜ ์ง‘ํ•ฉ

๐Ÿ’พ Degree Of Multiprogramming๊ณผ Thrashing

Degree Of Multiprogramming์ด๋ž€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” Process์˜ ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

Degree Of Multiprogramming์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด CPU ์ด์šฉ๋ฅ ์„ ๋†’์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” Prcoess์˜ ์ˆ˜๊ฐ€ ์–ด๋Š ์ •๋„ ์ฆ๊ฐ€ํ•˜๋ฉด CPU ์ด์šฉ๋ฅ ์ด ๋†’์•„์ง€์ง€๋งŒ, ํ•„์š” ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฌ๋ฉด ๊ฐ Process๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Frame์˜ ์ˆ˜๊ฐ€ ์ ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— Page Fault๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— Thrashing์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Thrashing์ด ๋ฐœ์ƒํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ์ด์œ ๋Š” ๊ฐ Process๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ Frame์˜ ์ˆ˜๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Thrashing์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก OS๋Š” ๊ฐ Process๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ Frame์˜ ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ Process๋“ค์—๊ฒŒ ์ ์ ˆํ•œ ์ˆ˜ ๋งŒํผ Frame์„ ํ• ๋‹นํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

๐Ÿ’พ [Operating System] Deadlock ๐Ÿ’พ

๐Ÿ’พ [Operating System] File System ๐Ÿ’พ