DevLog ๐Ÿ“จ

[DevLog][PintOS] 3์ฃผ๊ฐ„์˜ ํ•€ํ† ์Šค ํšŒ๊ณ 

cece00 2023. 10. 24. 05:02

์ง„์‹ฌ ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ดˆ๋ฐ˜์—” ์žฌ๋ฐŒ์—ˆ๋Š”๋ฐ ๐Ÿ˜‡

3์ฃผ๊ฐ„์˜ ํ•€ํ† ์Šค์—์„œ ๋ฌด์—‡์„ ๋Š๋ผ๊ณ  ๋ฐฐ์› ๋Š”์ง€ ๋‚จ๊ฒจ๋‘์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์— '์•„.. ํ•€ํ† ์Šค ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ..'๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ์–ด ์ •๋ฆฌํ•ด๋‘”๋‹ค.


  1. 'ํ”„๋กœ์„ธ์Šค๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•œ๋‹ค' ๋ผ๋Š” ๊ด€์ ์„ ์–ป์—ˆ๋‹ค. ๊ทธ ์ „๊นŒ์ง€๋Š” ํ”„๋กœ์„ธ์Šค, ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ, ์ž์›.. ๊ณผ ๊ฐ™์€ ์šฉ์–ด๋“ค์ด ๋ง‰์—ฐํ•˜๊ฒŒ๋งŒ ๋‹ค๊ฐ€์™”๋Š”๋ฐ, ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•œ ๊ฐœ๋…์œผ๋กœ์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์ž์› resource ์„ ๊ณต์œ ํ•˜๊ณ , ํš๋“ํ•˜๊ณ , ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋ฅผ ์ ‘ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ถ”์ƒํ™”์ด๋ฏ€๋กœ, ์‹ค์ œ ๋ฌผ๋ฆฌ์  ์ž์› (ex. CPU ์ ์œ ) ์„ ๊ณต์œ ํ•˜๋ฉด์„œ๋„ ๋งˆ์น˜ ํ˜ผ์ž๋งŒ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ์ ์—์„œ ๋™๊ธฐํ™”์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค์ด ์ค‘์š”ํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

  2. Policy์™€ Mechanism์„ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ ๊ฐˆ๋˜์—ˆ์„ ๋•Œ ์žˆ๋Š” ํ”„๋ ˆ์ž„ ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ evictํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์–ด๋–ค ํ”„๋ ˆ์ž„์„ ๊ณ ๋ฅด๋Š๋ƒ๋Š” ์ •์ฑ…์ด๋‹ค. ๋‘ ๊ฐ€์ง€๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋‚˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋‹ค๋ฅธ ๊ฒƒ์ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” mechanism ๊ตฌํ˜„ ํ•จ์ˆ˜ ์•ˆ์—์„œ policy ํ•จ์ˆ˜๋ฅผ ์ฝœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. vm_evict_frame ์•ˆ์—์„œ vm_get_victim์„ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.

  3. ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ด์ƒ์ ์ธ ๋‹จ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์€ ์žˆ๊ธฐ ํž˜๋“ค๋‹ค. ์ด๋ฒˆ์— ํŽ˜์ด์ง€ ๊ต์ฒด ์ •์ฑ…์„ ์‹คํ—˜ํ•˜๋ฉฐ ๋งŽ์ด ๋Š๊ผˆ๋˜ ๋ถ€๋ถ„์ด๋‹ค. ์ด์ƒ์ ์ด๋ผ๋ฉด LRU๊ฒ ์ง€๋งŒ, ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ƒ๋‹นํ•˜๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ ํŽ˜์ด์ง€์˜ ์ ‘๊ทผ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•ด timestamp๋ฅผ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค. LRU๋ณด๋‹ค ํ›จ์”ฌ ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ตฌํ˜„ ๋ณต์žก๋„๋ฅผ ์ค„์ธ Clock ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU์˜ ์„ฑ๋Šฅ์„ ๊ทผ์‚ฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ Clock ์—ญ์‹œ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” FIFO์— ๋น„ํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ž‘์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ง€๊ธˆ ์ด ์ผ€์ด์Šค์— ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์™€ ์†๋„๊ฐ€ trade-off ๊ด€๊ณ„๋ผ๋ฉด, ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋Œ€์ƒ์˜ ์ˆ˜๊ฐ€ ์–ด๋Š ์ •๋„์˜ scale์ธ์ง€ ์ƒ๊ฐํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. copy-on-write๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด์„œ ๊ตฌํ˜„ํ–ˆ๋˜ swap table์˜ ๊ฒฝ์šฐ, ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ์–‘๋ฐฉํ–ฅ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋œ ๋“ค์—ˆ์ง€๋งŒ, ๋Œ€์‹  remove ์—ฐ์‚ฐ์—์„œ O(1)์ด ์•„๋‹Œ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์ด ๋ฐฉ๋ฒ•์„ ํƒํ•œ ์ด์œ ๋Š”.. n์ด ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ํŽ˜์ด์ง€์˜ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ๋งŽ์„๊นŒ? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ƒ๊ฐ๋งŒ ํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ทธ๋Ÿฌํ•œ์ง€๋Š” ์ฐพ์•„๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ.. ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ๊ฒ€์ฆ๋„ ํ•ด ๋ณด์ž.

  4. ์ฝ”๋“œ๋ฅผ ๊ผผ๊ผผํžˆ ์ฝ์ž. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฃผ์ฐจ๋ถ€ํ„ฐ, '๊ตฌ์ฒด์—์„œ ์ถ”์ƒ์œผ๋กœ'์˜ ๋…ธ์„ ์„ ๊ฐ€์ง€๊ณ  ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋˜ ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ด๋ฒˆ ํ•€ํ† ์Šค ์ฃผ์ฐจ์—๋„ ์—ญ์‹œ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ˆ˜์›”ํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์šด์˜์ฒด์ œ ์ฑ…์ด๋‚˜ (OSTEP์€ ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค) ์œ„ํ‚คํ”ผ๋””์•„๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ฐœ๋…์„ ์•Œ๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณด์•„๋„ ๊ดœ์ฐฎ์•˜์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ. ๊ฒฐ๊ตญ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ดํ•ดํ•˜๋Š” ์ˆœ๊ฐ„์€ ๊ฐœ๋…์ ์œผ๋กœ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์„ ์‹ค์ œ ์ฝ”๋“œ์—์„œ ํ™•์ธํ•  ๋•Œ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. context switching์— ๋Œ€ํ•ด ๋Œ€ํ•™ ์šด์˜์ฒด์ œ ๊ฐ•์˜์—์„œ ๋“ค์„ ๋•Œ๋Š” ๋ฌด์Šจ ๋ง์ธ์ง€? ๋ณ„๋กœ ์™€๋‹ฟ์ง€ ์•Š์•˜๋Š”๋ฐ, ํ•€ํ† ์Šค์˜ thread_launch ์ฝ”๋“œ๊ฐ€ ๊ทธ๊ฒƒ์˜ ๊ตฌ์ฒด์ ์ธ ์˜๋ฏธ๋ฅผ ์•Œ๋ ค์ฃผ์—ˆ๋‹ค.. ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์–ด๋”˜๊ฐ€(ํ•€ํ† ์Šค์—์„œ๋Š” ์Šค๋ ˆ๋“œ ๊ตฌ์กฐ์ฒด)์— ๋ฐฑ์—…ํ•˜๊ณ  ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ญ๊ฐ€ ๋˜์—ˆ๋“  ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ๋ณด๋‹ค ๋””ํ…Œ์ผํ•œ ์ž๋ฃŒ๋Š” ์—†๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ๊ผผ๊ผผํžˆ ์ฝ์–ด๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์„ ๋“ค์ด์ž.

  5. ์™œ ๋˜๋Š”์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ํ•€ํ† ์Šค๋Š” ์ด๋ฏธ ์ž‘๋™ํ•˜๋Š” ์šด์˜์ฒด์ œ๋ฅผ ๋”์šฑ ๋ฐœ์ „์‹œํ‚ค๋Š” ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ, ๋‚ด๊ฐ€ ์งœ ์ค€ ๊ฒŒ ์—†์–ด๋„ ์–ด๋”˜๊ฐ€์—์„œ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋‹ค. ์‚ฌ์‹ค ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ์‹œ๊ฐ„๋งŒํผ, ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„๋„ ๋งŽ์ด ๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ๋‹ค๋ณด๋‹ˆ 1์ฃผ์ฐจ ๋•Œ๋Š” '์™œ ๋˜์ง€?' ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๋ณด๋‹ค๋Š” ๊ทธ์ € ์–ด๋”˜๊ฐ€์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ์žˆ๊ฒ ๊ฑฐ๋‹ˆ, ํ•˜๋Š” ๋งˆ์ธ๋“œ๊ฐ€ ์‚ด์ง ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ์— ๋งˆ๋ฒ•์€ ์—†์œผ๋ฏ€๋กœ.. ํ•˜๋‚˜์˜ ํ๋ฆ„, ์ด๋ฅผํ…Œ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ์˜ ๋ฐœ์ƒ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€์˜ ํ๋ฆ„์„ ์ฐฌ์ฐฌํžˆ ์ถ”์ ํ•ด ๋ณด๋ฉด์„œ ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€๋ฅผ ์งš์–ด๋ณด๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค. intr-stub.S ์—์„œ intr_handler์˜ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ€๋Š” intr_frame* ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋˜๋Š”์ง€๋ฅผ ๋ชฐ๋ผ์„œ (CSAPP 8์žฅ์„ ์•ˆ ์ฝ์–ด์„œ ๐Ÿ™ƒ) ๊ถ๊ธˆ์ฆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, %rdi ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ GPT๋ฅผ ํ†ตํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ์ธํ„ฐ๋ŸฝํŠธ ํ๋ฆ„์„ ์‚ดํŽด ๋ณธ ๊ฒฝํ—˜์ด 2์ฃผ์ฐจ syscall์—์„œ๋„ ๋งŽ์ด ๋„์›€ ๋˜์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์‚ฌ์†Œํ•œ ์˜๋ฌธ๋„.. ๋ชจ๋‘ GPT์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด ์ž˜ ๋‹ต๋ณ€ํ•ด์ค€๋‹ค. 98๋…„๋„์— ํ•€ํ† ์Šค๋ฅผ ํ•˜๋˜ ๋Œ€ํ•™์ƒ๋“ค์— ๋น„ํ•˜๋ฉด ์–ด๋งˆ์–ด๋งˆํ•œ ํ˜œํƒ์ด๋ฏ€๋กœ ์ž˜ ์‚ฌ์šฉํ•œ์ž.

  6. ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž. 2์ฃผ์ฐจ์— ๋ฐค์ƒ˜ํ•˜๋ฉฐ ํ•ด๊ฒฐํ–ˆ๋˜ multi-oom ํ…Œ์ŠคํŠธ (๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ) ์ดํ›„ ๋ชจ๋“  alloc ๊ด€๋ จ ํ•จ์ˆ˜๋Š” ๊ฐ•๋ฐ•์ ์œผ๋กœ freeํ•ด์ค„ ๊ณณ ์—†๋‚˜.. ์ฒดํฌํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒŒ ์ƒ๊ฐ๋ณด๋‹ค ๋งค์šฐ ์‰ฝ์ง€ ์•Š์€ ์ž‘์—…์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ 3์—์„œ ๋™๊ธฐํ™” ๋ฌธ์ œ(๋ฐ๋“œ๋ฝ)๋ฅผ ๋งŽ์ด ๊ฒช์—ˆ๋Š”๋ฐ, ์ด๋ฅผํ…Œ๋ฉด system call์˜ ํŒŒ์ผ ๊ด€๋ จ ํ•จ์ˆ˜์—์„œ ๋ฝ์„ ํš๋“ํ•˜๊ณ  ๋‚œ ํ›„ fault๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  lazy_load๋กœ ๊ฐ€์„œ.. ๋‹ค์‹œ load ๊ด€๋ จ ๋ฝ์„ ํš๋“ํ•˜๋Š” ๊ณผ์ • ์ค‘์—์„œ ๋ญ”๊ฐ€ ๊ผฌ์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ•ญ์ƒ ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ด๋˜๊ฑฐ๋‚˜, ์‚ฌ์‹ค ๋”์šฑ ์ค‘์š”ํ•˜๊ฒŒ๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ์ข…๋ฃŒ๋˜๋Š” ์ผ€์ด์Šค ์•ˆ์—์„œ ์ž์› ๋ฐ˜ํ™˜์ด๋ผ๋˜์ง€.. ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ๊ทธ ์ผ€์ด์Šค ๋ฐ–์œผ๋กœ ๋ฐ˜ํ™˜ ๋˜๋Š” ์ •๋ฆฌ ๋กœ์ง์„ ๋นผ๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค. spt_table_kill์—์„œ hash_destroy๋ฅผ ํ•˜๋ฉฐ file writeback์„ ํ•˜๋Š”๊ฒƒ๋ณด๋‹ค, ํ•œ์ฐจ๋ก€ writeback์„ ํ•œ ๋’ค ๋งˆ์Œ ํŽธํ•˜๊ฒŒ destroy๋กœ free์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ๋‚˜์•˜๋‹ค. ์˜๋„ํ•˜๋Š” ๋™์ž‘๋“ค์„ ์ž˜ ๋‚˜๋ˆ„์–ด์„œ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๋ฉด ์ข‹๋‹ค.

  7. ASSERT ๋ฌธ์„ ์ ๊ทน ํ™œ์šฉํ•˜์ž. ํ•€ํ† ์Šค์—์„œ semaphore์™€๋Š” ๋‹ฌ๋ฆฌ lock์€ ํ˜„์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ lock์„ ์žก์•˜๋Š”๋ฐ ๋‹ค์‹œ ํš๋“ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ASSERT๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด์œผ๋กœ์„œ ์—๋Ÿฌ๋ฅผ ํ™•์ธ์‹œ์ผœ์ค€๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ ์ง€์ ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”์น˜๋‹˜๊ป˜์„œ 'ASSERT๋Š” ๋””๋ฒ„๊น… ๊ณผ์ •์„ ์ปดํ“จํ„ฐ์—๊ฒŒ ์‹œํ‚ค๋Š” ๊ฒƒ'์ด๋ผ๊ณ  ๋ง์”€ํ•˜์…จ๋˜ ์˜๋ฏธ๊ฐ€ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ (ํŠนํžˆ Virtual Memory)๋ฅผ ํ•˜๋ฉด์„œ ์™€๋‹ฟ์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํŽ˜์ด์ง€์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๋กœ์ง์ด ๋‹ฌ๋ผ์ง€๋‹ค๋ณด๋‹ˆ, ์ด ํ•จ์ˆ˜์— ์ง„์ž…ํ–ˆ์„ ๋•Œ ์˜๋„ํ•œ ํŽ˜์ด์ง€์˜ ์ƒํƒœ๋Š” ์–ด๋•Œ์•ผ ํ•œ๋‹ค - ๋ผ๋Š” ์กฐ๊ฑด๋“ค์ด ์žˆ์—ˆ๋‹ค. if๋ฌธ์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋งŒ์•ฝ ์˜๋„ํ•œ ๋Œ€๋กœ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ€์•ผ ํ•œ๋‹ค๋Š” ํ™•์‹ ์ด ์žˆ๋‹ค๋ฉด ASSERT๋ฅผ ์‹ฌ์–ด์„œ ๋‚ด ์ƒ๊ฐ์„ ๊ฒ€์ฆํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚๋—ํ•œ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ณ , ์ด์–ด๋ถ™์ด๊ณ .. ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋””๋ฒ„๊น…ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฌด์ž‘์ • ๋Œ๋ฆฌ๊ณ  gdb๋กœ ์ฐพ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ๋‹ค.




์ด ๋ฐ–์—๋„ ํ•€ํ† ์Šค๋ฅผ ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฒƒ์„ ์–ป์—ˆ๋‹ค. ์ผ๋‹จ ์ด ์ •๋„ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ์–ธ์ œ ์ฝ์–ด๋ณด๊ฒ ์œผ๋ฉฐ.. ์ˆ˜์ •ํ•ด๋ณด๊ฒ ์œผ๋ฉฐ.. ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋ถ€๋‹ด๊ฐ์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€๋˜ ๊ฒƒ์€ ํ™•์‹คํ•˜๋‹ค. ํƒœ๋„์ ์œผ๋กœ ๋Š๋‚€ ์ ์ด ์žˆ๋‹ค๋ฉด: ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด ๋ฌผ์–ด๋ณด๊ณ , ๊ฒ€์ƒ‰ํ•˜๊ณ , GPT ์ ๊ทน ํ™œ์šฉํ•˜๊ณ , ์•„๋ฌดํŠผ๊ฐ„์— ์ž‘์€ ์˜๋ฌธ๋„ ํ•ด์†Œํ•˜๋ ค๋Š” ์ž์„ธ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ์™€ ๊ตฌํ˜„์— ํ’€๋กœ ์ง‘์ค‘ํ•˜๋Š” ํƒœ๋„๊ฐ€ ์žˆ์–ด์•ผ ๊ฐ„์‹ ํžˆ ๊ณผ์ œ๋ฅผ (all pass๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„) ๋๋‚ผ ์ˆ˜ ์žˆ๋Š”.. ์–‘์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณผ์ œ์—์„œ ์–ป์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์˜ 100%๋Š” ๊ณ ์‚ฌํ•˜๊ณ  80%๋ผ๋„ ์ž˜ ๋ฐฐ์›Œ๊ฐ€๋Š”์ง€์— ๋Œ€ํ•œ ์˜๋ฌธ์€ ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ ๊ฒฝํ—˜์„ ํ•ด ๋ณธ ์  ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์•ž์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋‚˜๊ฐ€๋Š”๋ฐ ์žˆ์–ด ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ.. ์‹ถ๋‹ค. ํž˜๋“ค๊ณ  ๋ฒ…์ฐจ๊ณ  ๊ทธ๋ž˜๋„ ์กฐ๊ธˆ์€ ์žฌ๋ฏธ์žˆ์—ˆ๋˜ ํ•€ํ† ์Šค ํšŒ๊ณ  ๋ ๐Ÿ€