Copy-on-Write

**Copy-on-Write (COW)**๋Š” ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ(fork) ์‹œ์ ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์š”๊ตฌ ํŽ˜์ด์ง•(Demand Paging)์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋“ฏ์ด, COW๋Š” ํŽ˜์ด์ง€ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์›๋ฆฌ (Basic Principle)

  • fork() ํ˜ธ์ถœ ์‹œ: ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ fork() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณต์œ  ํŽ˜์ด์ง€ ์„ค์ •: ๊ณต์œ ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์€ **๋ณต์‚ฌ ๋ฐฉ์ง€(copy-on-write)**๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ **์ฝ๊ธฐ ์ „์šฉ(read-only)**์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ๋ฐœ์ƒ ์‹œ ๋ณต์‚ฌ: ๋ถ€๋ชจ๋‚˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ๊ณต์œ  ํŽ˜์ด์ง€์— ์“ฐ๊ธฐ(write)๋ฅผ ์‹œ๋„ํ•˜๋ฉด, ์šด์˜์ฒด์ œ๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ **์ƒˆ๋กœ์šด ๋ณต์‚ฌ๋ณธ(copy)**์„ ๋งŒ๋“ค๊ณ  ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

COW์˜ ์žฅ์ 

  • ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ: fork() ์‹œ์ ์— ๋ถ€๋ชจ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ์ „์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋Œ€์‹ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ(ํŽ˜์ด์ง€์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜ ํฌ์ธํ„ฐ)๋งŒ ๋ณต์‚ฌํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

  • ํ•„์š”ํ•œ ๋ณต์‚ฌ๋งŒ ์ˆ˜ํ–‰: ๋Œ€๋ถ€๋ถ„์˜ fork() ํ˜ธ์ถœ ์ดํ›„ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ exec()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ€๋ชจ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์€ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. COW๋Š” ์‹ค์ œ๋กœ ์ˆ˜์ •๋˜๋Š” ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋งŒ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ œ๋กœ ํ•„ ์˜จ ๋””๋งจ๋“œ (Zero-fill-on-demand)

COW์™€ ๊ด€๋ จ๋œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

  • ํ• ๋‹น ๋ฐฉ์‹: COW๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹น๋ฐ›์„ ๋•Œ, ๊ทธ ๋‚ด์šฉ์ด ๋ชจ๋‘ 0์œผ๋กœ ์ฑ„์›Œ์ง€๋„๋ก ํ•˜๋Š” ์ œ๋กœ ํ•„ ์˜จ ๋””๋งจ๋“œ(zero-fill-on-demand) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชฉ์ : ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๊ฐ€ ํ• ๋‹น๋˜๊ธฐ ์ „์— 0์œผ๋กœ ์ฑ„์›Œ์ ธ์•ผ๋งŒ, ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ํ”„๋กœ์„ธ์Šค์˜ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌํ˜„: ์œ ํœด(free) ํ”„๋ ˆ์ž„ ๋ฆฌ์ŠคํŠธ์—์„œ ํ• ๋‹น๋œ ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์Šค์™€ํ•‘ ์˜์—ญ์˜ ์ดˆ๊ธฐํ™”

์šด์˜์ฒด์ œ๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๊ฐ€ ์Šค์™€ํ•‘ ์˜์—ญ(swap space)์— ํ• ๋‹น๋  ๋•Œ๋„ 0์œผ๋กœ ์ฑ„์›Œ์ง€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ ๋ฐ ํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์กฐ์น˜์ž…๋‹ˆ๋‹ค.

Last updated