CS/OS
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ฒ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋? ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์์ ์ผ๊ด๋๊ฒ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ ๊ธฐ์ ์ด๋ค. ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์น๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๊ณ ํ๋ก๊ทธ๋๋ฐ ํ๋๋ก ์ง์ํ๋ค. ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ์ ์๊ด์์ด ํ๋ก์ธ์ค์ ์ปค๋ค๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ๋ค. โ ์ด๋ก ์ ์ผ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌดํ๋์ ํฌ๊ธฐ์ธ๋ฐ, ์ด๋ป๊ฒ ๊ฐ๋ฅํ ๊ฒ์ผ๊น? ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ ์ค ์ผ๋ถ๋ฅผ ํ๋๋์คํฌ์ ์ผ๋ถ ๊ณต๊ฐ์ธ ์ค์ ์์ญ์ผ๋ก ์ฎ๊ธด๋ค. ์ค์ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๊ด๋ฆฌํ๋ ํ๋๋์คํฌ์ ์์ญ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ์์ ์ค์ ์์ญ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ์ค์ ์์์ด๋ผ ๋ถ..
๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์คํ๋๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ผ์์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ถํ ์์คํ ์์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฑ๋ฅ์ ์ค์ํ ์ํฅ์ ์ค๋ค. ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ (Memory Manage Unit, MMU) ๋ผ๋ ํ๋์จ์ด๊ฐ ๋ด๋นํ๋ค. ๊ฐ์ ธ์ค๊ธฐ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์จ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์๋ค๋ฉด, ์ผ๋ถ๋ง ๋จผ์ ๊ฐ์ ธ์ค๊ณ ๋๋จธ์ง ๋ฉ๋ชจ๋ฆฌ๋ ์ง์์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ๋ ์๊ณ ์ฌ์ฉ์์ ์์ฒญ์ด ์๋๋ผ๋ ์์ผ๋ก ํ์ํ ๊ฒ์ผ๋ก ์์๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ๋ ํ๋ค. ๋ฐฐ์น ์์ ๊ฐ์ ธ์จ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ..
๊ต์ฐฉ ์ํ(DeadLock)
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ๊ต์ฐฉ ์ํ๋? ํ๋ก์ธ์ค๋ค์ด ์๋ก๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋๊ธฐ์ค์ธ ์ํ์ด๋ค. CPU ์ค์ผ์ค๋ง ํํธ์ ๋์๋ ์์ฌ ํ์๊ณผ๋ ๋ค๋ฅธ๋ฐ, ์์ฌ ํ์์ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๊ณ์ ๋ฐ๋ ค ์ฅ๊ธฐ๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๋ ๊ฒ์ด๊ณ ๊ต์ฐฉ์ํ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์์ ์ ํ๋ค๋ณด๋ ์๋ก์ ์์์ ํ ๋น๋ฐ๊ธฐ ์ํด ๋ฌดํ์ ๋๊ธฐํ๋ ์ํ์ธ ๊ฒ์ด๋ค. ๊ต์ฐฉ ์ํ๋ ๋ค์ 4๊ฐ์ง ์กฐ๊ฑด์ ๐ก ๋ชจ๋ ๋ง์กฑํ์ ๋, ๋ฐ์ํ๋ค. 1. ์ํธ ๋ฐฐ์ 2. ๋น์ ์ 3. ์ ์ ์ ๋๊ธฐ 4. ์ํ๋๊ธฐ ์ํธ ๋ฐฐ์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ ์ ์๋ ๋ฐฐํ์ ์ธ ์์์ด์ด์ผ ํ๋ค. ์ฆ, ์์์ด ์๊ณ๊ตฌ์ญ์ผ๋ก์ ๋ณดํธ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์์์ ์ฌ์ฉํ ..
ํ๋ก์ธ์ค ๋๊ธฐํ
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ Race Condition 2๊ฐ ์ด์์ ํ๋ก์ธ์ค์ฌ ๊ณต์ ์์์ ์ฝ๊ฑฐ๋ ์ฐ๋ ์ํฉ์ Race Condition ์ด๋ผ๊ณ ํ๋ค. Race Condition์ด ๋ฐ์ํ๋ฉด ๊ณต์ ์์ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ง ์๋๋ก ํด์ผํ๋ค. kernel ์ํ ์ค ์ธํฐ๋ฝํธ ๋ฐ์ ์ ์ปค๋ ๋ชจ๋๋ก count๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์๋ ์์ค์ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์ค๋ฉด ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด์ผ๋ก ๋ค์ด๊ฐ๋ค. ์ธํฐ๋ฝํธ ์์ ์ด ์ปค๋๋ชจ๋๋ก ์ํํ๋ count๋ฅผ ๊ฐ์์ํค๋ ์์ ์ ์งํํ๋ค. ๋ค์ ์ปค๋๋ชจ๋๋ก ๋์์์ ์์ ์ ์ํํ ๋์๋, ์ธํฐ๋ฝํธ์ ์์ ์ด ๋ฐ์๋ count๊ฐ ์๋ ์ด์ ์ ์งํ์ค์ด์๋ ์์ ์ ์ด์ด์ ์ํํ๊ธฐ ๋๋ฌธ์, ์ธํฐ๋ฝํธ๊ฐ ํ๋ ์์ ..
CPU ์ค์ผ์ค๋ง
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ค์ผ์ค๋ง์ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ํฉ์ ๊ณ ๋ คํ์ฌ CPU์ ์์คํ ์์์ ์ด๋ป๊ฒ ๋ฐฐ์ ํ ์ง ๊ฒฐ์ ํ๋ ์ผ์ ๋งํ๋ค. ๐ ์ค์ผ์ค๋ง ์์ค ๊ณ ์์ค ์ค์ผ์ค๋ง ์ฅ๊ธฐ ์ค์ผ์ค๋ง ์ด๋ผ๊ณ ๋ ํ๋ค. ๊ณ ์์ค ์ค์ผ์ค๋ง์ ์์คํ ๋ด์ ์ ์ฒด ์์ ์๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ ๋งํ๋ค. ์์คํ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์ด๋ค ์์ ์ ์น์ธํ ์ง, ๊ฑฐ๋ถํ ์ง๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋์์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ์ด ๊ฐ์๊ฐ ์ ํด์ง๋ค. ์ ์์ค ์ค์ผ์ค๋ง ์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ ์ง, ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ ์ํ๋ก ๋ณด๋ผ์ง ๋ฑ์ ๊ฒฐ์ ํ๋ค. ์ฃผ๋ก, ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋จ๊ธฐ ์ค์ผ์ค๋ง ์ด๋ผ๊ณ ๋ ํ๋ค. ์ค๊ฐ ์์ค ์ค์ผ์ค๋ง ์์คํ ์ ๋์์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ์๋ฅผ ๊ณ ์์ค ์ค์ผ์ค๋ง์ด ์ ํ๋ค๋ฉด ์ค๊ฐ ์์ค ..
ํ๋ก์ธ์ค์ ์ค๋ ๋
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค ํ๋ก๊ทธ๋จ์ ์ ์ฅ์ฅ์น์ ์ ์ฅ๋์ด์๋ ์ ์ ์ธ ์ํ์ด๋ค. ํ๋ก์ธ์ค๋ ์คํ์ ์ํด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋์ ์ธ ์ํ์ด๋ค. ๐ ํ๋ก์ธ์ค์ 5 ๊ฐ์ง ์ํ ํ๋ก์ธ์ค๋ฅผ ์ผ๊ด ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ฌ๋ ค๋๊ณ ์ฌ์ฉํ๋ฉด ๋์ง๋ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ฌดํ์ ๋๊ธฐํด์ผํ๋ค. ๋ฐ๋ผ์, ์๋ถํ ์์ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ ๋ถ๋ฐฐํ๋ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค๊ฐ ๋ฐ๋๋๋ง๋ค ๋ฌธ๋งฅ๊ตํ์ด๋ผ๋ ๋น์ฉ์ด ๋ฐ์ํ์ง๋ง, ์ผ๊ด ์์ ์ ์๊ธฐ๋ CPU์ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ ์ ์๋ค. 1. ์์ฑ ์ํ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ์ค๋น๋ฅผ ์๋ฃํ ์ํ์ด๋ค. ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ..
์ด์์ฒด์ ๋?
๋์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด์์ฒด์ -๋ฐํจ๊ฒฝ ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๐ ์ด์์ฒด์ ๋? ์ด์์ฒด์ ๋ ์ปดํจํฐ ํ๋์จ์ด ๋ฐ๋ก ์์ ์ค์น๋์ด, ์ฌ์ฉ์ ๋ฐ ๋ค๋ฅธ ๋ชจ๋ ์ํํธ์จ์ด์ ํ๋์จ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ํํธ์จ์ด์ด๋ค. ๐ก ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ ์ธํฐํ์ด์ค ํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์ปดํจํฐ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ํํธ์จ์ด์ด๋ค. ๋ํ์ ์ธ ์๋ก ์๋์ฐ, Mac OS, Linux, Unix ๋ฑ์ด ์ด์์ฒด์ ๋ผ๊ณ ํ ์ ์๋ค. ์ด์์ฒด์ ๊ฐ ์๋ ๊ธฐ๊ณ๋ ๋ง๋ค ๋น์์ ๊ตฌํํ ๊ธฐ๋ฅ ์ธ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฑ๋ฅ์ ํฅ์ํ ์ ์๋ค. ์ด์์ฒด์ ๊ฐ ์๋ ๊ธฐ๊ณ๋, ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ ์ฑ๋ฅ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ ๊ธฐ๊ณ์ด๋ค. ์ ํ๊ธฐ์ ์ค๋งํธํฐ์ ๋น๊ตํด๋ณด๋ฉด, ์ ํ๊ธฐ๋ ๋ง๋ค์ด์ง ๊ธฐ๋ฅ์ธ ์ ํ๋ง ์ฌ์ฉํ ์ ์๊ณ , ์ค๋งํธํฐ์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ..