๋ฉ”๋ชจ๋ฆฌ

์ •์˜

๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ์ž ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฐ”์ดํŠธ๋“ค์˜ ํฐ ๋ฐฐ์—ด์ด๋‹ค. CPU๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ช…๋ น์–ด๋ฅผ fetchํ•˜๊ณ , ๋ช…๋ น์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋กœ์˜ load/store๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋ถ„๋ฆฌ์™€ ๋ณดํ˜ธ

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, Base Register๊ณผ Limit Register์œผ๋กœ ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.

  • Base Register : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์‹œ์ž‘ ์ฃผ์†Œ
  • Limit Register : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋กœ๋ฆฌ ์˜์—ญ์˜ ํฌ๊ธฐ

image.png

CPU๋Š” ์œ ์ € ๋ชจ๋“œ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋“  ์ฃผ์†Œ๋ฅผ ๋‘ ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋น„๊ตํ•˜๊ณ , ๋ชจ๋‘ ์ฐธ์ผ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•œ๋‹ค.

image.png

์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ

ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ์— ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ด์ง„ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค. ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์™€์ง„๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์—๋Š” ๋ณดํ†ต Symbolic ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํŒŒ์ผํ•˜์—ฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์„ ํ•  ๋•Œ, Symbolic ์ฃผ์†Œ๊ฐ€ relocatable ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ดํ›„ ๋ง์ปค ํ˜น์€ ๋กœ๋”๊ฐ€ relocatable ์ฃผ์†Œ๋ฅผ absolute ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • Symbolic Address : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ๋œ ์ฃผ์†Œ

      int count = 0;        // 'count' ๋ผ๋Š” ์‹ฌ๋ณผ
        
      void main() {         // 'main' ์ด๋ผ๋Š” ์‹ฌ๋ณผ
          count = count + 1;
          printf("%d", count);   // 'printf' ๋ผ๋Š” ์‹ฌ๋ณผ
      }
    
  • Relocatable Address : ์ด ๋ชจ๋“ˆ์˜ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ N ๋ฐ”์ดํŠธ ๋–จ์–ด์ง„ ์œ„์น˜ ํ˜•ํƒœ์˜ ์ƒ๋Œ€ ์ฃผ์†Œ

      ๋ชจ๋“ˆ ๋‚ด๋ถ€ ์˜คํ”„์…‹  ์‹ฌ๋ณผ      ํฌ๊ธฐ
         +0           main      120 bytes
         +120         count     4 bytes
         +124         buffer    256 bytes
    
  • Absolute Address : ๋ง์ปค ํ˜น์€ ๋กœ๋”๊ฐ€ Relocatable ์ฃผ์†Œ๋ฅผ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋กœ ํ™•์ •ํ•œ ์ฃผ์†Œ

    • ๋ง์ปค ํ˜น์€ ๋กœ๋”๊ฐ€ ์œ„ ๋ชจ๋“ˆ์„ ์ฃผ์†Œ 74000๋ฒˆ์ง€๋กœ ์ ์žฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๊ฐ€ ํ™•์ •๋œ๋‹ค.
      ์ด์ „ (relocatable)  โ†’   ์ดํ›„ (absolute)
         +0                    74000  (main)
         +120                  74120  (count)
         +124                  74124  (buffer)
    

image.png

๋…ผ๋ฆฌ ์ฃผ์†Œ vs ๋ฌผ๋ฆฌ ์ฃผ์†Œ

  • ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„ : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋“ค์˜ ๊ณต๊ฐ„
    • ๋…ผ๋ฆฌ ์ฃผ์†Œ : CPU๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์ฃผ์†Œ, ํ”„๋กœ๊ทธ๋žจ์ด ๋ณด๋Š” ์ฃผ์†Œ
  • ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„ : ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋“ค์˜ ์ง‘ํ•ฉ
    • ๋ฌผ๋ฆฌ ์ฃผ์†Œ : ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ, ๋ฉ”๋ชจ๋ฆฌ ์นฉ์— ์ „๋‹ฌ๋˜๋Š” ์ฃผ์†Œ

MMU

Memory Managment Unit์˜ ์•ฝ์–ด๋กœ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์ด๋‹ค.

image.png

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

์ œํ•œ๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ํšจ์œจ์ ์œผ๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ผ๊นŒ? ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‘ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋œ๋‹ค.

  • OS ์˜์—ญ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ์˜์—ญ

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

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

image.png

Variable-Partition

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ณ€ ํฌ๊ธฐ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ„์–ด, ๊ฐ ํŒŒํ‹ฐ์…˜์— ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‚ฌ์ง„ ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋ณ€ ํฌ๊ธฐ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•œ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ณ  ์ด ๊ณต๊ฐ„์„ hole์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค์Œ์— ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•  ์ˆ˜ ์žˆ๋Š” hole๋ฅผ ์ฐพ์•„ ํ• ๋‹นํ•ด์ค€๋‹ค.

image.png

Dynamic Storage Allocation Problem

ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๋Š” ์ œ๊ฐ๊ฐ์ด๊ณ , hole ํฌ๊ธฐ ๋˜ํ•œ ์ œ๊ฐ๊ฐ์ด๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ ์ ˆํ•œ ํฌ๊ธฐ์˜ hole๋ฅผ ์ฐพ์€ ๊ณผ์ •์—์„œ ๋Œ€ํ‘œ์ ์ธ ์„ธ ๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋œ๋‹ค.

  • First-Fit : ์ถฉ๋ถ„ํžˆ ํฐ ์ฒซ ๋ฒˆ์งธ hole์— ํ• ๋‹น
  • Best-Fit : ์ถฉ๋ถ„ํžˆ ๊ฐ€์žฅ ์ž‘์€ hole์— ํ• ๋‹น
  • Worst-Fit : ๊ฐ€์žฅ ํฐ hole์— ํ• ๋‹น

๋‹จํŽธํ™”

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

๋‚ด๋ถ€ ๋‹จํŽธํ™”

  • ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํฐ ๊ฒฝ์šฐ์— ๋ฐœ์ƒ
  • ์ผ์ • ํฌ๊ธฐ๋กœ ๋ถ„ํ•  ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์žฌ๋˜์—ˆ์ง€๋งŒ ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋ฐœ์ƒ
  • ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ์žฌ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋˜์ง€ ๋ชปํ•จ

์™ธ๋ถ€ ๋‹จํŽธํ™”

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

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

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

ํŽ˜์ด์ง•

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • ์™ธ๋ถ€ ๋‹จํŽธํ™” : ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ž‘์€ hole๋“ค๋กœ ์ชผ๊ฐœ์ง„๋‹ค.
  • ์••์ถ• ๋น„์šฉ : ๋‹จํŽธํ™”์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„์–ด์žˆ๋Š” ๊ณต๊ฐ„๋“ค์„ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„๊ตฅ์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • ์—ฐ์†์„ฑ ์ œ์•ฝ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฉ์–ด๋ฆฌ์—ฌ์•ผ ํ•œ๋‹ค.

ํŽ˜์ด์ง•์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ์—ฐ์†๋  ํ•„์š”๋Š” ์—†๋‹ค๋ผ๋Š” ์•„์ด๋””์–ด๋ฅผ ํ†ตํ•ด ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

ํŽ˜์ด์ง•์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ Page์™€ Frame์ด๋‹ค.

  • Page : ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๊ฐ™์€ ํฌ๊ธฐ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋ˆ”
  • Frame : ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋ˆ”

์ด๋ฅผ ํ†ตํ•ด ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ๋‹ค.

CPU๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์ฃผ์†Œ๋Š” ๋‘ ํŒŒํŠธ๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.

  • Page Number : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ
  • Page Offset : ํ•ด๋‹น ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์ธ์ง€ ์‚ฌ์šฉ

image.png