Skip to content

Latest commit

ย 

History

History
174 lines (122 loc) ยท 11.4 KB

Virtual_Memory1.md

File metadata and controls

174 lines (122 loc) ยท 11.4 KB

Virtual_Memory (1)

Demand Paging, Memory์— ์—†๋Š” Page์˜ Page Table, Page Fault

Page Replacement

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

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

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋”๋ผ๋„ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ• ์ด๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ์ปค๋„ ๋œ๋‹ค๋Š” ์ฃผ์š” ์žฅ์ ์ด ์žˆ๋‹ค.

๋ฐฐ๊ฒฝ

์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์˜ ์ „๋ถ€๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌ์‹œ์ผœ์•ผ ํ–ˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๋ณด๋‹ค ํฐ ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์—†์—ˆ๋‹ค.

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

์–ด๋–ป๊ฒŒ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์ด ๊ฐ€๋Šฅํ• ๊นŒ?

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

  • Memory ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
    • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ์ œ์•ฝ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.
  • ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
    • ์ด์— ๋”ฐ๋ผ ์‘๋‹ต์‹œ๊ฐ„์€ ์œ ์ง€๋˜๊ณ , CPU ์ด์šฉ๋ฅ ๊ณผ ์ฒ˜๋ฆฌ์œจ์€ ๋†’์•„์ง„๋‹ค.
  • I/O ์–‘์˜ ๊ฐ์†Œ
  • ๋น ๋ฅธ ์‘๋‹ต์‹œ๊ฐ„
    • swap์— ํ•„์š”ํ•œ ์ž…์ถœ๋ ฅ์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋œ๋‹ค.

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

๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„

  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋ชจ์Šต์„ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์— ๊ตฌํ˜„ํ•œ ๊ณต๊ฐ„์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ˜„์žฌ ์ง์ ‘์ ์œผ๋กœ ํ•„์š”์น˜ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉฐ ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ 100KB ๊ฐ€ ์š”๊ตฌ๋˜์—ˆ๋‹ค๊ณ  ํ•˜์ž. ํ•˜์ง€๋งŒ ์‹คํ–‰๊นŒ์ง€์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Heap์˜์—ญ, Stack ์˜์—ญ, ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ)์˜ ํ•ฉ์ด 40KB ๋ผ๋ฉด, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” 40KB ๋งŒ ์˜ฌ๋ผ๊ฐ€ ์žˆ๊ณ , ๋‚˜๋จธ์ง€ 60KB ๋งŒํผ์€ ํ•„์š”์‹œ์— ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์— ์š”๊ตฌํ•œ๋‹ค๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

stack free(60KB) Heap Data Code

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํŽ˜์ด์ง€ ๊ณต์œ 

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

  • ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์— ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž์‹ ์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ธ์‹ํ•˜์ง€๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋“ค์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๊ณต์œ ๋˜๊ณ  ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋˜ํ•œ, ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ์ž ์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์ฒ˜๋Ÿผ ์ธ์‹ํ•˜์ง€๋งŒ, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ณต์œ ๋˜๊ณ  ์žˆ๋‹ค.
  • fork()๋ฅผ ํ†ตํ•œ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€๋“ค์ด ๊ณต์œ ๋˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

Demanding Paging

์œ„์—์„œ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค๊ณ  ํ–ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋ถ„์€ ํŽ˜์ด์ง€ ๋‹จ์œ„์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ ํ˜„์žฌ ํ•„์š”ํ•œ(์š”๊ตฌ๋˜์–ด์ง€๋Š”) ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ Demanding Paging(์š”๊ตฌ ํŽ˜์ด์ง•) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Valid/Invalid bit์˜ ์‚ฌ์šฉ

  • Invalid์˜ ์˜๋ฏธ
    • ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฃผ์†Œ ์˜์—ญ์ธ ๊ฒฝ์šฐ
    • ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ
  • ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  page entry๊ฐ€ invalid๋กœ ์ดˆ๊ธฐํ™”
  • address translation(์ฃผ์†Œ ๋ณ€ํ™˜) ์‹œ์— invalid bit์ด set๋˜์–ด ์žˆ์œผ๋ฉด
    • page fault

virtaul_memory

๋งŒ์•ฝ CPU์—์„œ P1์˜ 3๋ฒˆ์งธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋Š”๋ฐ, valid bit ๊ฐ’์ด 0์ด๋ฉด CPU์— ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ฐœ์ƒํ•˜์—ฌ ์šด์˜์ฒด์ œ ๋‚ด๋ถ€์˜ ISR๋กœ ์ ํ”„ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋””์Šคํฌ ๋‚ด๋ถ€์˜ ํ”„๋กœ์„ธ์Šค P1์— ์žˆ๋Š” 3๋ฒˆ์งธ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

Page Fault

  • Invalid page๋กœ ์ ‘๊ทผํ•˜๋ฉด MMU๊ฐ€ trap์„ ๋ฐœ์ƒ์‹œํ‚ด (page fault trap)
  • Kernel mode๋กœ ๋“ค์–ด๊ฐ€์„œ page fault handler๊ฐ€ invoke๋จ
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ page fault๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    1. Invalid reference(์ž˜๋ชป๋œ ์š”์ฒญ์ธ์ง€ ํ™•์ธ)? (eg. bad address, protection violataion(์ ‘๊ทผ๊ถŒํ•œ์ด ์ž˜๋ชป๋œ๊ฒฝ์šฐ ๊ฐ•์ œ๋กœ abort ์‹œํ‚ด))
    2. Get an empty page frame(๋นˆ ํŽ˜์ด์ง€ ์—†์œผ๋ฉด ๋บ์–ด์˜จ๋‹ค.: replace)
    3. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ disk์—์„œ memory๋กœ ์ฝ์–ด์˜จ๋‹ค. (๋А๋ฆฐ ์ž‘์—…)
      1. disk I/O๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ์ด ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ์„ ์  ๋‹นํ•จ (๋บ๊ฒจ์„œ block ์ƒํƒœ๋กœ ๋ณ€ํ™˜)
      2. Disk read๊ฐ€ ๋๋‚˜๋ฉด page tables entry ๊ธฐ๋ก, valid/invalid bit์— "valid"๋กœ ๊ธฐ๋ก
      3. ready queue์— process๋ฅผ insert -> dispatch later
    4. ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์žก๊ณ  ๋‹ค์‹œ running
    5. ์•„๊นŒ ์ค‘๋‹จ๋˜์—ˆ๋˜ instruction์„ ์žฌ๊ฐœ

pageFault

์œ„ ๊ทธ๋ฆผ์€ page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์ด๋‹ค.

1. ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ valid bit๋ฅผ ํ™•์ธํ•œ๋‹ค.
2. valid bit๊ฐ€ 0์ด๋ผ๋ฉด CPU์— ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ์šด์˜์ฒด์ œ ๋‚ด๋ถ€ ํ•ด๋‹น ISR๋กœ ์ ํ”„ํ•œ๋‹ค.
3. ํ•ด๋‹น ISR์—์„œ backing store(๋””์Šคํฌ)๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€๋ฅผ ์ฐพ๋Š”๋‹ค.
4. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ๋น„์–ด์žˆ๋Š” ํ”„๋ ˆ์ž„์— ํ• ๋‹นํ•œ๋‹ค.
5. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹ ํ•œ๋‹ค. (ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ ์„ค์ •, valid bit 1๋กœ ์„ค์ •)
6. ๋‹ค์‹œ ๋ช…๋ น์–ด๋กœ ๋Œ์•„๊ฐ€์„œ ์‹คํ–‰ํ•œ๋‹ค. 

pure Demaning Paging

Pure Demanding Paging์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ดˆ๋กœ ์‹คํ–‰๋  ๋•Œ๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์•„๋ฌด ํŽ˜์ด์ง€๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ž๋งˆ์ž page fault๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฆ‰, ์ˆœ์ˆ˜ํ•˜๊ฒŒ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. Pure Demanding Paging์˜ ์žฅ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์ž‘๋ถ€ํ„ฐ page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์†๋„๋ฉด์—์„œ ๋А๋ฆฌ๋‹ค.

Preparing

Prepaging์€ pure demanding paging๊ณผ ๋ฐ˜๋Œ€๋Œ€๋Š” ๊ฐœ๋…์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ ํŒ๋‹จ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์˜ ์žฅ์ ์€ page fault๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ์ ์œผ๋ฏ€๋กœ ์†๋„๋ฉด์—์„œ ๋น ๋ฅด์ง€๋งŒ, ๋‹จ์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์˜ฌ๋ผ๊ฐ„ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋œ๋‹ค.

Swapping vs Demanding Paging

Swapping์™€ Demanding Paging์˜ ๊ณตํ†ต์ ์€ ๋‘˜ ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์™€ backing store ์‚ฌ์ด๋ฅผ ์„œ๋กœ ์˜ค๊ณ  ๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, Swapping์€ ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ์ด๋™ํ•˜๊ณ  Demanding Paging์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ด๋™ํ•˜๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

Performance of Demand Paging

  • Page Fault Rate 0 <= p <= 1.0
    • if p = 0 no page faults
    • if p = 1 every reference is a fault
  • Effective Access Time
    • = (1-p) x memory access
      • p(OS & HW page fault overhead
      • [swap page out if needed]
      • swap page in
    • OS & HW restart overhead)

page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

ํ˜„์‹ค์—์„œ๋Š” ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ(Locality of reference)๋กœ ์ธํ•ด ํŽ˜์ด์ง€ ๋ถ€์žฌ ํ™•๋ฅ ์€ ๋งค์šฐ ๋‚ฎ๋‹ค.

์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ(Locality of reference): ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์€ ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ๊ณผ ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ์„ ๊ฐ–๋Š”๋‹ค.

  • ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ: CPU๋Š” ์–ด๋А ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฝ์€ ํ›„, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๊ทธ ๊ณต๊ฐ„์„ ๋‹ค์‹œ ์ฝ์„ ํ™•๋ฅ ์ด ๋งค์šฐ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
    • ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋ฐ˜๋ณต๋ฌธ์ด ์žˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์€ ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๊ณต๊ฐ„์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ๋Š”๋‹ค.
  • ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ: CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฝ์„ ๋•Œ๋Š” ์ธ์ ‘ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ฝ๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ์€ ๋Œ€๋ถ€๋ถ„ ์ ˆ์ฐจ์ ์ธ ์ˆœ์„œ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ์ˆœ์„œ๋Œ€๋กœ ์ฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค

+) ์—ฌ๊ธฐ์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŽ˜์ด์ง€ ๋ถ€์žฌ์ผ ๋•Œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, backing store๋กœ HDD๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” SSD๋‚˜ ์ €๊ฐ€ DRAM๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

Free fram์ด ์—†๋Š” ๊ฒฝ์šฐ(๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ์ƒํ™ฉ)

  • Page replacement

    • ์–ด๋–ค frame์„ ๋นผ์•—์•„์˜ฌ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ
    • ๊ณง๋ฐ”๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ page๋ฅผ ์ซ’์•„๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Œ
    • ๋™์ผํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ซ’๊ฒจ๋‚ฌ๋‹ค๊ฐ€ ๋‹ค์‹œ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ
  • Replacement Algorithm

    • page fault rate๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ‰๊ฐ€
      • ์ฃผ์–ด์ง„ page reference string์— ๋Œ€ํ•ด page fault๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‚ด๋Š”์ง€ ์กฐ์‚ฌ
      • ex. reference string = 1,2,3,4,1,2,5,1,2,3,4,5

๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•

๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ธ ์ƒํ™ฉ์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ต์ฒด ํ๋ฆ„์ด๋‹ค.

  1. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค
  2. ๋นˆ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ์ฐพ๋Š”๋‹ค.
    1. ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํฌ์ƒ๋ (victim) ํŽ˜์ด์ง€๋ฅผ ๊ณ ๋ฅธ๋‹ค.
    2. ํฌ์ƒ๋  ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ณ , ๊ด€๋ จ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค.
  3. ์ƒˆ๋กญ๊ฒŒ ๋น„์›Œ์ง„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋‚ด ํ”„๋ ˆ์ž„์— ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์˜ค๊ณ , ํ”„๋ ˆ์ž„ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค.
  4. ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์žฌ์‹œ์ž‘

victim page(ํฌ์ƒ์–‘ ํŽ˜์ด์ง€)

victim page: backing store๋กœ page-out์ด ๋œ ํŽ˜์ด์ง€

๋งŒ์•ฝ victim page๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์˜ฌ๋ผ์˜จ ์ดํ›„์— ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋ฉด?

์ซ’์•„๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ page-out์ด ๋  ๋•Œ backing store์— ์“ฐ๊ธฐ(write) ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•œ๋‹ค.

backing store๋Š” ์ฝ๋Š” ์‹œ๊ฐ„๋„ ๋А๋ฆฌ์ง€๋งŒ, ๊ฑฐ๊ธฐ์— ๋”ํ•ด ์“ฐ๊ธฐ ์ž‘์—…๊นŒ์ง€ ํ•œ๋‹ค๋ฉด ๋”์šฑ ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ์•ˆ๋˜์—ˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— modified bit(=dirty bit)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋‹ค๋ฉด ์ด ๋น„ํŠธ๋ฅผ 1๋กœ ๋‘๊ณ , ์ˆ˜์ •๋˜์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ๋‘”๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด์„œ victim page๋Š” ์ตœ๋Œ€ํ•œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•œ๋‹ค.

modified

modified bit๋ฅผ ์ถ”๊ฐ€ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๋ชจ์Šต์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” 0, 2, 3๋ฒˆ 3๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ด ์ค‘์—์„œ๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?

์ฐธ๊ณ 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋… ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜

๋ฉด์ ‘ ์งˆ๋ฌธ

  1. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  1. page fault์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  1. demand paging์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค