[CS] CPU ์ค์ผ์ฅด๋ง, Process ๊ฐ ํต์ ๋ฐฉ๋ฒ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(VMS)
๐ ํด๋น ํฌ์คํ ์ YouTube ์ฑ๋ ๋๋ํ ๊ฐ๋ฐ์๋์ด ์ ๊ณตํ์๋ ๋ฌด๋ฃ ๊ฐ์ ์์์ธ ์ด์์ฒด์ ์ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์์์ ๋ณด๊ณ ๊ฐ์ธ์ ์ธ ์ ๋ฆฌ ๋ชฉ์ ํ์ ์์ฑ๋์์ต๋๋ค. ํ๋จ์ ์ฌ์ฉ๋ ์๋ฃ๋ ํ์๊ฐ ์ง์ ์ฌ๊ตฌ์ฑํ ์๋ฃ์์ ์๋ฆฝ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ๋ตํ๊ฒ CPU ์ค์ผ์ฅด๋ง๊ณผ ํ๋ก์ธ์ค๋ค ๊ฐ์ ํต์ ํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ๋ค๊ณ ํ ์ ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(VMS, Virtual Memory Space)์ ๋ํด ์์๋ณด๋๋ก ํ์.
1. CPU ์ค์ผ์ฅด๋ง์ ์ฃผ์ฒด๋ OS๋ค
์ ๋ฒ ํฌ์คํ ์์ ํ๋ก์ธ์ค์ ๋ํด ๋ค๋ฃจ๋ฉด์ ์ด์์ฒด์ (์ดํ OS)๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์๋ก ํ์ฌ ํ์ผ ๋๋ ์ ์ฐ์์(CPU, RAM ๋ฑ)์ ๋ํ ์ ๊ทผ ์ ์ด๋ฅผ ์ํํ๋ค๊ณ ํ๋ค. ์ฌ๊ธฐ์ ์ ์ฐ์์์ ๋ํ ์ ๊ทผ ์ ์ด๋ผ๋ ๊ฒ์ด ๋ฐ๋ก "์ด๋ค ํ๋ก์ธ์ค๋ CPU์ ์ด๋ ๋ถ๋ถ๋ง ์ฌ์ฉํด! ๊ทธ๋ฆฌ๊ณ RAM์ ์ด๋ ๋ถ๋ถ๋ง ์ฌ์ฉํด" ๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. ์ฆ, OS๋ ํ๋ก์ธ์ค๊ฐ ์ ๋์ํ๋๋ก ์ง์(support)ํ๋ ๊ฒ์ด๋ค.
์ข ๋ ์ ํํ๊ฒ ๋งํด์ CPU Core๋ฅผ ์ค์ง์ ์ผ๋ก ์ฌ์ฉํด์ ์ฐ์ฐ์ ์ํํ๋ ๊ฒ์ ํ๋ก์ธ์ค ๋ด์ ์กด์ฌํ๋ ์ฐ๋ ๋์ด๋ค. ๊ทธ๋์ ์ฌ๋ฌ ํ๋ก์ธ์ค ๋ด์ ์ฐ๋ ๋๋ค์ด CPU๋ฅผ ์ ์ ํ๋ ค๊ณ ๋ฌ๋ ค๋ (?) ๋ค๋ฉด OS๋ ์ฐ๋ ๋๋ค์ ๋ณด๊ณ "์ค์ ์์์ค~!" ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
๊ฒฐ๊ตญ, OS๋ ํจ์จ์ ์ธ ์ ์ฐ ํ์ฉ์ ์ํด์ CPU ์ค์ผ์ฅด๋ง์ ์ํํ๋ค. ์ค์ผ์ฅด๋ง ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. ์ฒซ๋ฒ์งธ๋ก, ์ ์ ํ(Preemitive) ์ค์ผ์ฅด๋ง์ด ์๋ค. ์ ์ ํ์ ํน์ ํ๋ก์ธ์ค๊ฐ ์คํ ์ฆ, CPU๋ฅผ ์ ์ ์ค์ด๋๋ผ๋ OS๊ฐ ํด๋น CPU๋ฅผ ๊ฐ์ ๋ก ๋บ์ ์ ์๋ ๊ฒ์ด ๊ฐ๋ฅํ ๋ฐฉ์์ด๋ค. ๋ฐ๋๋ก ๋น์ ์ ํ ์ค์ผ์ฅด๋ง์ด ์๋ค. ๋น์ ์ ํ ์ค์ผ์ฅด๋ง์ ํน์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ ํ๊ณ ์๋ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ์ฐ์ง ๋ชปํ๊ณ ๊ณ์ ๋๊ธฐ(wait)ํด์ผ๋ง ํ๋ค. ๋ฌผ๋ก ๋น์ ์ ํ ์ค์ผ์ฅด๋ง ๋ฐฉ์์ด๋๋ผ๋ OS๋ฅผ ์ง์ ์ปจํธ๋กคํ์ฌ ๋บ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค.
๋ํ ํ๋ก์ธ์ค์ ์ฐ๋ ๋ ๋ณ๋ก CPU ์ค์ผ์ฅด๋ง ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์๊ธฐ๋ ํ๋ค. ์ด ์ฐ์ ์์๋ ๊ฐ์ ์์์ ํฌ๊ฒ 5๋จ๊ณ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฃผ๋ชฉํ ๋ถ๋ถ์ ๊ทธ๋ฌ๋ฉด ์ด๋ค ํ๋ก์ธ์ค์๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ , ์ด๋ค ํ๋ก์ธ์ค์๋ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ ๊ธฐ์ค์ด ๋ญ๊น?
์ ๋์ ์ผ๋ก ์ ํ๋ ๊ธฐ์ค์ด ๋ฐ๋ก ์๊ธด ํ๊ฒ ์ง๋ง, ์ ์ฑ์ ์ผ๋ก ์ ํ๋ ๊ธฐ์ค์ ๋ฐ๋ก "๋๋ ค์ง ๋ ์ฌ๋๋ค์ด ๊ทนํ(?)ํด ํ๋ ํ๋ก์ธ์ค์ผ ์๋ก ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌ" ํ๋ค๋ ๊ฒ์ด๋ค. ์๋ฅผ ํ๋ ๋ค์ด๋ณด์, ์์ฆ์ OTT๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง, ํ์์ ์ ๋ ์์ ๋ง ํ๋๋ผ๋ ์ํ๋ ๋๋ผ๋ง ๊ฐ์ ์ปจํ ์ธ ๋ฅผ ๋ณด๊ธฐ ์ํด์ .avi, .mp4 ๋ผ๋ ํ์ฅ์์ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์์ ๊ณฐ ํ๋ ์ด์ด์ ๊ฐ์ ๋ฏธ๋์ด ํ๋ ์ด์ด ํ๋ก๊ทธ๋จ์ ํตํด์ ๋ณด๊ณค ํ์๋ค. ์ด ์ํฉ์ ๊ฐ์ ํด๋ณด์.
ํ์๋ ํ์ฌ ๋ฌดํ๋์ ์ด๋ผ๋ ์๋ฅ ํ๋ก๊ทธ๋จ์ .avi ํ์ผ๋ก ๋ค์ด๋ก๋ ๋ฐ์์ ๊ณฐํ๋ ์ด์์ ์คํ์์ผฐ๋ค. ์ด ๋, ์ปดํจํฐ์์ ๋์๊ฐ๊ณ ์๋ ํ๋ก์ธ์ค๋ ๊ณฐํ๋ ์ด์ด ํ๋ก๊ทธ๋จ์ ์ํด ์คํ๋๋ ํ๋ก์ธ์ค ๋ฟ๋ง ์๋๋ผ User, Kernel ๋ชจ๋์๋ ๋ค์ํ ํ๋ก์ธ์ค๊ฐ ๋์๊ฐ๊ณ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ OS๋ ์ด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค ์ค์ CPU๋ฅผ ์ฐ์ ์ ์ ํ ์ ์๋๋ก ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ณฐํ๋ ์ด์ด์ ํ๋ก์ธ์ค๋ก ์ง์ ํ๋ค๋ ๊ฒ์ด๋ค. ์๋ํ๋ฉด ๊ณฐํ๋ ์ด์ด์์ ๋์ค๋ ์์์ด ๊ณ์ ๋๊ธด๋ค๊ณ ํ๋ค๋ฉด ์ฐ๋ฆฌ๋ค์ ์ท๊ฑด(?)์ ์น ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์จ๊ฑด ํต์ฌ์ OS ์ค์ค๋ก๋ ์ด๋ค ํ๋ก์ธ์ค๋ ๋นจ๋ฆฌ ์คํ์ํฌ ๋์ฆ๊ฐ ์์ด์ CPU์ ์ฐ์ ์์๋ฅผ ๋ํ๊ณ , ์ด๋ค ํ๋ก์ธ์ค๋ ๋น ๋ฅด์ง ์์๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๋ํ์ ์ผ๋ก ์ฐ์ ์์๋ฅผ ๋ํ๋ ํ๋ก์ธ์ค๋ GUI ๊ด๋ จ ํ๋ก์ธ์ค์ด๊ณ , ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ์ฃผ๋ก ์๋ฒ์ ์์ถ ํ๊ธฐ์ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ํด๋นํ๋ค. ์ด ๋์ ๋ํ ์ฉ์ด๋ฅผ ์ ์ํ๋ฉด ์ ์๋ ์ ๋ฉด ํ๋ก์ธ์ค, ํ์๋ ํ๋ฉด ํ๋ก์ธ์ค(๋ฐฑ๊ทธ๋ผ์ด๋ ์ก)๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๋ค์์ผ๋ก ์ค์ผ์ฅด๋ง๋ '์์ค'์ด ์กด์ฌํ๋ค. ์ด์ ๋ํ ์ค๋ช ์ ์๋์ ๊ฐ๋ค.
2. Process ๊ฐ์ ํต์ ํ๋ ๋ฐฉ๋ฒ
๋ค์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค ๊ฐ์ ํต์ ํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ์ฃผ๋ก IPC(Inter Process Communication)๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ํต์ ๋ฐฉ๋ฒ์๋ Shared Memory(RAM)์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ, File์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ, Socket์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ, RPC๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๋จผ์ Shared Memory(RAM)์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ํ๋์ ๋์ผํ ํ๋์จ์ด์์ Process 1,2๊ฐ ์คํ๋๊ณ ์๊ณ , ์ด ๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ํ๋ ๊ณผ์ ์ ๋์ํ ํ๋ฉด ์๋์ ๊ฐ๋ค.
Process 1์์ 2๋ก ๋ฐ์ดํฐ๋ฅผ ํต์ ํ๋ค๊ณ ํด๋ณด์. ๊ฐ์ฅ ๋จผ์ Process 1์์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ VMS(๊ฐ์๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ)์ ํน์ ์ฃผ์์ ํ ๋นํด๋์์ ๊ฒ์ด๋ค. ๋์์ Process 2๋ Process 1์์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์ํด wait ์ํ์ ์๋ ์ํ์ด๋ค. ์ดํ์ ํด๋น ๋ฐ์ดํฐ๋ Process 2์ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ธ RAM์ ํน์ ์ฃผ์์ ํ ๋น๋๋ค. ์ด์ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ ์์ ํ๋ ๊ณณ์ธ Process 2์๋ค๊ฐ "์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ!" ํ๋ ์๋ฏธ์ธ SIGNAL์ ๋ณด๋ธ๋ค. ๊ทธ๋ฌ๋ฉด Process 2๋ RAM์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ฒ ๋๋ค.
๋ค์์ File์ ์ด์ฉํ๋ ํต์ ๋ฐฉ๋ฒ์ด๋ค. File์ ์ด์ฉํ๋ ํต์ ์ด๋ผ๊ณ ํ๋ค๋ฉด Stream์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ํ์ผ์ ํตํ ํต์ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ๋จ์ํ ํ์ชฝ์์ ํ์ผ์ ์ฐ๊ณ ๋ฐ๋์ชฝ์์ ํด๋น ํ์ผ์ ์ฝ์ผ๋ฉด ๋๋ค. ์ฃผ๋ก ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ํต์ ํ ๋ ์ ์ฉํ๊ณ , RAM์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๋นํด ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
๋ค์์ Socket์ ์ด์ฉํ ํต์ ์ด๋ค. ์ด ๋ฐฉ๋ฒ์ File์ ์ด์ฉํ๋ ํต์ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ค. ๋จ, ์ด ๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ๋คํธ์ํฌ ํต์ ์ผ๋ก ํ๋ค๋ฉด Socket์ ์ด์ฉํ ํต์ ๋ฐฉ๋ฒ์ด ๋๋ค.
๋ง์ง๋ง์ผ๋ก๋ RPC๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ด๋ค. RPC์ ๋ํ ์ค๋ช ์ ๊ฐ์์์ ์๊ฐํ์ง๋ ์์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ์์๋ณธ ๋ฐ๋ก๋ ๊ฐ๋ ์ด ๋ค์๊ณผ ๊ฐ๋ค. RPC๋ ์๊ฒฉ ํ๋ก์์ ํธ์ถ๋ก ๋ง์น ๋ด ์ปดํจํฐ ์์์ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฅธ ์ปดํจํฐ์ ํ๋ก์ธ์ค์ ์๋ ํจ์๋ฅผ ํธ์ถํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฆ, ๋ด ์ปดํจํฐ์์ ํจ์๋ฅผ ํธ์ถํ๋๋ฐ, ์ด ๋ ์ฐ๋ฆฌ๋ ํจ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด RPC๊ฐ ๋ด ์ปดํจํฐ์์ ์ ๋ฌํ ํ๋ผ๋ฏธํฐ ๋ฑ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ปดํจํฐ๋ก ์ ์ก์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ปดํจํฐ์์๋ ๋ด ์ปดํจํฐ์์ ํธ์ถํ๋ ค๊ณ ํ ํจ์๋ฅผ ์คํํ๊ณ ๊ทธ์ ๋ํ ์๋ต์ ๋ค์ ๋ด ์ปดํจํฐ๋ก ๋ณด๋ด์ค๋ค. ์ปดํจํฐ ๊ฐ์ ํต์ ์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ํต์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
3. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(VMS, Virtual Memory Space)
๋ค์์ผ๋ก๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด ์์๋ณด์. ๋ค์ด๊ฐ๊ธฐ์ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๊ธฐ๋ณธ ์์์ ์ข ์์๋ณด๋๋ก ํ์. ๊ธฐ์ต ์ฅ์น์ ๊ณต๊ฐ ์ต์ ๋จ์๋ 1๋ฐ์ดํธ(8๋นํธ)์ด๋ค. ๋ง์ฝ 32๋นํธ(x86) OS๋ผ๊ณ ํ๋ค๋ฉด ๋๋ต 42.9์ต ๋ฐ์ดํธ์ด๋ฉฐ ์ด๋ ๊ณง ๋๋ต 4GB๊ฐ ๋๋ค. ๊ณ ๋ก, 32๋นํธ OS๋ 4GB ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ค. ์ค์ ๋ก 32๋นํธ OS์ ์ปดํจํฐ์ 8GB RAM์ ์ฅ์ฐฉํ์ฌ๋ 4GB ๊ณต๊ฐ ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ค.
๋ค์์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒ๋ ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ค์(swap)์ ๋ํด ์์๋ณด์. ๋จผ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒ๋ ์ด์ ๋ํด์ ์์๋ณด์. ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒ๋ ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์๋ ๋ก ๋์๊ฐ๋ฉด ์ข๋ค. ์๋ ์๋ RAM์ด ๋งค์ฐ ์๊ธฐ ๋๋ฌธ์ ํน์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ค๋ฉด ๊ธฐ์กด์ ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์์ผ์ ์ ์ ํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํด์ผ๋ง ํ๋ค. ๊ทธ๋์ ์ด๋ ๊ฒ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด ๊ธฐ์กด์ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ฎ์ด์์ด๋ค ๋ผ๊ณ ํด์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒ๋ ์ด๊ฐ ๋ฑ์ฅํ๋ค.
๋ค์์ ๋ฉ๋ชจ๋ฆฌ ์ค์์ ๋ํ ๋ด์ฉ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ค์์ ๋ํด ์ ์ํ๋ฉด ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์คํ์ํค๋ ค๊ณ ํ๋๋ฐ, ํ์ฌ ์ ์ ํ๊ณ ์๋ RAM ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฝ์ฐจ์ ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค ์ค์ ์คํ์ด ๋๋๊ฑฐ๋ ๋ฐ์์ง ์์ ๋ณด์ด๋ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ผ์ด๋ด์ HDD๋ก ์ด๋์์ผ๋ฒ๋ฆฐ๋ค. ์ด ์ด๋์ํค๋ ๊ณผ์ ์ด ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ ์ค์์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ HDD๋ก ๋นผ๋ธ ๊ณณ์๋ ์ฌ์ ๋ถ์ด ์์ ๊ฒ์ด๊ณ , ์ด์ ์๋กญ๊ฒ ์คํํ๋ ค๊ณ ํ๋ ํ๋ก์ธ์ค์๊ฒ ํด๋น ์ฌ์ ๋ถ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ์ฌํ๋ค. ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ด ๋, HDD๋ก Swap ์ํค๋ ๊ฒ์ Swap out ๋๋ Page out์ด๋ผ๊ณ ํ๋ค.(๋ฐ๋๋ Swap in) ๋น์ฐํ ์ด๋ ๊ฒ Swap out ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๋ ํ๋ก์ธ์ค(์ ์์์์ Process 1)๋ I/O ์๋๊ฐ ์ด์ ๋ณด๋ค ๋๋ ค์ง๋ค. ์๋ํ๋ฉด ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ RAM์ด ์๋ HDD์์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ๋ํด ๋ค์ด๊ฐ๋ณด์. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ญํ ์ RAM ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์์กด์ฑ์ ์์ ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ ๊ทผ ์ ์ด๋ฅผ ์ํํ๋ฉด์ ๋ณด์๋ ๊ฐํํ๊ณ ๊ด๋ฆฌ ์ธก๋ฉด์์ ์ฅ์ ์ด ์๋ค. ๋จผ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ๋ณ๋๋ก ํ ๋น๋๋ฉฐ ์๋์ฒ๋ผ ๊ฐ ์์๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์๋ค. ์๋ฅผ ๋ค์ด, 32๋นํธ OS๋ฅผ ๊ฐ๋ ์ปดํจํฐ๋ผ๊ณ ํด๋ณด์.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์คํ์ํค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ง์ ์ผ๋ก (32๋นํธ ์ปดํจํฐ์ผ ๊ฒฝ์ฐ) ์ฝ 1.8GB ๋๋ ์ฉ๋์ด ์ต๋๋ผ๋ ๊ฒ์ด๋ค.
๋ค์์ VMS๊ฐ RAM(๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ)์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋งคํ ํ ์ด๋ธ์ ์ด์ฉํ๋ ๊ฒ์ ๋ํด ์์๋ณด์. ์๋ฅผ ๋ค์ด, ํ๋์ RAM์์ 3๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์ํ๊ณ ์๋ค๊ณ ํด๋ณด์.
VMS์ ์ด๋ค ์์น์ ์๋ ๋ฐ์ดํฐ๊ฐ RAM์ ์ด๋ค ์์น์ ์๋์ง Mapping Table์ ๊ตฌ์ฑํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ Process 1์ด ๊ฐ์๊ธฐ ์ข ๋ฃ๋๋ค๋ฉด OS Kernel ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋งค๋์ ๊ฐ Process 1์ด ์ ์ ํ๊ณ ์๋ RAM ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๊ฐ์ด ํ์ํ๊ฒ ๋๋ค. ์ด๋ฌํ ์ ์ OS๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค๋ ํน์ง์ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ํ ๊ฐ์ง ์์ธ ์ํฉ์ ์๊ฐํด๋ณผ ์ ์๋ค. ๋ง์ฝ VMS์ ํน์ ์ฃผ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ RAM์ ์กด์ฌํ์ง ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์ด๋ด ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ฅผ ๋ด๋ฑ๋๋ฐ ๊ทธ ์ค๋ฅ ๋ฉ์ธ์ง๊ฐ Page fault ๋๋ Segmentation fault ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์๋ ์์ ์ LightGBM ๋ชจ๋ธ์ ๋ก๋ํ๋ค๊ฐ Segmentation fault ๋ผ๋ ๋ฉ์ธ์ง๋ง ๋ฐ์ํ๊ณ ๋ณ๋ค๋ฅธ ์๋ฌ๋ฅผ ๋ง์ฃผํ์ง ๋ชปํด์ ๊ฝค ๊ณ ์ํ๋ ๊ธฐ์ต์ด ์๋ค. ๊ทธ ๋ ๋น์ ์ปดํจํฐ๋ฅผ ๋ถํ ํ๋ฉด์ ํด๊ฒฐํ๊ธด ํ์๋๋ฐ, ๋ง ๊ทธ๋๋ก "์ด๊ฒ ์ ๋ผ์ง?" ํ๋ ์ํฉ์ด์๋ค. ๊ทธ ๋์ ์์ธ์ ์ด์ ์ผ ์๊ฒ ๋์๋ค..๐คฆโ๏ธ
๋ค์์ ํ์ด์ง ๊ธฐ๋ฒ์ด๋ค. ์์์ ์์๋ณด์์ง๋ง VMS๋ RAM์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ ํ ์์ญ์ผ๋ก ํน์ ๋จ์๋ก ๋๋๋๋ฐ, ์ด๋ฅผ Page์ด๋ผ๊ณ ๋ณดํต ๋ถ๋ฅธ๋ค. ๋ณดํต Widnow OS์ธ ๊ฒฝ์ฐ ํ๋์ Page๋น ํฌ๊ธฐ๊ฐ ๋ณดํต 4KB์ด๋ค. ํ์์ MacOS์์๋ ํ Page ๋น ์ฌ์ด์ฆ๊ฐ ์ผ๋ง์ธ์ง ํ์ธํด๋ณด๊ณ ์ถ์ด์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํด ํ์ธํด๋ณด์๋๋ฐ, ์ฝ 16KB์๋ค.
๋ง์ง๋ง์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ถํ์ ๋ํ ๋ด์ฉ์ด๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์๋ User๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์ ํ๋์ด ์๋ค. ์์์ ๋ณธ ๊ทธ๋ฆผ์ ์ ๊น ๋ค์ ๋ณด์.
์ ๊ทธ๋ฆผ์ 32๋นํธ OS์ ์ปดํจํฐ๋ผ๊ณ ๊ฐ์ ํ์ ๋์ด๋ค. 1.8GB ์ ๋๋๋ ์ฉ๋์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋ค์ด์๋๋ฐ, ๋ค์ด์๋ ๊ฐ ๊ตฌ์ฑ์์์ ๋ฐ๋ผ ์ ๊ทผ ๊ถํ์ด ์ฝ๊ฐ์ฉ ๋ค๋ฅด๋ค.
ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํ ์ ๊ทผ ๊ถํ์ Page Table์ 4๋นํธ ํฌ๊ธฐ๋ก ํ ๋น๋์ด ๋ช ์๋์ด ์๋ค. ๋ฌผ๋ก ์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ์ํฌ ์๋ ์๋ค. ๊ทธ๋์ ์ ๊ทธ๋ฆผ์์ ๋ฐ์ดํฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ๊ถํ์ ์ ์ธ์์ผ๋์ ๊ฒ์ด๋ค. ๋ง์ฝ ์คํ ๊ถํ์ ๋ฃ์ผ๋ ค๊ณ ํ๋ฉด Window OS๋ DEP(Data Execution Prevention) ๊ธฐ๋ฅ์ด ๋ฐํ๋์ด ์คํ๋์ง ๋ชปํ๊ฒ ํ๋๋ก ํ๋ค.
- ๋์ ์ฃผ์ ๋ณํ : ์ฌ๊ธฐ์ ๋์ ์ '๋ฐํ์'์ ์๋ฏธ. ์ฆ, ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ผ ๋ ์ฃผ์๊ฐ ๋ณํ๋๋ ๊ฒ์ ๋์ ์ฃผ์ ๋ณํ์ด๋ผ๊ณ ํจ
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์๋ ์ ๋์ฃผ์์ ์๋์ฃผ์๊ฐ ์๋ค. ์ ๋์ฃผ์๋ ์ฃผ๋ก ์ ์ญ๋ณ์๊ฐ, ์๋์ฃผ์์๋ ์ง์ญ๋ณ์๊ฐ ์ ์ฅ๋๋ค.