๐Ÿ‘ฉโ€๐Ÿ’ป OS - Memory Management (1)


Preview


Preview

1๏ธโƒฃ Background - Memory Mapping & Protection, MMU, Virtual Memory, Swapping

2๏ธโƒฃ Contiguous Memory Allocation - Block


3๏ธโƒฃ NonContiguous Memory Allocation - Paging, Segment



1๏ธโƒฃ Background


๐Ÿ›ก๏ธMemory Mapping & Protection


  • logical ์ฃผ์†Œ๋ฅผ physical ์ฃผ์†Œ๋กœ mapping ํ•˜๊ณ 
  • Out Of Memory ๊ด€๋ฆฌ [ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋ฒ”์œ„ ๊ด€๋ฆฌ ]

ยฎ๏ธ Base Register & Limit Register


  • Base Register : Physical Address(RAM)์˜ ์‹œ์ž‘ ์ฃผ์†Œ (Relocation Register)
  • Limit Register : ํ˜„ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” register์˜ ๋งˆ์ง€๋ง‰ ์ฃผ์†Œ

์œ„ ๋‘ Register๋ฅผ ํ†ตํ•ด Logical Addessโ†” Physical Address Mapping ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. โ‡’ Mapping

๋˜ํ•œ, Limit Register๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ Memory ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค๋ฉด Trap( ๋‚ด๋ถ€ Interrupt) ๋ฐœ์ƒ โ‡’ Protection

Simple example Memory Protection

memory-protection

  • BaseRegisterBBase Register_B : 30004
  • LimitRegisterBLimit Register_B : 12090

Rrocess B์— ๋Œ€ํ•œ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” 30004 ๊ฐ€ ๋˜๊ณ  ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฒ”์œ„๋Š” 42094๊นŒ์ง€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ Process B ์— ๋Œ€ํ•ด 42096 ์ฃผ์†Œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด Process B๊ฐ€ ์•„๋‹Œ C์˜ ์˜์—ญ์ด๊ธฐ ๋•Œ๋ฌธ์— out of memory๊ฐ€ ๋ฐœ์ƒํ•ด trap์ด ๋ฐœ์ƒ๋ฉ๋‹ˆ๋‹ค.



๐Ÿ’ฑ Address Binding


  • ์ฃผ์†Œ๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•˜๋Š” ์‹œ์ ์— ๋”ฐ๋ผ compile time, load time, execution time ์œผ๋กœ ๋‚˜๋‰œ๋‹ค
  • ์ปดํŒŒ์ผ ์‹œ binding ํ•˜๋ฉด ์ฃผ์†Œ๊ฐ€ ๊ณ ์ •๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ ๋นˆ ๊ณต๊ฐ„์ด ๋งŽ์„ ์ˆ˜ ์žˆ๊ณ ,
  • ๋กœ๋”ฉ ์‹œ binding ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์ด ๋งŽ์•„ ์ด๋“ค์„ ์ „๋ถ€ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๋กœ๋”ฉ ์‹œ ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

โšก ๋”ฐ๋ผ์„œ, ์ฃผ๋กœ Run Time(Execution) ์‹œ์— Address Binding์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Runtime ์‹œ ์ฃผ์†Œ ๋ณ€ํ™˜์€ MMU๋ผ๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ์ด์šฉํ•ด logical โฉ physical ์ฃผ์†Œ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


MMU


mmu

์ถœ์ฒ˜ : https://rebro.kr/178


Virtual Memory


Physical Memory


  • ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฆ‰, main memory ( RAM )์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐ŸŒŸ Virtual Memory


์™œ ํ•„์š”??


Process๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ• ๋‹นํ•ด์ฃผ๋‹ค ๋ณด๋ฉด ์ ์ฐจ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด์„œ RAM๋งŒ์œผ๋กœ๋Š” ๋ถ€๋‹ด๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€ SSD(ํ•˜๋“œ ๋””์Šคํฌ)์™€ ๊ฐ™์€ ๊ณต๊ฐ„์— SWAP ์˜์—ญ์„ ์„ค์ •ํ•ด ๋งˆ์น˜ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์ธ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Virtual Memory = RAM(physical memory) + Disk


์ฆ‰, ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์‹œ ๋””์Šคํฌ ์˜์—ญ ์ผ๋ถ€๋ฅผ SWAP์œผ๋กœ ๋งŒ๋“ค์–ด ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.


Swapping


swapping

  • backing store : Virtual Memory

๐Ÿ’ฃ Swapping ์ด๋ž€?

  • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด SWAP์˜์—ญ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ™•์žฅํ•˜๊ณ 
  • ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ swap outํ•ด์„œ SWAP ์˜์—ญ์œผ๋กœ ๋‚ด์ซ“๊ณ 
  • ํ•„์š”ํ•œ ์˜์—ญ์„ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ swap ing ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Context Switching VS Swapping VS Paging


Context Switching


  • CPU Register์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ํ˜„ ํ”„๋กœ์„ธ์Šค์˜ Context๋ฅผ PCB์— ์ €์žฅ
  • ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ memory, register ๊ฐ’์„ loadํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •
  • ์ฆ‰, context switching์€ Main Memory์—์„œ ์ผ์–ด๋‚˜๋Š ๊ฒƒ์ด ์•„๋‹Œ CPU Register ๋‹จ์œ„์—์„œ ์‹คํ–‰

Swapping


  • Physical Memory ๊ณต๊ฐ„ ๋ถ€์กฑ ์‹œ SWAP(๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ) ์˜์—ญ๊ณผ process๋ฅผ swapping ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.
  • Context Switching์— ๋น„ํ•ด ๋‹น์—ฐํžˆ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ์ „์ฒด๋ฅผ swappingํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค!! (์ •ํ™•ํ•˜์ง€ X)

Paging


  • process๋ฅผ page ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ์ด page๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ณผ์ •
  • page in & page out ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

2๏ธโƒฃ Contiguous Memory Allocation


  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ process๋ฅผ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.
  • ๊ฐ ๋‹จ์œ„๋ฅผ block์ด๋ผ ์นญํ•˜๊ณ  free blocks = HOLE์ด๋ผ ํ•œ๋‹ค.
  • block์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ์ •ํ•ด๋‘๊ณ  ํ• ๋‹นํ•˜๋Š” ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹
    • ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ block ํฌ๊ธฐ๋กœ ์ œํ•œ๋˜์–ด ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.
  • block์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ธ ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹

Example


contiguous allocation


HOLE


hole



HOLE


  • Process๋ฅผ ํ• ๋‹น, ํ•ด์ œํ•˜๋‹ค๋ณด๋ฉด ์œ„์™€ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ตฌ๋ฉ(HOLE)์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ด HOLE์„ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • First Fit
    • Best Fit
    • Worst Fit

how-fit



First Fit


  • ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ์ฒซ ๋ฒˆ์งธ HOLE์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

first-fit

Best Fit


  • ํ• ๋‹น ๊ฐ€๋Šฅํ•œ HOLE ์ค‘ ๊ตฌ๋ฉ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ HOLE์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • Internal Fragment๊ฐ€ ๊ฐ€์žฅ ์ ์€ HOLE์— ํ• ๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Best Fit

Worst Fit


  • ํ• ๋‹น ๊ฐ€๋Šฅํ•œ HOLE ์ค‘ ๊ตฌ๋ฉ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ HOLe์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ๋ฉ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฌ๋‹ค๋ฉด ํ• ๋‹นํ•ด์ฃผ๊ณ  ๋˜ ๋‹ค์‹œ ๋‚จ๊ฒŒ ๋˜๋Š” HOLE์„ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ธฐ๋Œ€๋ฅผ ๊ฐ–๊ณ  ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

worst-fit



Fragment - ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฌธ์ œ์ 


Fragment

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

External Fragment

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”
  • ์ด ๊ณต๊ฐ„์€ ์—ฌ์œ ๋กญ์ง€๋งŒ, HOLE๋“ค์ด ๋–จ์–ด์ ธ ์žˆ์–ด ํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ

external

Internal Fragment

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋ณด๋‹ค ๋” ๋งŽ์€ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค

internal


Solution


  • ๊ณ ์ • ๋ถ„ํ•  ๋ฐฉ์‹์€ External, Internal Fragment ๋ชจ๋‘ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์€ Process์˜ ํฌ๊ธฐ๋งŒํผ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— Internal์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ”ฅ ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ Compact(์••์ถ•)์ด ์žˆ๋‹ค.
ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๋””์Šคํฌ ์กฐ๊ฐ ๋ชจ์Œ ์ •๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.



๐Ÿ’ฅ ๋‹ค์Œ๋ฒˆ์— ๊ณ„์†


โœจ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์€ ๋งŽ์€ ์กฐ์–ธ ๋ฐ ์ง€์  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. - JunHyxxn