Post

[OS] Operating System(9-1): Main Memory - Contiguous Memory Allocation

[OS] Operating System(9-1): Main Memory - Contiguous Memory Allocation

๐Ÿ€ ์šด์˜์ฒด์ œ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„  ๋””์Šคํฌ์—์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถˆ๋Ÿฌ๋“ค์—ฌ์•ผํ•จ(ํ”„๋กœ์„ธ์Šค ํ˜•ํƒœ๋กœ ์กด์žฌ)

  • Main memory and register: CPU๊ฐ€ ์ง์ ‘ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ €์žฅ์†Œ
  • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„: ๋ ˆ์ง€์Šคํ„ฐ ์ ‘๊ทผ์€ one CPU clock (or less)๋กœ ์™„๋ฃŒ๋จ โ†’ ๊ต‰์žฅํžˆ ๋น ๋ฆ„, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ํด๋Ÿญ ํ•„์š”(stall๋•Œ๋ฌธ!)
  • Cache์˜ ์—ญํ• : ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU register ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด๋ฅผ ์ค„์ด๋Š” ์ค‘๊ฐ„ ์ €์žฅ์†Œ

  • Memory unit์˜ ์—ญํ• :
    • addresses + read requests
    • addresses + data and write requests

Protection


๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น ํ™˜๊ฒฝ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์— ํ•จ๋ถ€๋กœ ์ ‘๊ทผ X. ์ด๋ฅผ ์œ„ํ•ด Base and Limit register ๋ฐฉ์‹ ์‚ฌ์šฉ

  • Base and Limit register: ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ €์žฅํ•˜๋ ค ํ• ๋•Œ base(์‹œ์ž‘์ )์™€ limit(ํฌ๊ธฐ)๋ฅผ ์ •ํ•ด์„œ ์ €์žฅํ•จ
    • Base register: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ
    • Limit register: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ
    • ์œ ํšจ ์ฃผ์†Œ ๋ฒ”์œ„: Base โ‰ค ์ฃผ์†Œ < Base + Limit

alt text

์ž„์˜ Process๋Š” ์ฃผ์†Œ 300040๋ถ€ํ„ฐ ์‹œ์ž‘
์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ์ฃผ์†Œ 420940

Hardware address Protection


CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด address๊ฐ€ base์™€ limit์‚ฌ์ด์— ์žˆ๋Š” ๊ฐ’์ด์–ด์•ผ ํ•จ alt text

address โ‰ฅ base ์กฐ๊ฑด ํ™•์ธ
address < base + limit ์กฐ๊ฑด ํ™•์ธ

  • ๋‘ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด โ†’ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํ—ˆ์šฉ
  • ํ•˜๋‚˜๋ผ๋„ ์œ„๋ฐ˜ํ•˜๋ฉด โ†’ ์šด์˜์ฒด์ œ๋กœ ํŠธ๋žฉ(trap) ๋ฐœ์ƒ
  • Base and Limit ๋ ˆ์ง€์Šคํ„ฐ ์„ค์ •์€ privilege instruction
    • ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ OS๋Š” ์„ค์ • ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ€๊ฒฝ X

Address Binding


๐Ÿ“šAddress Binding: ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •

โœ…์ฃผ์†Œ์˜ ์ง„ํ™” ๊ณผ์ •:

  • Source code: symbolic address(๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช…)
  • Compile code: relocatable address(์ƒ๋Œ€์  ์œ„์น˜)
    • symbolic๋„ ์“ฐ๊ธด ์”€
  • Linker or loader: absolute addresses ์‚ฌ์šฉ (๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์ฃผ์†Œ ์ง€์ •)

ํ˜„๋Œ€์—๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๋•Œ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋จ

โœ…Binding์ด ๋ฐœ์ƒํ•˜๋Š” 3๊ฐ€์ง€ ์‹œ์ :

  1. Compile time
    • ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๊ฐ€ ๋ฏธ๋ฆฌ ์•Œ๋ ค์ง„ ๊ฒฝ์šฐ
    • absolute code ์ƒ์„ฑ
    • ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์žฌ์ปดํŒŒ์ผ ํ•„์š”
  2. Load time
    • ์ปดํŒŒ์ผ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ
    • relocatable code ์ƒ์„ฑ
    • loader๊ฐ€ ์ตœ์ข… ์ฃผ์†Œ ๊ฒฐ์ •
  3. Execution time(ํ˜„๋Œ€ ๋ฐฉ์‹)
    • ์‹คํ–‰ ์ค‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ด๋™ ๊ฐ€๋Šฅ
    • swapping, paging ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ
    • ํ•˜๋“œ์›จ์–ด ์ง€์›(๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋…)์ด ํ•„์š”ํ•จ(MMU - Memory Management Unit)

alt text

๐Ÿ“์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…:

  1. Compile Time
    • ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ โ†’ ์˜ค๋ธŒ์ ํŠธ ๋ชจ๋“ˆ ๋ณ€ํ™˜
    • ์ปดํŒŒ์ผ๋Ÿฌ/์–ด์…ˆ๋ธ”๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰
    • ์‹ฌ๋ณผ๋ฆญ ์ฃผ์†Œ๋ฅผ ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜
  2. Load Time
    • ๋งํ‚ค์ง€ ์—๋””ํ„ฐ: ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ๋ชจ๋“ˆ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋กœ๋“œ ๋ชจ๋“ˆ ์ƒ์„ฑ
    • loader: ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    • ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ ์ฃผ์†Œ๋ฅผ ์ ˆ๋Œ€ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜
  3. Execution Time
    • Dynamic Linking: ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋กœ๋“œ
    • ์‹คํ–‰ ์ค‘ ์ฃผ์†Œ ๋ณ€ํ™˜ (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ)

Logical vs Physical Address Space


  • Logical address: CPU์— ์˜ํ•ด ์ƒ์„ฑ๋จ โ†’ main memory์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹˜! ์ฆ‰, ๊ฐ€์ƒ์ฃผ์†Œ๋ผ๋Š” ๋œป
    • ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ
  • Physical address: ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ณด๊ณ , RAM์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์†Œ
    • memory unit์ด ๋ณด๋Š” ์ฃผ์†Œ

์›๋ž˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ์™€ ์‹ค์ œ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์ง€๋งŒ(compile/load time) ๊ทธ๋Ÿฐ๋ฐ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋…ผ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์ง

Memory-Management Unit(MMU)


๐Ÿ“šMMU: ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• 

  • ๋ฌผ๋ฆฌ ์ฃผ์†Œ = ๋…ผ๋ฆฌ ์ฃผ์†Œ + Relocation Register ๊ฐ’ alt text

alt text

ํ”„๋กœ์„ธ์Šค A์˜ Relocation Register = 14000
ํ”„๋กœ์„ธ์Šค B์˜ Relocation Register = 30000

ํ”„๋กœ์„ธ์Šค A ์‹คํ–‰ ์ค‘:
CPU ์ƒ์„ฑ ๋…ผ๋ฆฌ ์ฃผ์†Œ: 346
MMU ๋ณ€ํ™˜: 346 + 14000 = 14346 (๋ฌผ๋ฆฌ ์ฃผ์†Œ)

ํ”„๋กœ์„ธ์Šค B ์‹คํ–‰ ์ค‘:
CPU ์ƒ์„ฑ ๋…ผ๋ฆฌ ์ฃผ์†Œ: 346 (๊ฐ™์€ ๋…ผ๋ฆฌ ์ฃผ์†Œ!)
MMU ๋ณ€ํ™˜: 346 + 30000 = 30346 (๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ์ฃผ์†Œ)

โžก ๊ฐ™์€ ๋…ผ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด (ํ”„๋กœ์„ธ์Šค ๋…๋ฆฝ์„ฑ)

Dynamic Loading


์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ๋ฒˆ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์œผ๋‹ˆ ํ•œ๋ฒˆ์— ๋ชจ๋‘ memory์— ํ• ๋‹นํ•  ํ•„์š” X

๐Ÿ“šDynamic Loading: ํ•„์š”ํ•  ๋•Œ๋งŒ ํ”„๋กœ๊ทธ๋žจ ์ผ๋ถ€๋ถ„์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋ฒ•

  • ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ X
  • Routine์ด ํ˜ธ์ถœ๋  ๋•Œ๋งŒ ํ•ด๋‹น ๋ฃจํ‹ด์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
  • ๋ชจ๋“  routine์€ ๋””์Šคํฌ์— relocatableํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅ

โœ…์žฅ์ :

  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ
  • ๋Œ€์šฉ๋Ÿ‰ ํ”„๋กœ๊ทธ๋žจ ์ง€์›

Dynamic Linking


๐Ÿ“šDynamic Linking: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ์ ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ• loadํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์•ˆ์— ๋‚ด๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ(ex: library)

  • Static linking: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ํŒŒ์ผ์— ํฌํ•จ
  • Dynamic linking: ์‹คํ–‰ ์‹œ์ ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ

  • stub code: ์ž‘์€ ์ฝ”๋“œ ์กฐ๊ฐ, ์‹ค์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜์˜ โ€˜๋Œ€๋ฆฌ์ธโ€™ ์—ญํ• 
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด stub์ด ์‹ค์ œ ํ•จ์ˆ˜์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์—ฐ๊ฒฐํ•จ
  • OS๋Š” dynamic linking์—์„œ ์ฃผ์†Œ ๊ณต๊ฐ„ ๊ด€๋ฆฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋กœ๋”ฉ, ์ฃผ์†Œ ์—ฐ๊ฒฐ์„ ๋‹ด๋‹น

  • Dynamic linking = shared libraries
    • ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ Dynamic loading๊ณผ ๋‹ฌ๋ฆฌ dynamic linking๊ณผ shared libraries๋Š” OS์˜ ๋„์›€์ด ํ•„์š”

Contiguous Memory Allocation


๐Ÿ“šContiguous Memory Allocation: ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด ์ชผ๊ฐœ์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ

โœ…Main memory๋Š” ๋‘๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋จ:

  1. Low memory: ์šด์˜์ฒด์ œ๊ฐ€ ์œ„์น˜(interrupt vector ํฌํ•จ)
  2. High Memory: ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋“ค์ด ์œ„์น˜
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” single contiguous section์— ๋ฐฐ์น˜
      • ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ์ด์ง€๋งŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ

alt text

ํ˜„๋Œ€ ์‚ฌ์šฉ ํ˜•ํƒœ๋Š” ์•„๋‹˜

  • Relocation Register
    • ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅ
    • ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜: physical address = logical address + Relocation Register
  • Limit Register
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋…ผ๋ฆฌ ์ฃผ์†Œ ์ €์žฅ
    • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋ณดํ˜ธ: logical address < Limit Register

Varible Partition


partition์˜ ๊ฐœ์ˆ˜ ๋•Œ๋ฌธ์— ๋™์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค ์ˆ˜๊ฐ€ ์ œํ•œ๋œ๋‹ค ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ํŒŒํ‹ฐ์…˜ ํ•„์š”!

๊ทธ๋ž˜์„œ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์‹ค์ œ ํฌ๊ธฐ์— ๋งž์ถฐ partition ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š”๊ฒŒ Varible Partition

โœ…๋™์ž‘ ์›๋ฆฌ:

  • Hole ๊ด€๋ฆฌ
    • Hole: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ memory block, ๋‹ค์–‘ํ•œ ํฌ๊ธฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ „์ฒด์— ๋ถ„์‚ฐ๋˜์–ด์žˆ์Œ
    • ๋™์  ํ• ๋‹น: ํ”„๋กœ์„ธ์Šค ๋„์ฐฉ ์‹œ ์ถฉ๋ถ„ํžˆ ํฐ hole์—์„œ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ํ• ๋‹น
    • ์ž๋™ ๊ฒฐํ•ฉ: ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ์‹œ ์ธ์ ‘ํ•œ ๋นˆ ํŒŒํ‹ฐ์…˜๋“ค์ด ์ž๋™์œผ๋กœ ํ•˜๋‚˜์˜ ํฐ hole๋กœ ํ†ตํ•ฉ
  • OS์˜ ์—ญํ• 
    • allocated Partiion: ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์œ„์น˜, ํฌ๊ธฐ, ID ์ •๋ณด ๊ด€๋ฆฌ
    • free partitions(Hole): ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์˜ ์œ„์น˜์™€ ํฌ๊ธฐ ์ •๋ณด ๊ด€๋ฆฌ

alt text

process 8์ด ์ข…๋ฃŒ(hole๋กœ ๋ณ€ํ™˜)๋œ ํ›„ 9๋ฒˆ์ด ์š”์ฒญ๋˜๊ณ  ๋“ค์–ด์˜ด
๊ทธ ๋’ค์— 5๋ฒˆ์ด ์ข…๋ฃŒ๋จ(new hole)
์—ฌ๋Ÿฌ ๊ฐœ์˜ hole์ด ๋ถ„์‚ฐ ์กด์žฌ

๊ทธ๋Ÿผ ๋‚จ์€ hole๋“ค์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ•ด์•ผ ์ข‹์„๊นŒ?

๐Ÿ‘๊ทธ ๋ฐฉ์‹์—๋Š” 3๊ฐ€์ง€๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์กด์žฌ:

  1. First-FIt: ์ฒซ ๋ฒˆ์จฐ๋กœ ์š”์ฒญ ํฌ๊ธฐ๋ณด๋‹ค ํฐ hole์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ฆ‰์‹œ ํ• ๋‹น
  2. Best-FIt: ํ• ๋‹นํ–ˆ์„ ๋•Œ ๋‚จ๋Š” ์กฐ๊ฐ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ณณ๋ถ€ํ„ฐ ํ• ๋‹นํ•ด์คŒ
  3. Worst-FIt: ๊ฐ€์žฅ ํฐ ๊ณณ์—์„œ ์ž˜๋ผ์ค˜์„œ ํ• ๋‹น

alt text

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” First, Best Fit๋งŒ ์‚ฌ์šฉํ•˜๊ณ  worst๋Š” ๋น„๊ต๋ฅผ ์œ„ํ•ด ์กด์žฌ First-Fit์ด ๊ฐ€์žฅ ๋น ๋ฆ„

์œ„์˜ ์˜ˆ์‹œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ์˜ Hole์ด ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ , ๊ตฌ๋ฉ์ด ๋‚˜์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ๋ค๋‹ค.

ํšจ์œจ์„ฑ์„ ์œ„ํ•ด hole๋“ค์„ ์—ฐ์†์ ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

Fragmentation


  • External Fragmentation: ๋นˆ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์ž‘๊ณ  ์—ฐ์†์ ์ด์ง€ ์•Š์•„์„œ ๋ชป์“ฐ๋Š” ๊ณต๊ฐ„
    • Variable partition์—์„œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ข…๋ฃŒ๋˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณณ๊ณณ์— ์ž‘์€ hole๋“ค์ด ๋ถ„์‚ฐ
  • Internal Fragmentation: ์›ํ•˜๋Š” ๋งŒํผ ํ• ๋‹นํ•ด์คฌ๋Š”๋ฐ ๋‹ค ํ™œ์šฉํ•˜์ง€์•Š๊ณ  ๋ƒ…๋‘๋Š” ๊ณต๊ฐ„(200์š”์ฒญ ํ›„ 100๋งŒ ์‚ฌ์šฉ)
    • ํŒŒํ‹ฐ์…˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„
  • 50-percent rule: First-Fit์€ N๊ฐœ์˜ ๋ธ”๋ก์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๋ฉด ํ‰๊ท  0.5N๊ฐœ์˜ ๋ธ”๋ก์ด ์กฐ๊ฐ๋‚˜์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ถ„์„์ด ์กด์žฌ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ „์ฒด์—์„œ 0.5N/(N+0.5N) = 1/3 = 33%์˜ ์†์‹ค๋ฅ  ๋ฐœ์ƒ

external fragmentation์„ ์ค„์ด๊ธฐ ์œ„ํ•ด compaction์„ ํ•ด์•ผํ•จ

  • Compaction: ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์šฉ ์žฌ๋ฐฐ์น˜
    • ๋ชจ๋“  ๋นˆ ๊ณต๊ฐ„์„ ํ•˜๋‚˜์˜ ํฐ ๋ธ”๋ก์œผ๋กœ ํ†ตํ•ฉ
    • ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ ํ•œ์ชฝ ๋์œผ๋กœ ์ด๋™
    • โ†’ ์—ฐ์†๋œ ํฐ ์—ฌ์œ  ๊ณต๊ฐ„ ํ™•๋ณด

โŒ์ œ์•ฝ ์กฐ๊ฑด ์กด์žฌ

  1. ๋™์  ์žฌ๋ฐฐ์น˜ ํ•„์š”
    • Static relocation: ์ปดํŒŒ์ผ ์‹œ ์ฃผ์†Œ ๊ณ ์ • โ†’ Compaction X
    • Dynamic relocation: ์‹คํ–‰ ์‹œ ์ฃผ์†Œ ๋ณ€ํ™˜ โ†’ Compaction O
  2. ์‹คํ–‰ ์‹œ์  ์ œ์•ฝ
    • Compaction์€ ์‹คํ–‰ ์ค‘์—๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ(load ์‹œ์ ์—๋Š” ์ˆ˜ํ–‰ X)
  3. I/O ๋ฌธ์ œ
    • I/O ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋™ ๋ถˆ๊ฐ€
    • I/O๋ฅผ ์‹คํ–‰ ์ค‘์— ์กฐ๊ฐ๋ชจ์Œ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฒ„ํผ์˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
      • ํ•ด๊ฒฐ์ฑ… 1: I/O ์ค‘์ธ job์„ ๋ฉ”๋ชจ๋ฆฌ์— latch (๊ณ ์ •)
      • ํ•ด๊ฒฐ์ฑ… 2: I/O๋ฅผ OS ๋ฒ„ํผ๋กœ๋งŒ ์ˆ˜ํ–‰
  • main memory ๋ง๊ณ ๋„ backing store๋„ ๋™์ผํ•œ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ์กด์žฌ
This post is licensed under CC BY 4.0 by the author.