DevLog ๐Ÿ“จ

[DevLog][CSAPP] 9์žฅ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ (9.1~9.4)

cece00 2023. 9. 10. 03:26

์ฑ…์„ ์ฝ์œผ๋ฉฐ ํ๋ฆ„์„ ์ •๋ฆฌ..


๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ Virtual Memory

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋Š” '์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ ํฐ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋„๋ก ๋Š๋ผ๊ฒŒ๋”' ์‹ค์ œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ €์žฅ ์ž์›์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ด๋‹ค.

  1. ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅ๋œ ์ฃผ์†Œ๊ณต๊ฐ„์˜ ์บ์‹œ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ํ™œ์„ฑํ™”๋œ ์˜์—ญ๋งŒ ์œ ์ง€ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ „๋‹ฌํ•œ๋‹ค.
  2. ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ†ต์ผ๋œ ์ฃผ์†Œ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•œ๋‹ค.
  3. ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•œ ์†์ƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•œ๋‹ค.

9.1. ๋ฌผ๋ฆฌ ๋ฐ ๊ฐ€์ƒ์ฃผ์†Œ ๋ฐฉ์‹

01) ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ฐฉ์‹

๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ฐฉ์‹์ด ์žˆ๊ณ  ๊ฐ€์ƒ์ฃผ์†Œ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ฃผ์†Œ 0์— 1๋ฐ”์ดํŠธ, 1์— 1๋ฐ”์ดํŠธ .. ์™€ ๊ฐ™์€ ์‹์ด๋‹ค. ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ฐฉ์‹์€ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ ์ด๋ฉฐ ์ดˆ๊ธฐ PC์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์˜€๋‹ค.

  1. ํ”„๋กœ์„ธ์„œ๋Š” ์œ ํšจํ•œ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ „๋‹ฌํ•œ๋‹ค. [๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์Šค]
  2. ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ „๋‹ฌ๋ฐ›์€ ๋ฌผ๋ฆฌ์ฃผ์†Œ์— ์žˆ๋Š” ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค.
  3. ํ”„๋กœ์„ธ์„œ๋Š” ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค.

02) ๊ฐ€์ƒ์ฃผ์†Œ ๋ฐฉ์‹

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

  1. ํ”„๋กœ์„ธ์„œ๋Š” ์œ ํšจํ•œ ๊ฐ€์ƒ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค์–ด MMU์— ๋„˜๊ธด๋‹ค.
  2. MMU๋Š” '์ฃผ์†Œ ๋ฒˆ์—ญ' ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฐ€์ƒ-๋ฌผ๋ฆฌ์ฃผ์†Œ ๋งคํ•‘์„ ํ•œ๋‹ค.
  3. ๋ฒˆ์—ญ๋œ ์ฃผ์†Œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ „๋‹ฌ๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฃผ์†Œ์— ์ €์žฅ๋œ ๊ฐ’์„ ๋‹ค์‹œ ํ”„๋กœ์„ธ์„œ์—๊ฒŒ ๋„˜๊ธด๋‹ค.

9.2. ์ฃผ์†Œ๊ณต๊ฐ„

CPU๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ๊ณต๊ฐ„์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” $N = 2^n$ ์ฃผ์†Œ์˜ ์ฃผ์†Œ๊ณต๊ฐ„์—์„œ ๊ฐ€์ƒ์˜ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ฃผ์†Œ๊ณต๊ฐ„์ด ๊ฐ€์žฅ ํฐ ์ฃผ์†Œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋น„ํŠธ ์ˆ˜๊ฐ€ ์ฃผ์†Œ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 32bit ์ฃผ์†Œ๊ณต๊ฐ„์€ 32๋น„ํŠธ ์ฃผ์†Œ๊นŒ์ง€ ํ‘œํ˜„๊ฐ€๋Šฅํ•˜๋ฉฐ, 64bit ์ฃผ์†Œ๊ณต๊ฐ„์€ 64๋น„ํŠธ์˜ ์ฃผ์†Œ๊ฐ’๊นŒ์ง€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ์—ฐ์Šต๋ฌธ์ œ 9.1

kilo, mega, giga, tera, peta, exa

๊ฐ€์ƒ์ฃผ์†Œ๊ณต๊ฐ„์˜ ๋น„ํŠธ์ˆ˜ ๊ฐ€์ƒ์ฃผ์†Œ์˜ ์ˆ˜ ๊ฐ€์ƒ์ฃผ์†Œ ์ตœ๋Œ“๊ฐ’
4 $2^4$ $2^4-1$
14 $2^14 = 2^4K$ $2^4K-1$
24 $2^24 = 2^4M$ $2^4M-1$
46 $2^6T$ $2^6T-1$
54 $2^4P$ $2^4P-1$

9.3. ์บ์‹ฑ ๋„๊ตฌ๋กœ์„œ์˜ VM

๐Ÿ‘€ ์บ์‹ฑ์ด๋ž€ ์บ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด๋†“๋Š” ๊ฒƒ (๋˜๋Š” ๊ทธ๋Ÿฌํ•œ ์ž„์‹œ์žฅ์†Œ)์ด๋‹ค.

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

์‹œ์Šคํ…œ์€ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํŠน์ • ์‚ฌ์ด์ฆˆ์˜ ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, ์ด ๋ถ„ํ• ๋œ ๋ธ”๋ก์„ '๊ฐ€์ƒํŽ˜์ด์ง€ Virtual Page'๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ€์ƒํŽ˜์ด์ง€๋Š” $P = 2p$ ๋ฐ”์ดํŠธ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋ถ„ํ• ๋œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” '๋ฌผ๋ฆฌ ํ”„๋ ˆ์ž„ Physical Frame'์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐ€์ƒํŽ˜์ด์ง€๋Š” ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • Unallocated: ์•„์ง ํ• ๋‹น๋˜์ง€ ์•Š์Œ
  • Cached: ํ• ๋‹น๋˜์—ˆ๊ณ  ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œ๋˜์–ด ์žˆ์Œ
  • Uncached: ํ• ๋‹น๋˜์—ˆ์ง€๋งŒ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์Œ

virtual_page

๐Ÿ‘€ ๋™์  ๋žจ DRAM? ์ผ๋‹จ Random-Access-Memory ๋žœ๋ค-์ ‘๊ทผ ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ๊ฒƒ์ด ๋ญ˜๊นŒ? Random์˜ ์˜๋ฏธ๊ฐ€ ์ค‘์š”ํ•œ๋ฐ, ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ์–ด๋Š ์œ„์น˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋“ ์ง€ ์ ‘๊ทผํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (๋ฐ˜๋ฉด ๋””์Šคํฌ๋Š” ์ €์žฅ๋œ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.) ๋žจ์—๋Š” ์ •์  ๋žจ์ด ์žˆ๊ณ , ๋™์  ๋žจ์ด ์žˆ๋‹ค. ์ •์  ๋žจ (SRAM)์€ ์บ์‹œ๋ฉ”๋ชจ๋ฆฌ๊ณ , CPU์นฉ ๋‚ด/์™ธ๋ถ€์— ์žฅ์ฐฉ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต๊ตฌ์กฐ์—์„œ ๋ณด์•˜๋˜ L1, L2, L3๊ฐ€ SRAM์ด๋‹ค. ๋™์  ๋žจ (DRAM)์€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉ๋œ๋‹ค. SRAM์€ DRAM๋ณด๋‹ค ๋น ๋ฅด๊ณ  ๋น„์‹ธ๋‹ค.

9.3.1. DRAM ์บ์‹œ์˜ ๊ตฌ์„ฑ

DRAM ์บ์‹œ ๋ฏธ์Šค๋Š” (์ž˜๋ชป๋œ ํŽ˜์ด์ง€ ๋งคํ•‘) ๋””์Šคํฌ์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SRAM(L1, L2, L3) ์บ์‹œ ๋ฏธ์Šค๋Š” DRAM์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ DRAM์—์„œ์˜ ๋ฏธ์Šค ์ฒ˜๋ฆฌ ๋น„์šฉ์€ SRAM ๋Œ€๋น„ ๋งค์šฐ ๋น„์‹ธ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„์€ ๊ทธ ํ›„ ์—ฐ์†์ ์ธ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„๋ณด๋‹ค 100,000๋ฐฐ ๋Š๋ฆฌ๋‹ค. ์ด ๋น„์šฉ ๋•Œ๋ฌธ์— ๊ฐ€์ƒํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ณ  ์žˆ์œผ๋ฉฐ, 4KB์—์„œ 2MB๊นŒ์ง€์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 4KB, 8KB)

๐Ÿ‘€ ์บ์‹œ ๋ฏธ์Šค Cache Miss ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๋ช…๋ น์–ด๊ฐ€ ์—†๋Š” ์ƒํƒœ. ๋‚ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ–ˆ๋Š”๋ฐ, ์บ์‹œ์— ์—†์œผ๋ฉด ์บ์‹œ๋Š” ์ฃผ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. (๊ฐ€์žฅ ๋Š๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค) ํŽ˜์ด์ง€์™€ ๊ด€๋ จํ•ด์„œ ์บ์‹œ ๋ฏธ์Šค๋ž€ ๊ฒฐ๊ตญ Page Fault๋ฅผ ์˜๋ฏธ.

๐Ÿ‘€ ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ์™€ ๋ฌด์Šจ ๊ด€๊ณ„? ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋” ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค. ๋˜ํ•œ ์ดˆ๊ธฐ์— ํŽ˜์ด์ง€๋ฅผ ์ ‘๊ทผํ•  ๋•Œ, ํŽ˜์ด์ง€๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ํŽ˜์ด์ง€๋ฅผ ์ ‘๊ทผํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ถฉ๋ถ„ํžˆ ์ปค์•ผ ํ•œ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ํฌ๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋œ ๋ฐœ์ƒํ•˜์ง€๋งŒ, ํŽ˜์ด์ง€ ๋‚ด์— ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค. (๐Ÿ“Œ ๋” ๊ณต๋ถ€ํ•ด ๋ณด์ž)

9.3.2. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”

๊ฐ€์ƒํŽ˜์ด์ง€์™€ ๋ฌผ๋ฆฌํ”„๋ ˆ์ž„ ๊ฐ„์˜ ๋งคํ•‘์— ์ด์šฉ๋˜๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ (Page Table Entry)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. PTE๋Š” ํŽ˜์ด์ง€์˜ ํ• ๋‹น ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ์œ ํšจ๋น„ํŠธ์™€ ํ•ด๋‹น ๋…ผ๋ฆฌ์ฃผ์†Œ์— ๋Œ€์‘๋˜๋Š” ๋ฌผ๋ฆฌ์ฃผ์†Œ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.

CPU๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ p, ํŽ˜์ด์ง€ ๋‚ด์˜ ์ƒ๋Œ€ ์ฃผ์†Œ (offset) d๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋…ผ๋ฆฌ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ p๋ฒˆ์งธ์— ์žˆ๋Š” ๋ฌผ๋ฆฌ์ฃผ์†Œ f๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ, ์ด ๋•Œ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์†Œ๋Š” $f\times S+d$๊ฐ€ ๋œ๋‹ค. ($S$๋Š” ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ)

9.3.3. ํŽ˜์ด์ง€ ์ ์ค‘

CPU๋Š” ๊ฐ€์ƒ์ฃผ์†Œ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜์—ฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ์ด์— ๋Œ€์‘ํ•˜๋Š” PTE๋ฅผ ์ฐพ๋Š”๋‹ค. PTE์˜ ์œ ํšจ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด (์ฆ‰ DRAM์— ์บ์‹œ๋˜์–ด ์žˆ์œผ๋ฉด) ๋ฌผ๋ฆฌ์ฃผ์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์ ‘๊ทผํ•œ๋‹ค.

9.3.4. ํŽ˜์ด์ง€ ์˜ค๋ฅ˜

Page Fault๋Š” ๊ฐ€์ƒ์ฃผ์†Œ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜๋Š” PTE์˜ ์œ ํšจ๋น„ํŠธ๊ฐ€ 0์ผ๋•Œ, ์ฆ‰ DRAM์— ํ•ด๋‹น ์›Œ๋“œ๊ฐ€ ์บ์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ ์ผ์–ด๋‚œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฃผ์†Œ ๋ฒˆ์—ญ ํ•˜๋“œ์›จ์–ด๋Š” ์˜ˆ์™ธ์ƒํ™ฉ์„ ์œ ๋ฐœํ•˜์—ฌ DRAM์—์„œ ํฌ์ƒ์ž ํŽ˜์ด์ง€(victim page)๋ฅผ ์„ ํƒํ•˜๊ณ , ์ด ํŽ˜์ด์ง€๋ฅผ uncache ํ•œ ๋‹ค์Œ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ณต์ œํ•œ๋‹ค.



[๊ณผ์ •]

  1. ๋‚˜๋Š” VP3 ๋‚ด์˜ ์›Œ๋“œ๋ฅผ ์ฝ๊ณ  ์‹ถ๋‹ค.
  2. VP3์˜ PTE๋ฅผ ์ฐพ๋Š”๋‹ค. ์œ ํšจ๋น„ํŠธ๊ฐ€ 0์ด๋ฏ€๋กœ page fault๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  3. ์ฃผ์†Œ ๋ฒˆ์—ญ ํ•˜๋“œ์›จ์–ด๋Š” DRAM์— ์บ์‹œ๋œ ํŽ˜์ด์ง€ ์ค‘ victim page VP4๋ฅผ ์„ ํƒํ•œ๋‹ค.
  4. VP4๋ฅผ ๋””์Šคํฌ๋กœ ๋ณต์ œํ•œ๋‹ค.
  5. VP3์„ ๋””์Šคํฌ์—์„œ DRAM์˜ VP4 ์ž๋ฆฌ๋กœ (๋ฌผ๋ฆฌ์ฃผ์†Œ PP3) ๋ณต์ œํ•œ๋‹ค.
  6. PTE 3์„ ๊ฐฑ์‹ ํ•˜๊ณ  ๋ฆฌํ„ดํ•œ๋‹ค.
  7. ๋‹ค์‹œ VP3์„ ์ฐพ์œผ๋ฉด, ์ ์ค‘ํ•œ๋‹ค.

๊ณผ์ • 4๋Š” ๋””์Šคํฌ์— ์žˆ๋Š” ํŽ˜์ด์ง€์™€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํŽ˜์ด์ง€๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์ฆ‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋œ ์ดํ›„ ํŽ˜์ด์ง€์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค๋ฉด, ์ด๋ฅผ ๋””์Šคํฌ์— ๋‹ค์‹œ writeํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†์—ˆ๋‹ค๋ฉด? ์•ˆ ํ•ด๋„ ๋œ๋‹ค. ํฌ์ƒ์ž ํŽ˜์ด์ง€๋ฅผ ๋‚ด๋ฆด ๋•Œ ๋””์Šคํฌ์— ๋งค๋ฒˆ writeํ•˜๊ธฐ๋ณด๋‹ค, ์• ์ดˆ์— ๋‹ค์‹œ write ์•ˆ ํ•ด๋„ ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋‚ด๋ฆฌ๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋น„ํŠธ๋ฅผ ๋‘๋Š”๋ฐ, ์ด๋ฅผ ์˜ค์—ผ๋น„ํŠธ(dirty bit or modify bit)๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ‘€ ํฌ์ƒ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐพ๋Š” ๊ธฐ์ค€์€? [GPT]

Page fault๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์šด์˜์ฒด์ œ๋Š” ํฌ์ƒ์ž ํŽ˜์ด์ง€(victim page)๋ฅผ ์„ ํƒํ•˜์—ฌ ๋””์Šคํฌ์— ์Šค์™‘ ์•„์›ƒ(swap out)ํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ํฌ์ƒ์ž ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค๊ณผ ๊ทธ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค:

  1. FIFO (First-In, First-Out): ๊ฐ€์žฅ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. Optimal (or MIN): ๋ฏธ๋ž˜์˜ ํŽ˜์ด์ง€ ์ฐธ์กฐ๋ฅผ ๋ดค์„ ๋•Œ, ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋ก ์ ์ด๋ฉฐ ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฏธ๋ž˜์˜ ํŽ˜์ด์ง€ ์ฐธ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  3. LRU (Least Recently Used): ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์ฐธ์กฐ์˜ ์ตœ๊ทผ ์ˆœ์„œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•(์นด์šดํ„ฐ, ์Šคํƒ ๋“ฑ)์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. Random: ๊ต์ฒด๋  ํŽ˜์ด์ง€๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (์ตœ์•…์˜ ๋ฐฉ๋ฒ•)
  5. Clock (or Second-Chance Algorithm): ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ˆœํ™˜ ํ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํŽ˜์ด์ง€๋Š” ์ฐธ์กฐ ๋น„ํŠธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํฌ์ธํ„ฐ๊ฐ€ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ฐธ์กฐ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ ๋น„ํŠธ๊ฐ€ 0์ด๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๊ณ , 1์ด๋ฉด 0์œผ๋กœ ์„ค์ •ํ•œ ํ›„ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘€ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์˜ ์šฉ์–ด ์ •๋ฆฌ

  1. ํŽ˜์ด์ง€ Page: ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„
  2. ์Šค์™€ํ•‘/ํŽ˜์ด์ง• Swapping/Paging: ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ํŽ˜์ด์ง€ ์ „์†ก
  3. ์š”๊ตฌ ํŽ˜์ด์ง• Demand Paging: ํŽ˜์ด์ง€๋ฅผ ์š”๊ตฌํ•  ๋•Œ๊นŒ์ง€ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๋ฐฉ์‹

+) ์š”๊ตฌ ํŽ˜์ด์ง•์„ ํ•˜๋ฉด Page Fault๋Š” ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒ. ํ˜„๋Œ€์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง• ๋ฐฉ์‹.

9.3.5 ํŽ˜์ด์ง€์˜ ํ• ๋‹น

malloc ์„ ๋ถˆ๋ €๋‹ค. ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€? ๋””์Šคํฌ๋Š” ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ณ  ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ๊ฐ€ ์ด ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์„ค์ •ํ•œ๋‹ค.

9.3.6. ๋ฌธ์ œํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋˜ ํ•œ ๋ฒˆ์˜ ์ง€์—ญ์„ฑ์˜ ๋“ฑ์žฅ

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

๐Ÿ”ฅ Locality of Reference

๋‹ค๋ฅธ ๋ง๋กœ๋Š” Principle of Locality๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๊ฒฐ๊ตญ 'ํ•œ ๋ฒˆ ์ฐธ์กฐ๋œ ๊ฒƒ์ด ๋‹ค์Œ์—๋„ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค'์™€ '์ฐธ์กฐ๋œ ๊ฒƒ ๊ทผ์ฒ˜์˜ ๊ฒƒ์ด ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค'๋Š” ๊ฒƒ์ด๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ถ€๋ถ„์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝํ–ฅ (CPU์˜ ๊ฒฝํ–ฅ์„ฑ)
  • the tendency of a processor to access the same set of memory locations repetitively over a short period of time. wikipedia

์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ Temporal Locality: 'ํ•œ ๋ฒˆ ์ฐธ์กฐ๋œ ๊ฒƒ์ด ๋‹ค์Œ์—๋„ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.' (ex.๋ฐ˜๋ณต๋ฌธ ๋‚ด ๋ณ€์ˆ˜)

๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ Spatial Locality: '์ฐธ์กฐ๋œ ๊ฒƒ ๊ทผ์ฒ˜์˜ ๊ฒƒ์ด ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.' (ex. ๋ฐฐ์—ด ์›์†Œ)

์‹œ์Šคํ…œ์ด ์ฐธ์กฐ ์ง€์—ญ์„ฑ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋–ค ํŽ˜์ด์ง€๋“ค์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ '์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง€๋‚˜ ๋ธ”๋ก๋“ค์˜ ์ง‘ํ•ฉ'์„ ์ผ์ปฌ์–ด ๋™์ž‘ ์ง‘ํ•ฉ Working Set์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋™์ž‘ ์ง‘ํ•ฉ์ด ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ(๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ)์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํŽ˜์ด์ง€์˜ ๊ต์ฒด๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚  ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ์ด ํ˜„์ƒ์„ ์“ฐ๋ž˜์‹ฑ Thrashing์ด๋ผ๊ณ  ํ•œ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ๊ฐ„์˜ ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด์„œ ์‹ค์ œ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ์ƒํƒœ)

9.4. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋กœ์„œ์˜ VM

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„๋กœ ์ œ๊ณต๋œ๋‹ค.
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. (๋‹ค์ˆ˜์˜ ๊ฐ€์ƒํŽ˜์ด์ง€๊ฐ€ ๋™์ผํ•œ ๋ฌผ๋ฆฌํ”„๋ ˆ์ž„์— ๋งคํ•‘)

VM์ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋‹จ์ˆœํ™”ํ•œ๋‹ค.

  1. ๋งํ‚น์„ ๋‹จ์ˆœํ™”ํ•œ๋‹ค: ์ฃผ์†Œ๊ณต๊ฐ„์„ ๋ณ„๋„๋กœ ๋‘ฌ์„œ, ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ†ต์ผ๋œ ํฌ๋งท์„ ๊ฐ–๊ฒŒ ํ•ด ์ค€๋‹ค. (ex. ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ๋Š” ํ•ญ์ƒ ๊ฐ€์ƒ์ฃผ์†Œ 0x400000์—์„œ ์‹œ์ž‘) ์ด๋Ÿฌํ•œ ํ†ต์ผ์„ฑ์„ ํ†ตํ•ด ๋ง์ปค์˜ ์„ค๊ณ„์™€ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋กœ๋”ฉ์„ ๋‹จ์ˆœํ™”ํ•œ๋‹ค: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ์‹œ์Šคํ…œ์€ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์œ„ํ•œ ๊ฐ€์ƒํŽ˜์ด์ง€๋ฅผ ํ• ๋‹น(๋งŒ) ํ•˜๊ณ , ์ด๋“ค์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ๋ฅผ ๋ชฉ์ ํŒŒ์ผ์˜ ํ•ด๋‹น ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•  ๋•Œ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์˜คํ˜ธ..์ด๋ฅผ ์ง€์—ฐ ๋กœ๋”ฉ ๋˜๋Š” lazy loading์ด๋ผ๊ณ  ํ•œ๋‹ค. (ํ•„์š”ํ•  ๋•Œ ๋กœ๋“œํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ด๊ณ , ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘์ด ๋นจ๋ผ์ง€๋ฉฐ, ๊ถ๊ทน์ ์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.) + ์—ฐ์†๋œ ๊ฐ€์ƒํŽ˜์ด์ง€๋ฅผ ํŒŒ์ผ ๋‚ด ๊ฐ ์œ„์น˜๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘์ด๋ผ๊ณ  ํ•˜๊ณ , ์ด๊ฑธ ํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด mmap()๋‹ค. (mmap๋Š” 9.8์ ˆ์—์„œ ๋‹ค์‹œ ๋ณธ๋‹ค.)
  3. ๊ณต์œ ๋ฅผ ๋‹จ์ˆœํ™”ํ•ด์ค€๋‹ค: ๋‘ ํ”„๋กœ๊ทธ๋žจ์ด ๋ชจ๋‘ printf๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•  ๋•Œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์€ ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์— printf๋ฅผ ๋‘ ๋ฒˆ ์ ์žฌํ•˜๊ฒŒ ๋ ๊นŒ? ์•„๋‹ˆ๋‹ค.. ํ•œ ๋ฒˆ๋งŒ ์ ์žฌํ•˜๊ณ , ๋‘ ํ”„๋กœ๊ทธ๋žจ์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ๊ฐ์˜ ๊ฐ€์ƒํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ์ด ๋ฌผ๋ฆฌํ”„๋ ˆ์ž„๊ณผ ๋งคํ•‘ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
  4. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋‹จ์ˆœํ™”ํ•ด์ค€๋‹ค: malloc์—์„œ ์ถ”๊ฐ€์ ์ธ ํž™ ๊ณต๊ฐ„์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์šด์˜ํ—ค์ œ๋Š” ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•œ ๋‹ค์Œ ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฌผ๋ฆฌํ”„๋ ˆ์ž„๊ณผ ๋งคํ•‘ํ•œ๋‹ค. ์ด๋•Œ ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—ฐ์†์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. (๋žœ๋คํ•˜๋‹ค)
Runtime Memory Image

๊ต์žฌ 670p ๊ทธ๋ฆผ 7.15. ๊ฐ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ


์šด์˜์ฒด์ œ ์ˆ˜์—…์—์„œ ๋ถ„๋ช… ๋‹ค ๋ดค๋˜ ๋‚ด์šฉ์ธ๋ฐ๐Ÿ˜‡ ์ƒˆ์‚ผ ๊ทธ๋•Œ๋Š” ๊ณต๋ถ€๋ฅผ ์ „ํ˜€ ์•ˆ ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ซ๋Š”๋‹ค. ํ•„๊ธฐ๋ก์— ์‹œํ—˜์— ์–ด๋Š ๋ถ€๋ถ„ ๋‚˜์˜ค๋Š”์ง€๋งŒ ๋ฉ”๋ชจ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ›„ํšŒ๋ง‰์‹ฌํ•จ์„ ๋Š๊ผˆ๋‹ค. ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์กฐ๊ธˆ ์‹ ๊ธฐํ–ˆ?๋˜ ๋ถ€๋ถ„์€ CPU๊ฐ€ ์š”๊ตฌ ํŽ˜์ด์ง•์„ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. Page Fault๋ผ๊ณ  ํ•ด์„œ ์–ด๋–ค ์˜ˆ๋ฐฉ๋˜์–ด์•ผ ํ•  ์˜ค๋ฅ˜ ์ƒํ™ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์˜คํžˆ๋ ค 'ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๋ฏธ๋ฃฌ๋‹ค'๋Š” ์ „๋žต์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์–ธ๋œป ์˜์•„ํ•˜๊ฒŒ ๋Š๊ปด์ง€๊ธฐ๋„ ํ–ˆ๋‹ค. ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๋ฌธ์ œ์™€ ๊ด€๋ จํ•ด์„œ๋„ ๋น„์Šทํ•œ ์•„์ด๋””์–ด๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, ๊ฒฐ๊ตญ 'ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ํ•˜์ง€ ์•Š๋Š” ์ „๋žต' ์€ ๋•Œ๋•Œ๋กœ ๋ถˆํ•„์š”ํ•œ ์‹œ๊ฐ„์˜ ์†Œ๋ชจ๋ฅผ ์ค„์—ฌ ์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์–ธ์ œ, ๋ฌด์—‡์ด ์š”์ฒญ๋ ์ง€ ๊ฒฐ๊ตญ ์‹œ์Šคํ…œ์€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ง€ ์•Š์„๊นŒ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ ๋ฐ–์—๋„ ์บ์‹œ ์ง€์—ญ์„ฑ ๊ฐœ๋…์ด ์‹ ๊ธฐํ–ˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ๊ณ„์ธต (๋” ๋น ๋ฅธ ๊ฒƒ์ด ๋” ๋Š๋ฆฐ ๊ฒƒ์˜ ์บ์‹œ๊ฐ€ ๋œ๋‹ค) ๊ตฌ์กฐ๋กœ ์ธํ•ด ๋ณต์žกํ•ด ๋ณด์ด๋Š” ํŽ˜์ด์ง€ ๋กœ๋“œ, ๋งคํ•‘ ๋ฐฉ๋ฒ•์ด ์‹ค์ œ๋กœ๋Š” ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ์ ์ด.. ๋ฉ‹์ง„ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋ชจ๋“  ๋‚ด์šฉ๋“ค์„ ์ง„์งœ ์ฝ”๋“œ ๋Œ๋ฆฌ๋ฉด์„œ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด์„œ perf๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์ฐจ์ฐจ ์ •๋ฆฌํ•ด๋‘์–ด์•ผ๊ฒ ๋‹ค.