Post

[OS] Operating System(9-3): Main Memory - Swapping

[OS] Operating System(9-3): Main Memory - Swapping

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

ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋Œ๊ณ ์žˆ๋Š”๋ฐ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด Swapping

Swapping


๐Ÿ“šSwapping: ๋Œ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์‹œ์ ์œผ๋กœ backing store(๋ณด์กฐ ์ €์žฅ์žฅ์น˜)๋กœ ๋‚ด๋ณด๋‚ด๊ณ , ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹

โœ…๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ•ฉ๊ณ„๊ฐ€ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ 

alt text

schematic of Swapping

alt text

type of swapping

  • Swapping = Standard Swapping

โœ…Swapping ๊ณผ์ •:

  1. ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๊ฐ์ง€
  2. ํฌ์ƒ์ž ์„ ํƒ: Swap outํ•  ํ”„๋กœ์„ธ์Šค ๊ฒฐ์ •(๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„)
  3. Swap out: ํ”„๋กœ์„ธ์Šค๋ฅผ Backing store๋กœ ์ด๋™
  4. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ณต
  • Backing Store: ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๋ฉ”๋ชจ๋ฆฌ ์ด๋ฏธ์ง€ ์‚ฌ๋ณธ์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ํฐ fask disk
  • Transfer Time: Swapping time์˜ ์ฃผ์š” ๋ถ€๋ถ„, ์Šค์™€ํ•‘๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์— ์ •๋น„๋ก€
  • Direct Access: Backing store๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ง์ ‘ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ด์•ผ ํ•จ

  • Roll Out, Roll In: ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šค์™€ํ•‘ ๋ณ€ํ˜•
    • Roll Out: ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์™€ํ•‘ ์•„์›ƒ
    • Roll In: ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰
    • ๋ชฉ์ : CPU ์Šค์ผ€์ค„๋ง ํšจ์œจ์„ฑ ํ–ฅ์ƒ

๐Ÿ“Ready Queue ๊ด€๋ฆฌ

  • ์‹œ์Šคํ…œ์€ **๋””์Šคํฌ์— ๋ฉ”๋ชจ๋ฆฌ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ready-to-run process๋“ค์˜ ready queue๋ฅผ ์œ ์ง€**ํ•œ๋‹ค

backing store์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ™์€ physical address๋กœ ๋Œ์•„์™€์•ผ ํ•˜๋‚˜?

โ†’ ์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ค๋ฆ„!
I/O๋Š” ๋‚˜๊ฐ”๋‹ค ๋“ค์–ด์˜ฌ ๋•Œ ๊ฐ™์€ ์ฃผ์†Œ๋กœ ๋“ค์–ด์™€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ์— ๋”ฐ๋ผ ์š”๊ตฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปค๋„์— ์‚ฌ์šฉ๋˜๊ฒŒ ๋” ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค

โš™๏ธํ˜„๋Œ€ ์‹œ์Šคํ…œ์—์„œ์˜ Swapping:

  • Modified Swapping (UNIX, Linux, Windows)
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”
  • ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ์ผ๋ถ€๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด deadlock์„ ๊ฐˆ ๋•Œ, ์ฆ‰ ์ž„๊ณ„์ (threshold)์ผ๋•Œ ํ•  ์ˆ˜ ์—†์ด ๋‚ด๋ณด๋‚ด์•ผํ•จ

Context Switch Time including Swapping


Context Switching์€ CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์ธ๋ฐ, Swapping์ด ํฌํ•จ๋˜๋ฉด ์‹œ๊ฐ„์ด ๊ทน์ ์œผ๋กœ ์ฆ๊ฐ€ํ•จ alt text

๋งŒ์•ฝ ๋‹ค์Œ์— CPU์—์„œ ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ

  • ํ•„์š”ํ•œ ์ž‘์—…: ํ˜„์žฌ process๋ฅผ swap out + target process๋ฅผ swap in
  • โ†’ Context switch time can then be very high

๊ตฌ์ฒด์  ๊ณ„์‚ฐ ์˜ˆ์‹œ

alt text

โœ…์Šค์™€ํ•‘ ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์ค„์—ฌ์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค

  • ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ํŒŒ์•…ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์Šค์™€ํ•‘ ๋ฐฉ์ง€
  • System call์„ ํ†ตํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ถ”์ 
    • request_memory() - ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ ์‹œ OS์— ์•Œ๋ฆผ
    • release_memory() - ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ์‹œ OS์— ์•Œ๋ฆผ

โŒSwapping์˜ ์ œ์•ฝ ์‚ฌํ•ญ:

  • pending I/O ๋ฌธ์ œ: I/O ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋Š” Swapping ๋ถˆ๊ฐ€๋Šฅ(I/O๊ฐ€ ์ž˜๋ชป๋œ ํ”„๋กœ์„ธ์Šค์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

  • ํ•ด๊ฒฐ์ฑ…: double buffering

    • ํ•ญ์ƒ I/O๋ฅผ ์ปค๋„ ๊ณต๊ฐ„์œผ๋กœ ๋จผ์ € ์ „์†ก ํ›„, I/O ์žฅ์น˜๋กœ ์ „์†ก
    • ๋‹จ์ : overhead ๋ฐœ์ƒ alt text

ํ˜„๋Œ€ OS์—์„œ๋Š” standard Swapping์€ ์‚ฌ์šฉ X Modified Version๋งŒ ์‚ฌ์šฉํ•จ

Swapping on Mobile Systems


๋ชจ๋ฐ”์ผ์—์„œ๋Š” swapping์ด ๋” ๋ณต์žกํ•ด์ง„๋‹ค

  • Flash memory ๊ธฐ๋ฐ˜
    • ๊ณต๊ฐ„์ด ์ž‘๊ณ  write cycle์ด ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ฐ”์ผ์˜ CPU์™€ flash memory ์‚ฌ์ด์— ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์—„์ฒญ ์ž‘๋‹ค

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋Œ€์•ˆ

alt text

alt text

  • ๊ณตํ†ต ๊ธฐ๋ฒ•: Memory Compression
    • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์••์ถ•

alt text

Swapping with Paging

โœ…Paging์˜ ์žฅ์ :

  • ์„ ํƒ์  ์Šค์™€ํ•‘: ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ์ด๋™
  • ๋น ๋ฅธ ์„ฑ๋Šฅ
  • ํšจ์œจ์  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

Intel 32 and 64-bit Architectures


Pentium CPU๋Š” 32-bit IA-32 ์•„ํ‚คํ…์ฒ˜์ด๊ณ , ํ˜„์žฌ Intel CPU๋Š” 64-bit IA-64 ์•„ํ‚คํ…์ฒ˜

๊ฐ ์•„ํ‚คํ…์ณ์˜ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋ณด์ž

Intel IA-32 Architecture


  • Intel IA-32๋Š” Segmentation + Paging ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์ง€์›
  • segment ํฌ๊ธฐ: ์ตœ๋Œ€ 4GB
  • ํ”„๋กœ์„ธ์Šค ๋‹น segment ๊ฐœ์ˆ˜: ์ตœ๋Œ€ 16K๊ฐœ
  • ํŽ˜์ด์ง€ ํฌ๊ธฐ: 4KB or 4MB
  • ๋‘ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ• :
    • ์ฒซ ๋ฒˆ์งธ 8K: Private segment(kept in local descriptor table(LDT))
    • ๋‘ ๋ฒˆ์งธ 8K: Shared segment(kept in global descriptor table(GDT))

โš™CPU logical address = (selector(16bits), offset(32bits)) alt text

  • Selector ๊ตฌ์„ฑ: alt text

    LTD, GTD์˜ ๊ฐ ์—”ํŠธ๋ฆฌ๋Š” 8bytes segment descriptor๋กœ ๊ตฌ์„ฑ
    ์—ฌ๊ธฐ์—๋Š” segment์˜ base location๊ณผ limit ์ •๋ณด๊ฐ€ ํฌํ•จ๋จ

alt text

์ฃผ์†Œ ๋ณ€ํ™˜ ๊ณผ์ • + linear address ๊ตฌ์„ฑ

  • Segmentation alt text

    IA-32 Segmentation

  • Paging ์•„ํ‚คํ…์ณ: alt text

    IA-32 Paging Architecture

alt text

Page Address Extensions (PAE)

๐Ÿ“šPage Address Extensions (PAE): 32-bit address limit์œผ๋กœ intel์ด ๋งŒ๋“  ํ™•์žฅ ๊ธฐ์ˆ 

  • 32-bit apps์ด 4GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

โœ…์ฃผ์š” ๋ณ€ํ™”:

  • 3-level Scheme: Paging์ด 3-level๋กœ ํ™•์žฅ
  • Top 2 bits๊ฐ€ page directory pointer table ์ฐธ์กฐ
  • 64-bit entry: Page-directory์™€ page-table ์—”ํŠธ๋ฆฌ ํฌ๊ธฐ ํ™•์žฅ
  • 36-bits - 64GB ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ํ™•์žฅ

alt text

PAE Structure

Intel IA-64 Architecture


Intel x86-64๋Š” ํ˜„์žฌ ์„ธ๋Œ€ Intel x86 ์•„ํ‚คํ…์ฒ˜๋กœ, 64-bit ์ปดํ“จํŒ…์˜ ํ˜„๋Œ€์  ๊ตฌํ˜„

  • ์ด๋ก ์  ์ฃผ์†Œ: 64bits(> 16 exabytes) ์—„์ฒญ ํผ!
  • ์‹ค์ œ ๊ตฌํ˜„: 48bit ์ฃผ์†Œ๋งŒ ์‚ฌ์šฉ
  • page size: 4KB, 2MB, 1GB
  • paging level: 4-level hierarchy alt text

  • PAE ํ™•์žฅ ๊ธฐ๋Šฅ
    • virtual addresses: 48bits (256TB)
    • physical addresses: 52bits (4PB)

Example: ARM Architecture

alt text

alt text

This post is licensed under CC BY 4.0 by the author.