10 minute read

3๋…„๊ฐ„ ์‚ฐ์—…๊ธฐ๋Šฅ์š”์›์œผ๋กœ ๋ณต๋ฌด ํ•˜๊ณ , ๋ณตํ•™ํ•ด ์ปด๊ณต๊ณผ ์ˆ˜์—…์„ ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๋งŽ์ด ๋ฐฐ์› ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์—ฌ์ „ํžˆ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ๋งŽ๋„ค์š” ^^;; ์—ญ์‹œ ์„ธ์ƒ๋„ ๋„“๊ณ  ๊ณต๋ถ€์˜ ๊ธธ๋„ ๋„“์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋“ค์–ด๊ฐ€๋ฉฐ

์š” ํฌ์ŠคํŠธ๋Š” ์šด์˜์ฒด์ œ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์งง๊ฒŒ ๋ฉ”๋ชจ ํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ๋ชจ์€ ๊ธ€ ์ž…๋‹ˆ๋‹ค. OS ๋‚ด์šฉ์„ ๋ณต์Šตํ•˜๋ฉด์„œ ์‚ดํŽด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ™‚

Interrupt Frame

Interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์‹คํ–‰ ์ค‘์ธ ์“ฐ๋ ˆ๋“œ๋Š” CPU ์ž์›์„ Kernel(Interrupt Handler)์—๊ฒŒ ๋บ์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์“ฐ๋ ˆ๋“œ๋Š” Interrupt ๋ฐœ์ƒ ๋‹น์‹œ์˜ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’๋“ค์„ ๋ชจ๋‘ Memory์— ์ €์žฅํ•ด๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ โ€œInterrupt Frameโ€ ์ž…๋‹ˆ๋‹ค! Pintos P2์—์„œ ๋งŽ์ด ๋‹ค๋ฃฌ ๋…€์„์ด์ฃ !

Gate Mechanism

โ€˜sunshoutโ€™๋‹˜์˜ โ€œ[Gate] Task Gate, Trap Gate, Interrupt Gate, Call Gateโ€ ๊ธ€์ด ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ฎ์€ ํŠน๊ถŒ(Ring 3)์—์„œ ๋†’์€ ํŠน๊ถŒ(Ring 0)์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ํ†ต๋กœ(Gate)

  • Trap Gate
    • System call์ด ์š” ๋ฐฉ์‹์ž„.
    • Exception Handling๋„ ์š” ๋ฐฉ์‹์ž„.
    • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋„์ค‘์— ๋‹ค๋ฅธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ค‘์ฒฉ ๋  ์ˆ˜ ์žˆ์Œ!
  • Interrupt Gate
    • ํ•˜๋“œ์›จ์–ด์˜ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•จ.
    • Interrupt Flag๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•˜์—ฌ, ์ถ”๊ฐ€์ ์ธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐฉ์ง€ํ•จ.
      • ์™œ๋ƒํ•˜๋ฉด, ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•, ์ธํ„ฐ๋ŸฝํŠธ ์ค‘์ฒฉ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž„!

Virtual Memory

Segment ๊ธฐ๋ฒ•์ด๋“  Paging ๊ธฐ๋ฒ•์ด๋“  Code์™€ Data ์˜์—ญ์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ  ๊ฐ€๋Šฅํ•จ. ๊ทธ๋Ÿฐ๋ฐ, Stack ์˜์—ญ์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ  ๋ถˆ๊ฐ€์ž„!

System Call for Heap Allocation

  • int brk(void *addr)
    • ํž™ ์˜์—ญ์˜ ๋์„ ์ง€์ •๋œ ์ฃผ์†Œ๋กœ ํ™•์žฅ
  • void sbrk(intptr_t increment)
    • ํ˜„์žฌ ํž™์˜ break๋ฅผ ๊ธฐ์ค€์œผ๋กœ increment ํฌ๊ธฐ ๋งŒํผ ํž™์„ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œํ•จ.

โ€œbreakโ€๋ž€? ํž™ ์˜์—ญ์˜ ๋์„ ๋งํ•จ. ์ด ์ฃผ์†Œ๋ฅผ ์กฐ์ •ํ•ด ํž™ ์˜์—ญ์„ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œํ•จ.

malloc()๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ brk sys call์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ํ•จ. ๊ทธ๋Ÿฌ๋‚˜ brk, sbrk๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฑด ๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ!

UNIX fork

process์—์„œ fork()๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋ชจ๋“  ๊ฒƒ์ด ๋˜‘๊ฐ™์€ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ฆ. ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Œ.

  1. ๋ถ€๋ชจ์˜ Segment Table์„ ์ž์‹์—๊ฒŒ Copy
    1. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์œผ๋กœ๋Š” ์•„๋ฌด๋Ÿฐ Copy๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์Œ.
  2. ๊ณต์œ  ์ค‘์ธ ๋ถ€๋ชจ์™€ ์ž์‹์˜ ๋ชจ๋“  ์„ธ๊ทธ๋จผํŠธ๋ฅผ RO ๊ถŒํ•œ์œผ๋กœ ๋ณ€๊ฒฝ
  3. ์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘
  4. ๋งŒ์•ฝ ์ž์‹/๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์„ธ๊ทธ๋จผํŠธ(stack, heap)๋“  write ์ž‘์—…์ด ์ผ์–ด๋‚œ๋‹ค๋ฉด
    1. Trap into OS Kernel
    2. Trap(Exception) Handler๊ฐ€ ํ•ธ๋“ค๋ง ํ•˜๋ฉด์„œ ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ Copy ๋ณธ์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰์„ ์ด์–ด๊ฐ.

์š”๊ฒŒ Paging ๋ฒ„์ „์œผ๋กœ ๋ฐ”๋€Œ์–ด๋„ ๋น„์Šทํ•จ.

  1. ๋ถ€๋ชจ์˜ Page Table์„ ์ž์‹์—๊ฒŒ Copy
  2. ๊ณต์œ  ์ค‘์ธ ๋ถ€๋ชจ์™€ ์ž์‹์˜ ๋ชจ๋“  Page๋ฅผ RO ๊ถŒํ•œ์œผ๋กœ ๋ณ€๊ฒฝ
  3. ์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘
  4. ๋งŒ์•ฝ ์ž์‹/๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค Page(stack, heap)๋“  write ์ž‘์—…์ด ์ผ์–ด๋‚œ๋‹ค๋ฉด
    1. Trap into OS Kernel
    2. Trap(Exception) Handler๊ฐ€ ํ•ธ๋“ค๋ง ํ•˜๋ฉด์„œ ํ•ด๋‹น Page์— ๋Œ€ํ•œ Copy ๋ณธ์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰์„ ์ด์–ด๊ฐ.

Zero-on-reference

๊ทธ๋ƒฅ Stack ํ™•์žฅ์ด ์ผ์–ด๋‚  ๋•Œ, ์ƒˆ๋กœ ํ• ๋‹น ๋ฐ›์€ ์˜์—ญ์„ ์ฒ˜์Œ์— 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋Š” ๋ง์ž„.

์ด์œ ๋Š” ์šฐ์—ฐํžˆ๋ผ๋„ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋˜๋Š” ๊ฑธ ์›ํ•˜์ง€ ์•Š์•„์„œ, ์ฐธ์กฐ ์ „์— 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ์ž„.

Big Page: Pros & Cons

[์žฅ์ ]

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ๊ฐ์†Œ
    • PTE ๊ฐฏ์ˆ˜๊ฐ€ ์ค„๊ธฐ ๋•Œ๋ฌธ
  • ๋””์Šคํฌ I/O ํšจ์œจ์„ฑ ์ฆ๊ฐ€
    • Page Fault ๋ฐœ์ƒ์‹œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  • TLB ํžˆํŠธ์œจ ์ฆ๊ฐ€
    • ์ €์žฅ๋œ ํŽ˜์ด์ง€๊ฐ€ ๋” ๋„“์€ ์ฃผ์†Œ๋ฅผ ์ปค๋ฒ„ํ•˜๋ฉด์„œ, TLB์—์„œ ๋” ๋งŽ์€ ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Œ

[๋‹จ์ ]

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ปค์ง
  • ๊ฐ„ํ—์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ํฐ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œ ํ•ด์•ผ ํ•จ
  • Page Fault ์ฒ˜๋ฆฌ๊ฐ€ ๋Š๋ ค์ง
    • ๋””์Šคํฌ I/O๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ๋งŽ์•„์ ธ์„œ

Big Virtual Address: Pros & cons

โ€œSparse Address Spaceโ€, ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ  ๋“œ๋ฌธ๋“œ๋ฌธ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ € ๋‚˜๋ฆ„ ๋Œ€๋กœ ์ดํ•ด ํ•ด๋ณธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

[ํ•„์š”์„ฑ]

  • per-thread stacks
    • ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐ ์“ฐ๋ ˆ๋“œ๋Š” ๋…๋ฆฝ์ ์ธ ์Šคํƒ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ์“ฐ๋ ˆ๋“œ์˜ ์Šคํƒ ๊ณต๊ฐ„์ด ๊ฒน์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„  ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ๋„“์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Memory-mapped files
    • ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์œ ์ € ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋งคํ•‘ํ•  ๋•Œ, ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ๋„“์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜์•ผ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ปค๋„ ๊ทธ๊ฒƒ์„ ์œ ์ € ๊ณต๊ฐ„์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[๋‹จ์ ]

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์‚ฌ์ด์ฆˆ๊ฐ€ ์•„์ฃผ ์ปค์ง
    • PTE ๊ฐฏ์ˆ˜๊ฐ€ ์•„์ฃผ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ

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

  • ๋‹ค๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ
    • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ Memory์— ์˜ฌ๋ ค๋‘˜ ํ•„์š” ์—†์Œ.
    • ์ง€๊ธˆ ์“ฐ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋งŒ ์˜ฌ๋ ค๋‘๋Š” ๊ธฐ๋ฒ•
  • ์ธ๋ฒ„์Šค ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”
    • ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ํŽ˜์ด์ง€๋งŒ ํ…Œ์ด๋ธ”์— ์ €์žฅ

x86 Multi-level PAged Segmentation

์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜๊ณผ ๋‹ค๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•œ ๊ธฐ๋ฒ•์ž„. (์ž์ฃผ ๋ณด์ด๊ฒŒ ๋˜๋Š” x86๋Š” Intel ๋ชจ๋ธ์—์„œ ๋„์ž… ๋˜์—ˆ๋‹ค๋Š” ๋œป)

  • Global Descriptor Table (GDT)
    • ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์ž„
    • ๊ฐ ํ–‰์— ๋‹ด๊ธด ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Œ.
      • ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๊ด€๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ด
      • ์„ธ๊ทธ๋จผํŠธ์˜ ๊ธธ์ด
      • ์„ธ๊ทธ๋จผํŠธ์˜ ์ ‘๊ทผ ๊ถŒํ•œ (RWXA)
    • GDTR(GDT Registry)๋ผ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ํฌ์ธํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ GDT๋กœ ์ „ํ™˜๋จ.
    • Context Switch ๊ณผ์ •์€ ์š” GDTR ๋ ˆ์ง€์Šคํ„ฐ์˜ ํฌ์ธํ„ฐ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ž„.
  • Multi-level Page Table
    • ํŽ˜์ด์ง€ ํฌ๊ธฐ๋Š” 4 Kb ($2^12$)
      • ํ•˜์œ„ 12 ๋น„ํŠธ๊ฐ€ offset bit๋กœ ์‚ฌ์šฉ๋จ.
    • 32-bit ์‹œ์Šคํ…œ์€ 2๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ”
      • $2^{32} = 2^{10} \cdot 2^{10} \cdot 2^{12}$
    • 64-bit ์‹œ์Šคํ…œ์€ 4๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ”

Kernel Memory is not swapped out

์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Demand Paging์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ง€๊ธˆ๊นŒ์ง€ Paging๊ณผ ๊ด€๋ จ๋˜์–ด ์‚ดํŽด๋ณธ ๋ชจ๋“  ๊ฒƒ์€ User ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ํ…Œํฌ๋‹‰ ์ž…๋‹ˆ๋‹ค.

์ปค๋„์˜ ๋™์ž‘์€ ํ•ญ์ƒ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜ํ–‰ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ๋‚ด๋ฆฌ๊ฑฐ๋‚˜ ์˜ฌ๋ฆฌ๋Š” Demand Paging ๊ธฐ๋ฒ•์€ ์ปค๋„ ๋™์ž‘์„ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“ค์–ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํผํฌ๋จผ์Šค๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผ(resident)ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Page Address Extension

PAE

Buddy System

Linux์—์„œ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•จ.

๋ฉ”๋ชจ๋ฆฌ๋ฅผ 2์˜ ์ œ๊ณฑ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•จ.

์š”์ฒญ ํฌ๊ธฐ์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 2์˜ ์ œ๊ณฑ ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” โ€œbuddyโ€์™€ ๋ณ‘ํ•จํ•˜์—ฌ ํฐ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ๋ณต๊ตฌํ•จ.

์ปค๋„์—์„œ๋Š” ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š”๋ฐ, ๋น ๋ฅธ ํ• ๋‹น๊ณผ ํ•ด์ œ๊ฐ€ ๊ฐ€๋Šฅํ•จ.

๋‹จ, ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฌด์กฐ๊ฑด ๋ฐœ์ƒํ•จ.

Slab Allocator

์ปค๋„ ๊ฐ์ฒด๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

PCB๋‚˜ inode์™€ ๊ฐ™์€ ์ปค๋„ ๊ฐ์ฒด๋“ค์„ ํ”„๋กœ๊ทธ๋žจ์„ ์šด์˜ํ•˜๋ฉด์„œ ์ž์ฃผ ํ• ๋‹น ๋˜๊ฑฐ๋‚˜ ํ• ๋‹น ํ•ด์ œ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ PCB ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค, Page๋ฅผ ํ•˜๋‚˜ ํ• ๋‹น ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ด๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๊ณ  ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์Šฌ๋žฉ(slab)์„ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ดํ•ด ํ•ด๋ด…์‹œ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” inode๋ผ๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜ ํฌ๊ธฐ๊ฐ€ 128 ๋ฐ”์ดํŠธ๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ Slab Allocator๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, inode ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•œ ํ• ๋‹น ์š”์ฒญ์„ ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฒ„๋”” ์‹œ์Šคํ…œ์— ์˜ํ•ด ํ• ๋‹น ๋˜๋Š”๋ฐ, inode๋Š” 128 ๋ฐ”์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œ ๋‹จ์œ„์ธ 4 Kb์˜ ํŽ˜์ด์ง€ ํ•˜๋‚˜๊ฐ€ ํ• ๋‹น ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 3 Kb ์ •๋„์˜ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ ๋˜๊ณ , ์ด๋Š” ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Slab Allocator๋Š” inode ์‚ฌ์ด์ฆˆ์— ๋งž๋Š” 128 ๋ฐ”์ดํŠธ ํฌ๊ธฐ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๊ณ  ์ด๋ฅผ โ€œ์Šฌ๋žฉโ€์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋žฉ์€ 4 Kb ํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ 128 ๋ฐ”์ดํŠธ ๊ฐ์ฒด๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด inode ํ• ๋‹น ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด, OS๋Š” ์Šฌ๋žฉ์— ๋ฏธ๋ฆฌ ์ค€๋น„๋œ 128 ๋ฐ”์ดํŠธ ์Šฌ๋กฏ์„ ํ•˜๋‚˜ ๊บผ๋‚ด๊ณ , ๊ทธ ์Šฌ๋กฏ์— inode ๊ฐ์ฒด๋ฅผ ํ• ๋‹น ํ•ฉ๋‹ˆ๋‹ค.

Buddy System vs. Slab Allocator

Buddy System๊ณผ Slab Allocator๋Š” ๋ฐฐํƒ€์ ์ด์ง€ ์•Š๊ณ , ๋‘˜์„ ๊ฐ™์ด ์“ฐ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

No Swapping in mobile platform

Android OS์˜ ๊ฒฝ์šฐ, ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋””์Šคํฌ๋กœ ๋‚ด๋ฆฌ๋Š” Swapping์„ ์ฑ„ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€์‹ , ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด ํ˜„์žฌ ์‹คํ–‰๋˜๋Š” ์•ฑ์„ ์ข…๋ฃŒ ํ•˜๋Š”๋ฐ, ์ข…๋ฃŒ ์ „์— ์•ฑ์˜ ์ƒํƒœ๋“ค์„ Flash ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•˜๊ณ , ์•ฑ์„ ์žฌ์‹œ์ž‘ ํ–ˆ์„ ๋•Œ Flash ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋น ๋ฅธ ์žฌ์‹œ์ž‘์„ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค.

TLB Miss Handling

Virtual Memory์˜ ์ฃผ์†Œ ๋ณ€ํ™˜์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ ๋„, ๋” ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…ํ•œ๊ฒŒ TLB ์บ์‹œ์ด๊ณ , ์š”๊ฑด HW์ž„.

TLB Hit ์ƒํ™ฉ์—์„œ์•ผ ๋‹น์—ฐํžˆ TLB ์บ์‹œ๊ฐ€ ๋™์ž‘์„ ์ž˜ ํ•˜๊ฒ ์ง€๋งŒ, TLB Miss๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ๋•Œ๋ถ€ํ„ฐ ์ƒํ™ฉ์ด ์ข€ ๋ณต์žกํ•ด์ง.

์ผ๋‹จ TLB Miss๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, MMU(Memory Management Unit)์—์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฒ€์ƒ‰ํ•จ. ์ฃผ์†Œ ๋ณ€ํ™˜์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ทธ ๊ฐ’์„ TLB ์บ์‹œ์— ์ฑ„์›Œ๋„ฃ์Œ.

๊ทธ๋Ÿฐ๋ฐ, ์ตœ์‹ ์˜ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” TLB Miss๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, MMU ์žฅ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ โ€œKernel Trapโ€์„ ๋ฐœ์ƒ์‹œ์ผœ์„œ ์†Œํ”„ํŠธ์›จ์–ด(์ปค๋„)์ด ์ด๋ฅผ ํ•ธ๋“ค๋ง ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ!! ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—๊ณผ, ์ผ๋ถ€ RISC ์•„ํ‚คํ…์ฒ˜์˜ CPU์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ๋ณต์žก์„ฑ์„ ์ตœ์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๊ณ  ํ•จ.

๋’ท ๋‚ด์šฉ์ด ์•„์ง๋„ ๋‚จ์•˜๋‹ค๋‹ˆโ€ฆ 82p๋ถ€ํ„ฐ ๋ณด์ž!