๐Ÿ‘€ ๋…ผ๋ฆฌ์  ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ

  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋‚˜๋‰œ๋‹ค.

  • Logical address (= virtual address)
    • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค 0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘
    • CPU๊ฐ€ ๋ณด๋Š” ์ฃผ์†Œ๋Š” logical address์ž„
    • ์™œ๋ƒ๋ฉด ์ฝ”๋“œ์ƒ์˜ ์ฃผ์†Œ๊ฐ€ logical address์ธ๋ฐ ์ด๊ฒŒ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ฐ”๋€๋‹ค ํ•ด์„œ ์ฝ”๋“œ์ƒ์˜ ์ฃผ์†Œ๋„ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ฐ”๋€๋‹ค๋ฉด ์ปดํŒŒ์ผ์„ ์ƒˆ๋กœ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋Ÿฌ๋ฉด ์ด์ƒํ•˜๋‹ค. ๊ทธ๋ž˜์„œ CPU๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์ฐธ๊ณ ํ•˜๊ฒŒ ๋œ๋‹ค.
  • Physical address
    • ๋ฉ”๋ชจ๋ฆฌ์— ์‹ค์ œ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ์œ„์น˜
  • CPU๊ฐ€ instruction์„ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.
  • ์ด๋•Œ ์ฝ”๋“œ์— ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๊ฐ€ ํ•ญ์ƒ ๋ช…์‹œ๋˜์–ด ์žˆ์–ด์„œ ๋ฐ”๋กœ ๊ทธ ์œ„์น˜๋กœ ๊ฐ€์„œ ์ฝ์–ด์˜ค๋ฉด ์„œ๋กœ ํŽธํ•˜๊ฒ ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ปดํ“จํ„ฐ์™€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ํ•ญ์ƒ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ฝ”๋“œ์—๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ์ „์šฉ ์ฃผ์†Œ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ๊ทธ ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์‹ค์ œ๋กœ ์˜ฌ๋ ค์ ธ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์œผ๋ฉด ๋จผ์ € ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ํ•ด๋‹น ์œ„์น˜์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ(Address Binding)

  • ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
  • ํ•˜์ง€๋งŒ ์ฃผ์†Œ๋ณ€ํ™˜์€ CPU๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ์ฃผ์†Œ๋ณ€ํ™˜์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค CPU๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๊ทธ ๋•Œ๋งˆ๋‹ค interrupt๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋  ๊ฒƒ์ด๊ณ  ๊ทธ๊ฑด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋‹ค.

์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ ์‹œ์ ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • Compile time binding
    • ์ปดํŒŒ์ผ๋  ๋•Œ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.
    • ์‹œ์ž‘์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์žฌ์ปดํŒŒ์ผ
    • ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ ˆ๋Œ€ ์ฝ”๋“œ(absolute code) ์ƒ์„ฑ
    • ์˜›๋‚ ์— ๋งŽ์ด ์“ฐ๋‹ค๊ฐ€ ์ง€๊ธˆ์€ ์ž˜ ์•ˆ ์“ด๋‹ค.
  • Load time binding
    • Loader์˜ ์ฑ…์ž„ํ•˜์— ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋ถ€์—ฌ
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.
    • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ ์ฝ”๋“œ(relocatable code)๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ ๊ฐ€๋Šฅ
  • Execution time binding (= Run time binding)
    • ์ˆ˜ํ–‰์ด ์‹œ์ž‘๋œ ์ดํ›„์—๋„ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒ ์œ„์น˜๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • CPU๊ฐ€ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋งˆ๋‹ค binding ์ ๊ฒ€ (address mapping table)
    • ํ•˜๋“œ์›จ์–ด์—์„œ ์ง€์›ํ•ด์•ผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ตœ๊ทผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

Memory-Management Unit (MMU)

  • ์ฃผ์†Œ ๋ณ€ํ™˜์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด
  • ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋งคํ•‘ํ•ด ์ค€๋‹ค.
  • ์‹ค์ œ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ์˜ ์‹œ์ž‘์ ์—์„œ ๋…ผ๋ฆฌ์  ์ฃผ์†Œ์˜ offset๋งŒํผ์„ ๋”ํ•ด์„œ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  • Limit register : ๋งŒ์•ฝ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๊ธฐ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ์š”๊ตฌํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๋จผ์ € ์ œํ•œํ•ด๋†“๊ณ  ๊ทธ ๋ฒ”์œ„ ์•ˆ์—์„œ๋งŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋กœ๋“œ ๊ธฐ๋ฒ•๋“ค

Dynamic Loading

  • ํ”„๋กœ์„ธ์Šค ์ „์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฏธ๋ฆฌ ๋‹ค ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ฃจํ‹ด์ด ๋ถˆ๋ ค์งˆ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— loadํ•˜๋Š” ๊ฒƒ
  • memory utilization์ด ํ–ฅ์ƒ๋จ
  • ๊ฐ€๋”์”ฉ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์ด ํ•œ์ •์ ์ธ๋ฐ ์ „์ฒด๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ๋น„ํšจ์œจ์ ์ด๋‹ค.
    • ์˜ˆ : ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด
  • ์šด์˜์ฒด์ œ์˜ ํŠน๋ณ„ํ•œ ์ง€์› ์—†์ด ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์—์„œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ (OS๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ง€์› ๊ฐ€๋Šฅ)

Dynamic Linking

  • Linking์„ ์‹คํ–‰์‹œ๊ฐ„(execution time)`๊นŒ์ง€ ๋ฏธ๋ฃจ๋Š” ๊ธฐ๋ฒ•
  • Static linking
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํŒŒ์ผ ์ฝ”๋“œ์— ํฌํ•จ๋จ
    • ์‹คํ–‰ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง
    • ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธด๋‹ค.(์˜ˆ: printfํ•จ์ˆ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ)
  • Overlays
    • ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค์˜ ๋ถ€๋ถ„ ์ค‘ ์‹ค์ œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ์„ ์˜ฌ๋ฆผ
    • ์ด๋ ‡๊ฒŒ ๋ณด๋ฉด Dynamic loading๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ˆ˜์ž‘์—…์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋‹ค๋ฅด๋‹ค. ์ž‘์€ ๊ณต๊ฐ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ดˆ์ฐฝ๊ธฐ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค.
    • ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํด ๋•Œ ์œ ์šฉ
    • ์šด์˜์ฒด์ œ์˜ ์ง€์› ์—†์ด ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๊ตฌํ˜„
  • Dynamic linking
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹คํ–‰์‹œ ์—ฐ๊ฒฐ๋œ๋‹ค.
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธ์ถœ ๋ถ€๋ถ„์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํ‹ด์˜ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ stub์ด๋ผ๋Š” ์ž‘์€ ์ฝ”๋“œ๋ฅผ ๋‘”๋‹ค.
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์œผ๋ฉด ๊ทธ ๋ฃจํ‹ด์˜ ์ฃผ์†Œ๋กœ ๊ฐ€๊ณ  ์—†์œผ๋ฉด ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜ด
    • ์šด์˜์ฒด์ œ์˜ ๋„์›€ ํ•„์š”
  • Swapping
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ backing store(ํ•˜๋“œ๋””์Šคํฌ)๋กœ ์ซ“์•„๋‚ด๋Š” ๊ฒƒ
    • Backing store : ๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ด์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ณ  ํฐ ์ €์žฅ ๊ณต๊ฐ„
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ(swapper)์— ์˜ํ•ด swap in/out๋  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ ์ •๋œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ swap์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
    • Compile time ํ˜น์€ load time binding์—์„œ๋Š” ์›๋ž˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋กœ swap inํ•ด์•ผ ํ•จ
    • Execution time binding์—์„œ๋Š” ์ถ”ํ›„ ๋นˆ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์•„๋ฌด ๊ณณ์—๋‚˜ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • swap time์€ ๋Œ€๋ถ€๋ถ„ transfer time(swap๋˜๋Š” ์–‘์— ๋น„๋ก€ํ•˜๋Š” ์‹œ๊ฐ„)์ด๋‹ค.

Allocation of Physical Memory

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์‚ฌ์šฉ๋œ๋‹ค.

  • OS ์ƒ์ฃผ ์˜์—ญ : interrupt vector์™€ ํ•จ๊ป˜ ๋‚ฎ์€ ์ฃผ์†Œ ์˜์—ญ ์‚ฌ์šฉ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์˜์—ญ : ๋†’์€ ์ฃผ์†Œ ์˜์—ญ ์‚ฌ์šฉ

์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์˜์—ญ์˜ ํ• ๋‹น ๋ฐฉ๋ฒ•

  • Contiguous allocation
    • ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ์ ์žฌ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • Noncontiguous allocation
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์— ๋ถ„์‚ฐ๋˜์–ด ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    • ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ

Contiguous Allocation

  • ๊ณ ์ •๋ถ„ํ•  (Fixed partition) ๋ฐฉ์‹
    • ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ช‡ ๊ฐœ์˜ ์˜๊ตฌ์  ๋ถ„ํ• ๋กœ ๋‚˜๋ˆ”
    • ๋ถ„ํ• ์˜ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฐฉ์‹๊ณผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹ ์กด์žฌ
    • ๋ถ„ํ• ๋‹น ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์ ์žฌ
    • ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๊ฐ€ ๊ณ ์ •๋จ
    • ์ตœ๋Œ€ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ ์ œํ•œ
    • internal fragmentation(๋‚ด๋ถ€ ์กฐ๊ฐ), external fragmentation(์™ธ๋ถ€ ์กฐ๊ฐ) ๋ฐœ์ƒ
  • ๊ฐ€๋ณ€๋ถ„ํ•  (Variable partition) ๋ฐฉ์‹
    • ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ํ• ๋‹น
    • ๋ถ„ํ• ์˜ ํฌ๊ธฐ, ๊ฐœ์ˆ˜๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•จ
    • ๊ธฐ์ˆ ์  ๊ด€๋ฆฌ ๊ธฐ๋ฒ• ํ•„์š”
    • external fragmentation(์™ธ๋ถ€ ์กฐ๊ฐ) ๋ฐœ์ƒ
  • External fragmentation(์™ธ๋ถ€ ์กฐ๊ฐ)
    • ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ๋ณด๋‹ค ๋ถ„ํ•  ํฌ๊ธฐ๊ฐ€ ์ž‘์„ ๋•Œ ์ƒ๊น€
    • ์•„๋ฌด ํ”„๋กœ๊ทธ๋žจ์—๋„ ๋ฐฐ์ •๋˜์ง€ ์•Š์€ ๋นˆ ๊ณต๊ฐ„์ด์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์—†๋Š” ์ž‘์€ ๊ณต๊ฐ„
  • Internal fragmentation(๋‚ด๋ถ€ ์กฐ๊ฐ)
    • ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ๋ณด๋‹ค ๋ถ„ํ•  ํฌ๊ธฐ๊ฐ€ ๊ธ€ ๋•Œ ์ƒ๊น€
    • ํ•˜๋‚˜์˜ ๋ถ„ํ•  ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ
    • ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์— ๋ฐฐ์ •๋˜์—ˆ์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„
  • Hole
    • ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
    • ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ hole๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ ธ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์ˆ˜์šฉ๊ฐ€๋Šฅํ•œ hole์„ ํ• ๋‹น
    • ์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ์˜ ์ •๋ณด ์œ ์ง€ - ํ• ๋‹น๊ณต๊ฐ„, ๊ฐ€์šฉ๊ณต๊ฐ„
  • Dynamic Storage-Allocation Problem
    • ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์—์„œ size = n ์ธ ์š”์ฒญ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์ ์ ˆํ•œ hole์„ ์ฐพ๋Š” ๋ฌธ์ œ

    • First-fit
      • ์‚ฌ์ด์ฆˆ๊ฐ€ n ์ด์ƒ์ธ ๊ฒƒ ์ค‘ ์ตœ์ดˆ๋กœ ์ฐพ์•„์ง€๋Š” hole์— ํ• ๋‹น
    • Best-fit
      • ์‚ฌ์ด์ฆˆ๊ฐ€ n ์ด์ƒ์ธ ๊ฐ€์žฅ ์ž‘์€ hole์„ ์ฐพ์•„์„œ ํ• ๋‹น
      • hole๋“ค์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ํฌ๊ธฐ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ชจ๋“  hole ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•จ
      • ๋งŽ์€ ์ˆ˜์˜ ์•„์ฃผ ์ž‘์€ hole๋“ค์ด ์ƒ์„ฑ๋จ
    • Wost-fit
      • ๊ฐ€์žฅ ํฐ hole์— ํ• ๋‹น
      • ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•จ
      • ์ƒ๋Œ€์ ์œผ๋กœ ์•„์ฃผ ํฐ hole๋“ค์ด ์ƒ์„ฑ๋จ
    • First-fit๊ณผ Best-fit์ด Wost-fit๋ณด๋‹ค ์†๋„์™€ ๊ณต๊ฐ„ ์ด์šฉ๋ฅ  ์ธก๋ฉด์—์„œ ํšจ๊ณผ์ 
  • Compaction
    • external fragmentation(์™ธ๋ถ€ ์กฐ๊ฐ) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
    • ์‚ฌ์šฉ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ•œ ๊ตฐ๋ฐ๋กœ ๋ชฐ๊ณ  hole๋“ค์„ ๋‹ค๋ฅธ ํ•œ ๊ณณ์œผ๋กœ ๋ชฐ์•„ ํฐ block์„ ๋งŒ๋“œ๋Š” ๊ฒƒ
    • ์ด๋ ‡๊ฒŒ ๋ณด๋ฉด Windows์˜ ๋””์Šคํฌ ์กฐ๊ฐ ๋ชจ์Œ๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๋””์Šคํฌ ๋ชจ์Œ์€ ๋””์Šคํฌ์— ์žˆ๋Š” ์กฐ๊ฐ๋“ค์„ ๋ชจ์œผ๋Š” ๊ฒƒ์ธ๋ฐ ๋ฐ˜ํ•ด Compaction์€ ์‹คํ–‰ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์กฐ๊ฐ๋“ค์„ ๋ชจ์œผ๋Š” ๊ฒƒ์ด๋ผ๋Š” ์ ์—์„œ ๋‹ค๋ฅด๋‹ค.
    • ๋น„์šฉ์ด ๋งค์šฐ ๋งŽ์ด ๋“ ๋‹ค.
    • ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ด๋™์œผ๋กœ Compactionํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค.
    • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋™์ ์œผ๋กœ ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ๋ฐ”์ธ๋”ฉ์ด ์ง€์›๋  ๋•Œ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Paging

  • ํ”„๋กœ์„ธ์Šค์˜ virtual memory๋ฅผ ๋™์ผํ•œ ์‚ฌ์ด์ฆˆ์˜ page๋กœ ๋‚˜๋ˆˆ๋‹ค.
  • virtual memory์˜ ๋‚ด์šฉ์ด page ๋‹จ์œ„๋กœ ๋น„์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.
  • ์ผ๋ถ€๋Š” backing storage์—, ์ผ๋ถ€๋Š” physical memory์— ์ €์žฅ
  • ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋…ผ๋ฆฌ์  - ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ ๋งคํ•‘ ์ •๋ณด(ํŽ˜์ด์ง• ํ…Œ์ด๋ธ”)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • physical memory๋ฅผ ๋™์ผํ•œ ํฌ๊ธฐ์˜ frame์œผ๋กœ ๋‚˜๋ˆ”
  • logical memory๋ฅผ ๋™์ผ ํฌ๊ธฐ์˜ page๋กœ ๋‚˜๋ˆ”(frame๊ณผ ๊ฐ™์€ ํฌ๊ธฐ)
  • ๋ชจ๋“  ๊ฐ€์šฉ frame๋“ค์„ ๊ด€๋ฆฌ
  • page table์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ฐ”๊พผ๋‹ค.
  • ์™ธ๋ถ€์กฐ๊ฐ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ํŽ˜์ด์ง•ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋งˆ์ง€๋ง‰ ์กฐ๊ฐ์€ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€์กฐ๊ฐ์€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด TLB(Translation Look-aside Buffer)๋ผ๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ผ์ข…์˜ ์บ์‹œ๋กœ ๋…ผ๋ฆฌ์  - ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ ์Œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ํŽ˜์ด์ง€ ๊ฐฏ์ˆ˜๋งŒํผ ํŽ˜์ด์ง• ํ…Œ์ด๋ธ”์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐ„์ด ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค.

Two-Level Page Table

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

Memory Protection

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๊ฐ entry๋งˆ๋‹ค bit๋ฅผ ๋‘”๋‹ค.

  • Protection bit
    • ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ ์„ค์ •(read/write/read-only ๋“ฑ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ)
  • Valid-invalid bit
    • valid : ํ•ด๋‹น ์ฃผ์†Œ์˜ frame์— ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์œ ํšจํ•œ ๋‚ด์šฉ์ด ์žˆ์Œ์„ ๋œปํ•จ(์ ‘๊ทผ ํ—ˆ์šฉ)
    • invalid : ํ•ด๋‹น ์ฃผ์†Œ์˜ frame์— ์œ ํšจํ•œ ๋‚ด์šฉ์ด ์—†์Œ (์ ‘๊ทผ ๋ถˆํ—ˆ)
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ทธ ์ฃผ์†Œ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
      • ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š๊ณ  swap area์— ์žˆ๋Š” ๊ฒฝ์šฐ

Inverted Page Table

  • ํŽ˜์ด์ง€ ๊ฐฏ์ˆ˜๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์ปค์ง€๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์—ฌ๋ณด๋ ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”
  • ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋‘๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„ ํ•˜๋‚˜๋‹น ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜์˜ entry๋ฅผ ๋‘” ๊ฒƒ
  • ๊ฐ page table entry๋Š” ๊ฐ๊ฐ์˜ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ page frame์ด ๋‹ด๊ณ  ์žˆ๋Š” ๋‚ด์šฉ ํ‘œ์‹œ
  • ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Shared Page

  • Shared code
    • ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋Š” read-only๋กœ ํ•œ frame์—๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ
    • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ logical address space์—์„œ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•จ
  • Private code and data
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋…์ž์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆผ
    • private data๋Š” logical address space ์•„๋ฌด ๊ณณ์— ์™€๋„ ๋ฌด๋ฐฉํ•จ

Segmentation

  • ํ”„๋กœ๊ทธ๋žจ์€ ์˜๋ฏธ ๋‹จ์œ„์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ segment๋กœ ๊ตฌ์„ฑ
  • ์ž‘๊ฒŒ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ํ•จ์ˆ˜ ํ•˜๋‚˜ํ•˜๋‚˜์—์„œ ํฌ๊ฒŒ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๊นŒ์ง€๋„ ๊ฐ€๋Šฅ
  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” code, data, stack ๋ถ€๋ถ„์ด ํ•˜๋‚˜์”ฉ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ •์˜๋จ
    • main(), function, global variables, stack, symbol table, arrays
  • ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋Š” segment-number, offest ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ์„ธ๊ทธ๋จผํŠธ๋ณ„ ์ฃผ์†Œ ๋ณ€ํ™˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” segment table์ด ํ•„์š”ํ•˜๋‹ค.
  • segment-number๋กœ๋ถ€ํ„ฐ offest๋งŒํผ ๋–จ์–ด์ง„ ์œ„์น˜์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹
  • ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋ณ„๋กœ protection bit ์„ค์ •ํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.
  • ์˜๋ฏธ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ ์™€ ๋ณด์•ˆ์— ์žˆ์–ด ํŽ˜์ด์ง• ๊ธฐ๋ฒ•๋ณด๋‹ค ํ›จ์”ฌ ํšจ๊ณผ์ ์ด๋‹ค.(ํŽ˜์ด์ง•์€ ํ•œ ํŽ˜์ด์ง€ ์•ˆ์— ํ•œ ์ข…๋ฅ˜๋งŒ ๋“ค์–ด์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฅ˜๋ณ„๋กœ ๋ณด์•ˆ ์„ค์ •์„ ๋‹ค๋ฅด๊ฒŒ ํ•ด ์ค˜์•ผ ํ•œ๋‹ค)
  • ํŽ˜์ด์ง• ๊ธฐ๋ฒ•๋ณด๋‹ค๋Š” ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค.
  • ์™ธ๋ถ€์กฐ๊ฐ ๋ฐœ์ƒ
  • ํ• ๋‹น์€ first fit / best fit ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ธธ์ด๊ฐ€ ๋™์ผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ€๋ถ„ํ• ์—์„œ์™€ ๋™์ผํ•œ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

Segmentation with Paging

  • ์„ธ๊ทธ๋จผํŠธ ํ•˜๋‚˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๋‘˜์„ ์„ž์€ ๊ฒƒ
  • ํ›จ์”ฌ ํšจ์œจ์ ์ด๋ผ ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋• ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ  ๊ณต์œ ๋Š” ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.


์ถœ์ฒ˜