Skip to content

Latest commit

ย 

History

History
82 lines (53 loc) ยท 3.64 KB

Virtual_Memory.md

File metadata and controls

82 lines (53 loc) ยท 3.64 KB

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

๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ธฐ์ˆ . 0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ž๊ธฐ ์ž์‹ ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„



Demanding Paging

Page ๋‹จ์œ„์—์„œ ํ˜„์žฌ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹

  • I/O ์–‘์˜ ๊ฐ์†Œ
  • Memory ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
  • ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„
  • ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ˆ˜์šฉ

Valid/Invalid bit

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

memory


Page Fault

CPU๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ invalid bit๊ฐ€ set ๋ผ์žˆ๋Š” ๊ฒฝ์šฐ

  1. ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ valid bit๋ฅผ ํ™•์ธํ•œ๋‹ค.
  2. invalid bit๊ฐ€ set๋œ ๊ฒฝ์šฐ๋ผ๋ฉด CPU์— ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ์šด์˜์ฒด์ œ ๋‚ด๋ถ€ ํ•ด๋‹น ISR๋กœ ์ ํ”„ํ•œ๋‹ค.
    1. invalid reference?(ex. bad address, protection violation) -> abort process.
    2. ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ๋น„์–ด์žˆ๋Š” ํ”„๋ ˆ์ž„์— ํš๋“ํ•œ๋‹ค. (๋น„์–ด์žˆ๋Š” ํ”„๋ ˆ์ž„์ด ์—†์œผ๋ฉด ๋บ์–ด์˜จ๋‹ค.:replace)
    3. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ backing store(๋””์Šคํฌ)์—์„œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฝ์–ด์˜จ๋‹ค.
      • disk I/O๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ์ด ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ preempt ๋‹นํ•œ๋‹ค.(block)
      • Disk read๊ฐ€ ๋๋‚˜๋ฉด page tables entry๋ฅผ ๊ธฐ๋กํ•˜๊ณ  valid/invalid bit๋ฅผ 'valid'๋กœ ์„ค์ •ํ•œ๋‹ค.
      • ready queue์— process๋ฅผ insert
    4. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์žก๊ณ  ๋‹ค์‹œ running
    5. ์•„๊นŒ ์ค‘๋‹จ๋˜์—ˆ๋˜ instruction์„ ์žฌ๊ฐœํ•œ๋‹ค.

pageFault


  • Pure Demanding Paging

Pure Demanding Paging์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ดˆ๋กœ ์‹คํ–‰๋  ๋•Œ๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์•„๋ฌด ํŽ˜์ด์ง€๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ž๋งˆ์ž page fault๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฆ‰, ์ˆœ์ˆ˜ํ•˜๊ฒŒ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

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


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

  • Page replacement

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

    replacement


  • Replacement Algorithm

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

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

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

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

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

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