๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ง์ ๊ธฐ๋ณธ์ ์์๋ณด์. ๋์ค์ ๋ณํ์ฑ(concurrency)์ ๋ํด ๊ณต๋ถํ๊ณ ๋ค์ ๋ณต์ตํ๋ฉด ์ข์ ๊ฒ์ด๋ค.
์ต๊ทผ์๋ ์ฌ๋ฌ๊ฐ์ ์ฝ์ด๊ฐ ํ๋์ ์นฉ์ ๋ด์ฅ๋ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๊ฐ ๋์คํ ๋์๋ค. ํ์ง๋ง ์ ํต์ ์ธ ํ๋ก๊ทธ๋จ๋ค์ ์ค์ง ํ๋์ CPU๋ง ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณ๋ ฌ(parallel) ๋ก ์คํ๋๋๋ก ๋ค์ ์์ฑํด์ผ ํ๋ค.
๋์์ฑ(Concurrency) vs ๋ณ๋ ฌ์ฑ(Parallelism) ์ฐธ๊ณ
๋ณดํต ์ฐ๋ ๋๋ฅผ ์ฌ๋ฌ ์ฝ์ด์ ํ ๋นํ๋ ๋ฐฉ์์ ํตํด ์ด๋ฅผ ํด๊ฒฐํ๋ค.
์ด์์ฒด์ ๋ ์ด์ ๋์ํด์ผ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ๋ฐฐ์ด CPU ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ๋จ์ผ CPUํ๊ฒฝ์์ ๋ ผ์๋ ๋ด์ฉ์ด๋ค. ์ด๋ฅผ ๋ฉํฐ์ฝ์ด ํ๊ฒฝ์์ ๋์ํ๋๋ก ํ์ฅํด๋ณด์. ํต์ฌ ์ง๋ฌธ : ์ฌ๋ฌ CPU์ ์์ ์ ์ด๋ป๊ฒ ์ค์ผ์ค ํด์ผ ํ๋๊ฐ
1. ๋ฐฐ๊ฒฝ: ๋ฉํฐํ๋ก์ธ์ ๊ตฌ์กฐ
๋จ์ผ CPU ํ๋์จ์ด์ ๋ฉํฐ CPU ํ๋์จ์ด๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ? ๋ค์์ ํ๋ก์ธ์๊ฐ ๋ฐ์ดํฐ ๊ณต์ , ๊ทธ๋ฆฌ๊ณ ํ๋์จ์ด ์บ์์ ์ฌ์ฉ ๋ฐฉ์์์ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค. ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ์ดํด๋ณด๊ธด ์ด๋ ค์ฐ๋, ๊ฐ๋ ์ ์ผ๋ก๋ง ๋ค๋ค๋ณด์.
๋จ์ผ CPU ์์คํ ์๋ ํ๋์จ์ด ์บ์ ๊ณ์ธต์ด ์กด์ฌํ๋ค. ์บ์๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๋ ์๊ณ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์บ์๋ ํฌ๊ธฐ๊ฐ ์์ ๋์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
ํ๋ก์ธ์๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์์ํ๋ฉด ์ฝ์ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ๋์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์บ์์ ํด๋น ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฌํ๋ค.
์บ์๋ ์ง์ญ์ฑ(locality)์ ๊ธฐ๋ฐํ๋ค.
- ์๊ฐ ์ง์ญ์ฑ(temporal locality): ๋ฐ์ดํฐ๊ฐ ํ ๋ฒ ์ ๊ทผ๋๋ฉด ๊ฐ๊น์ด ๋ฏธ๋์ ๋ค์ ์ ๊ทผ๋ ํ๋ฅ ์ด ๋๋ค. ex) ๋ฃจํ์์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ ์ ๊ทผ๋๋ ๋ณ์
- ๊ณต๊ฐ ์ง์ญ์ฑ(spatial locality): ํ๋ก๊ทธ๋จ์ด ์ฃผ์ x์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ฉด, x ๊ทผ์ฒ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ ๊ทผ๋ ํ๋ฅ ์ด ๋๋ค. ex) ์ ์ฒด ๋ฐฐ์ด์ ์ฐจ๋ก๋๋ก ์ ๊ทผํ๋ ํ๋ก๊ทธ๋จ

๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํ๋์ ์์คํ ์ ์ฌ๋ฌ CPU๊ฐ ์กด์ฌํ๊ณ , ํ๋์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น?
CPU 1์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์ฃผ์ A์ ์จ์๋ ๊ฐ D๋ฅผ ์ฝ๋๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๊ฐ D๋ฅผ ์ฝ๊ณ ๊ฐ์ Dโ์ผ๋ก ๋ณ๊ฒฝํ๋ค. ์ด ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๊ฒ์ ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ณดํต ์บ์์ Dโ ๊ฐ์ ์ฐ๊ณ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์๋ ๋์ค์ ๋ฐ์ํ๋ค. ์ด ๋ CPU 2์์ ์ฃผ์ A์ ๊ฐ์ ์ฝ์ผ๋ฉด Dโ๊ฐ ์๋ D๋ฅผ ์ฝ๊ฒ ๋๋ค.
์ด๋ฅผ ์บ์ ์ผ๊ด์ฑ ๋ฌธ์ (cache coherence) ๋ผ๊ณ ํ๋ค. ์บ์ ์ผ๊ด์ฑ ๋ฌธ์ ๋ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น? ํ๋์จ์ด๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ณ์ ๊ฐ์ํ๊ณ , ๊ด๋ฆฌํ๋ ํด๊ฒฐ์ฑ ์ด ์๋ค. ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ค์ด ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐฑ์ ํ ๋ ๊ณต์ ๋๋๋ก, ๋ฒ์ค ๊ธฐ๋ฐ ์์คํ ์์ ๋ฒ์ค ์ค๋ํ ์ด๋ผ๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
๋ฒ์ค ์ค๋ํ
์บ์๊ฐ ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฒ์ค์ ํต์ ์ํฉ์ ๋ชจ๋ํฐ๋งํ๋ค, ์บ์ ๋ฐ์ดํฐ์ ๋ํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์์ ์ ๋ณต์ฌ๋ณธ์ ๋ฌดํจํ ์ํค๊ฑฐ๋ ์๋ก์ด ๊ฐ์ ์บ์์ ๊ธฐ๋กํ๋ค.
2. ๋๊ธฐํ
์บ์๊ฐ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ๋ด๋นํ๋ค๋ฉด, ์ด์์ฒด์ ๋ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
CPU๊ฐ ๋์ผํ ๋ฐ์ดํฐ ๋๋ ๊ตฌ์กฐ์ฒด์ ์ ๊ทผํ ๋, ์ฌ๋ฐ๋ฅธ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฝ๊ณผ ๊ฐ์ ์ํธ ๋ฐฐ์ ๋ฅผ ๋ณด์ฅํ๋ ๋๊ธฐํ ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์์๋ฅผ ์ญ์ ํ๋ ์ฝ๋๋ฅผ ์๊ฐํด๋ณด์.
์ฌ์ฉ์๊ฐ ํจ์๋ฅผ ๋ ๋ฒ ํธ์ถํ์ฌ ๋ ์ฐ๋ ๋๊ฐ ๋์์ ๋ฃจํด์ผ๋ก ์ง์
ํ์ ๋, ํฌ์ธํฐ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ธฐ๋ก๋๊ณ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ฒ ํด์ ํ๊ฒ ๋๋ค. ๋ ๋ฒ ํธ์ถํ๋๋ฐ, ํ ๋ฒ๋ง ์ง์์ก๋ค.
ํด๊ฒฐ์ฑ
์ ๋ฝ์ ๊ฑธ์ด์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ๋ง๋๋ ๊ฒ์ด๋ค. ๊ฐ๋จํ mutex๋ฅผ ํ ๋นํ๊ณ (pthread_mutex_t m;) ๋ฃจํด์ ์์์ lock(&m), ๋ง์ง๋ง์ unlock(&m) ์ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ํ์ง๋ง CPU์ ๊ฐ์๊ฐ ์ฆ๊ฐํ ์๋ก, ๋๊ธฐํ๋ ์๋ฃ๊ตฌ์กฐ์ ์ ๊ทผํ๋ ์ฐ์ฐ์ ๋งค์ฐ ๋๋ ค์ง๋ค.
3. ์บ์ ์นํ์ฑ
CPU์์ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋, ํด๋น CPU ์บ์์ TLB์ ์๋นํ ์์ ์ ๋ณด๋ฅผ ์ฌ๋ ค ๋๋๋ฐ, ์ด ๋๋ฌธ์ ๋ค์ ๋ฒ์ ์คํ ๋ ๋ ๋์ผํ CPU์์ ์คํ๋๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ํด๋น CPU ์บ์์ ์ผ๋ถ ์ ๋ณด๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ์ด๋ค. ์บ์ ์ผ๊ด์ฑ ํ๋กํ ์ฝ ๋๋ฌธ์ ๋ค๋ฅธ CPU์์ ์คํ๋๋๋ผ๋ ์ ๋๋ก ์คํ์ ๋๊ฒ ์ง๋ง, ๋ค๋ฅธ CPU์์ ์คํ๋๋ ๊ฒฝ์ฐ ํ์ํ ์ ๋ณด๋ฅผ ์บ์์ ๋ค์ ํ์ฌํด์ผ ํ๋ค.
CPU ์บ์(CPU Cache) ๋ CPU์ ์ฃผ๊ธฐ์ต์ฅ์น ์ฌ์ด์ ์์นํ์ฌ, CPU๊ฐ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅํด ๋๋ ๊ณ ์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. CPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ ๋, ๋จผ์ CPU ์บ์์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค. ์ด๋ ํด๋น ๋ฐ์ดํฐ๊ฐ CPU ์บ์์ ์์ผ๋ฉด โ์บ์ ํํธ(Cache Hit)โ๋ผ๊ณ ํ๋ฉฐ, ์์ผ๋ฉด โ์บ์ ๋ฏธ์ค(Cache Miss)โ๋ผ๊ณ ํ๋ค.
๋ฐ๋ฉด, TLB(Translation Lookaside Buffer) ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์ ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ๋ ๊ณผ์ ์ ๊ฐ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์บ์์ด๋ค. CPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ๋ ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํด์ผ ํ๋๋ฐ, ์ด๋ ๋จผ์ TLB๋ฅผ ์กฐํํ๋ค. TLB์ ํด๋น ์ ๋ณด๊ฐ ์์ผ๋ฉด โTLB ํํธโ๋ผ๊ณ ํ๊ณ , ์์ผ๋ฉด โTLB ๋ฏธ์คโ๋ผ๊ณ ํ๋ค.
๋ ๊ธฐ์ ๋ชจ๋ CPU์ ์์ ์ ๊ฐ์ํํ๊ธฐ ์ํ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ด์ง๋ง, ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ์ ๊ทธ ์ญํ ์ ์ฐจ์ด๊ฐ ์๋ค. CPU ์บ์๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ด ๋ฐ์ดํฐ๋ CPU๊ฐ ์ง์ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ๋ฐ๋ฉด์, TLB๋ ๊ฐ์ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ฐ์ ๋งคํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉฐ, ์ด ์ ๋ณด๋ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ฆ, CPU ์บ์๋ โ๋ฌด์โ์ ์ ์ฅํ๋ ๋ฐ๋ฉด, TLB๋ โ์ด๋์โ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค.
4. ๋จ์ผ ํ ์ค์ผ์ค๋ง
๋ฉํฐํ๋ก์ธ์ ์์คํ ์ ์ค์ผ์ค๋ฌ์ ๋ํด ์์๋ณด์. ๋จ์ผ ํ๋ก์ธ์์์ ํ๋ ๊ฒ ์ฒ๋ผ, ๊ทธ๋๋ก ์ ์ฉํ ์ ์๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋จ์ผ ํ ๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ง(single queue multiprocessor scheduling, SQMS) ์ด๋ผ ๋ถ๋ฅธ๋ค.
์์ฃผ ๋จ์ํ๋ค. CPU๊ฐ 1๊ฐ์ผ ๋๋ ์์ ์ ํ๋์ฉ ์ ํํด์ ์คํํ๊ณ , CPU๊ฐ 2๊ฐ์ผ ๋๋ ์์ ์ ๋๊ฐ์ฉ ์ ํํด์ ์คํํ๋ฉด ๋๋ค. ํ์ง๋ง ๋จ์ ์ด ์๋ค.
- ํ์ฅ์ฑ (scalability) ๊ฒฐ์ฌ: ์ค์ผ์ค๋ฌ๊ฐ ๋ค์์ CPU์์ ๋์ํ๋๋ก ์ฝ๋์ ๋ฝ์ ์ฝ์ ํด์ผ ํ๋ค. ๊ทธ๋์ผ ์คํ์ํฌ ๋ค์ ์์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค(๋์์ ๊ฐ์ ์์ ๊ณ ๋ฅด๋ฉด?). CPU ๊ฐ์๊ฐ ์ฆ๊ฐํ ์๋ก ๋ฝ์ ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํ์ํจ๋ค.
- ์บ์ ์นํ์ฑ (cache affinity): ๊ฐ CPU๋ ๊ณต์ ํ์์ ๋ค์ ์์
์ ์ ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์์
์ CPU๋ฅผ ์ฎ๊ฒจ๋ค๋๊ฒ ๋๋ค.
ํน์ ์์
๋ค์ ๋ํด์ ์บ์ ์นํ์ฑ์ ๊ณ ๋ คํ์ฌ ์ค์ผ์ค๋งํ๊ณ , ๋ค๋ฅธ ์์
๋ค์ ์ฌ๋ฌ๊ตฐ๋ฐ๋ก ๋ถ์ฐ์ํค๋ ์ ์ฑ
์ ์ฌ์ฉํ ์ ์๊ธด ํ๋ค. ํ์ง๋ง ๊ตฌํ์ด ๋ณต์กํด์ง๋ค.

5. ๋ฉํฐ ํ ์ค์ผ์ค๋ง
์ด๋ฌํ ๋ฌธ์ ๋๋ฌธ์ ์ผ๋ถ ์์คํ ์ CPU๋ง๋ค ํ๋ฅผ ํ๋์ฉ ๋๋ค. ์ด ๋ฐฉ์์ ๋ฉํฐ ํ ๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ง(multi-queue multiprocessor scheduling, MQMS)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ๊ฐ์ ํ๋ ๋ผ์ด๋ ๋ก๋น๊ฐ์ ํน์ ์ค์ผ์ค๋ง ๊ท์น์ ๋ฐ๋ฅด๊ณ ์๋ค. ์์ ์ด ์ฌ๋ฌ ์ค์ผ์ค๋ง ํ ์ค ํ๋์ ๋ฐฐ์น๋๋ค.

์ , ๊ฐ ๋ฐฐ์น๋์๊ณ , ์ , ๊ฐ ๋ฐฐ์น๋์๋ค.

๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ด๋ผ๋ฉด ์ด๋ ๊ฒ ์ค์ผ์ค๋ง ๋ ๊ฒ์ด๋ค.
SQMS์ ๋นํด ํ์ฅ์ฑ์ด ์ข๋ค. CPU ๊ฐ์๊ฐ ์ฆ๊ฐํ ์๋ก ํ์ ๊ฐ์๋ ์ฆ๊ฐํ๋ฏ๋ก ๋ฝ์ ๋ํ ๊ฑฑ์ ์ ํ ํ์๊ฐ ์๋ค. ๋ MQMS๋ ์บ์ ์นํ์ ์ด๋ค. ์์ ์ด ๊ฐ์ CPU์์ ๊ณ์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์บ์์ ์ ์ฅ๋ ๋ด์ฉ์ ๊ณ์ ์ฌ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง MQMS๋ ์ํฌ๋ก๋์ ๋ถ๊ท ํ (load imbalance) ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.

์ด๋ ๊ฒ ์ ์๋ ๋ชจ๋ ์์ ๋ค์ด ์ข ๋ฃ๋๋ค๋ฉด

CPU 0์ ์ผ์ ํ์ง ์์ ๊ฒ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ์ ๋ค๋ฅธ CPU๋ก ์ด์ฃผ (migration) ์ํด์ผ๋ก์จ ์ํฌ๋ก๋์ ๊ท ํ์ ๋ฌ์ฑํ ์ ์๋ค.

์ ์์ ์ด ํ๋, ์ ์์ ์ด ๋ ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. ์ด์ฃผ ์์ด ๊ทธ๋ฅ ์คํ์ํค๋ฉด ์์ A๊ฐ ๋จ๋ค๋ณด๋ค 2๋ฐฐ์ CPU ์์์ ๋ฐ์ ๊ฒ์ด๋ค.

์ด๋ฐ ์์ผ๋ก ์์ ์ ์ง์์ ์ผ๋ก ์ด์ฃผ์์ผ, ์ํฌ๋ก๋์ ๊ท ํ์ ๋ฌ์ฑํ ์ ์๋ค. ๋ชจ๋ 8๋ฒ์ ํ์ ์ฌ๋ผ์ด์ค๋ฅผ ๋ฐ์๋ค. ์์ ์ด ์ ๊ฒ ํ ๋น๋ ํ๊ฐ, ๋ค๋ฅธ ํ๋ฅผ ๊ฐ๋ ๊ฒ์ฌํ๋ค. ์์ ์ด ๋ง๋ค๋ฉด, ์์ ์ ๊ฐ์ ธ์์ ๊ท ํ์ ๋ง์ถ๋ค.
6. Linux ๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ฌ
Linux์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ฌ๊ฐ ์กด์ฌํ๋ฉฐ, ๋ํ์ ์ผ๋ก O(1) ์ค์ผ์ค๋ฌ, Completely Fair Scheduler(CFS), ๊ทธ๋ฆฌ๊ณ BFS ์ค์ผ์ค๋ฌ๊ฐ ์๋ค. ์ด๋ค ์ค์ผ์ค๋ฌ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ฑ๊ณผ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- O(1) ์ค์ผ์ค๋ฌ: ์ด๋ ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์๊ฐ์ ๋ฐ๋ผ ๋ณ๊ฒฝํ๋ฉฐ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์์ ์ ์ ํํ๋ค. ์ํธ์์ฉ์ ์ฐ์ ์ํ๋ ํน์ง์ด ์๋ค.
- CFS: ์ด๋ ๊ฒฐ์ ๋ก ์ ์ธ ๋น๋ก๋ฐฐ๋ถ ๋ฐฉ์์ผ๋ก ์ค์ผ์ค๋งํ๋ค. ๋ณดํญ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๊ฐ๊น๋ค๊ณ ๋ณผ ์ ์๋ค.
- BFS: ์ด๋ ์ ์ผํ๊ฒ ๋จ์ผ ํ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ๋น๋ก๋ฐฐ๋ถ ๋ฐฉ์์ผ๋ก ์ค์ผ์ค๋งํ๋ค. ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ธ Earliest Eligible Virtual Deadline First(EEVDF)์ ๊ธฐ๋ฐ์ ๋๊ณ ์๋ค.
7. ์์ฝ
๋ฉํฐํ๋ก์ธ์ ์ค์ผ์ค๋ง์๋ ํฌ๊ฒ ๋จ์ผ ํ ๋ฐฉ์๊ณผ ๋ฉํฐ ํ ๋ฐฉ์์ด ์๋ค.
- ๋จ์ผ ํ ๋ฐฉ์: ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์ํฌ๋ก๋์ ๊ท ํ์ ์ ๋ง์ถ๋ ํน์ง์ด ์๋ค. ํ์ง๋ง, ๋ง์ ํ๋ก์ธ์์ ๋ํ ํ์ฅ์ฑ๊ณผ ์บ์ ์นํ์ฑ์ด ์ข์ง ์๋ค.
- ๋ฉํฐ ํ ๋ฐฉ์: ํ์ฅ์ฑ์ด ์ข๊ณ ์บ์ ์นํ์ฑ์ ์ ๋ค๋ฃจ๋ ๋ฐ๋ฉด, ์ํฌ๋ก๋์ ๋ถ๊ท ํ์ ์ทจ์ฝํ๊ณ ๊ตฌํ์ด ๋ณต์กํ๋ค.
OSTEP ๊ต์ฌ ์ฐธ๊ณ
