์ด์์ฒด์
- ์ปดํจํฐ ์์คํ ์ ํ๋์จ์ด์ ์ํํธ์จ์ด ์์์ ๊ด๋ฆฌํ์ฌ ์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒฝ์ ์ ๊ณตํ๋ ์์คํ ์ํํธ์จ์ด
์ปค๋
- ์ด์์ฒด์ ์ ํต์ฌ ์์ญ์ผ๋ก, ํ๋์จ์ด์ ์ง์ ์ํธ์์ฉํ๋ฉฐ ์์์ ํจ์จ์ ๊ด๋ฆฌ, ๋ณดํธ, ์ธํฐํ์ด์ค ์ ๊ณต ๋ด๋น
- ์์คํ ์ฝ๊ณผ ๋๋ผ์ด๋ฒ ๋ฑ์ ๊ธฐ๋ฅ์ด ํฌํจ ๋จ
์ด์์ฒด์ ์ ์ฃผ์ ์ญํ
- CPU ๊ด๋ฆฌ
- ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๊ณต์ ํ๊ฒ CPU๋ฅผ ๋ฐฐ๋ถํ๋ CPU ์ค์ผ์ค๋ง์ ๋ด๋น
- ํ๋ก์ธ์ค์ ์์ฑ, ์๋ฉธ, ์ํ ์ ์ด ๋ฑ์ ๊ด๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ณ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ํ๊ฒฝ์ ์ง์
- ํ์ผ/๋๋ ํฐ๋ฆฌ ๊ด๋ฆฌ: ํ์ผ ์์คํ ์ ํตํด ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ ๊ทผ ๊ธฐ๋ฅ์ ์ ๊ณต
- ํ๋ก์ธ์ค์ ์ค๋ ๋ ๊ด๋ฆฌ: ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ๊ณ , ํ๋ก์ธ์ค ๋ด๋ถ์ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌ
- ์์ ๋ณดํธ & ํ๋์จ์ด ์ธํฐํ์ด์ค ์ ๊ณต
- ์ฌ์ฉ์์ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด๋ฅผ ์ง์ ์ ์ดํ์ง ๋ชปํ๊ฒ ํ์ฌ ์์ ์ฑ์ ์ ๊ณต
- ํค๋ณด๋, ๋ง์ฐ์ค, ๋์คํฌ์ ๊ฐ์ ์ฅ์น์ ๋ํ ์ ๊ทผ์ ๊ด๋ฆฌ
์์คํ ์ฝ
- ์์ฉ ํ๋ก๊ทธ๋จ(์ฌ์ฉ์ ์์ญ)์ด ์ด์์ฒด์ ์ ์๋น์ค(์ปค๋ ์ฝ๋)๊ฐ ํ์ํ ๋ ์์ฒญํ๋ ํน์ ํจ์
- ๋ํ์ ์ผ๋ก fork(), exec() ๋ฑ์ด ์์ผ๋ฉฐ, ํ์ผ ์ ์ถ๋ ฅ, ํ๋ก์ธ์ค ์์ฑ ๋ฑ์์ ์ฌ์ฉ
์ปค๋ ์์ญ(Kernel Mode)๊ณผ ์ฌ์ฉ์ ์์ญ(User Mode)
- ์ปค๋ ์์ญ: OS ํต์ฌ์ด ์คํ๋๋ ๊ณต๊ฐ, ์์์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅ
- ์ฌ์ฉ์ ์์ญ: ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๊ณต๊ฐ, ์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ
- ์ฌ์ฉ์ ๋ชจ๋์์๋ ์ด์์ฒด์ ์๋น์ค์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋ฉฐ, ๋ฐ๋์ ์์คํ ์ฝ์ ํตํด์๋ง ์ ๊ทผ
- ์ด์ค ๋ชจ๋: CPU๊ฐ ๊ฐ ์์ญ๋ง๋ค ์ ๊ทผ ๊ถํ์ ๋ค๋ฅด๊ฒ ๋ถ์ฌ, ๋ณด์ ๋ฐ ์์ ์ฑ ๋ณด์ฅ
- ์คํ ๊ณผ์ : ์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ → ์์คํ ์ฝ ํธ์ถ → ์ฌ์ฉ์ ์์ญ์ ์์ ๋ฐฑ์ (์คํ/ํ๋ก์ธ์ค ์ปจํ ์คํธ ๋ฑ) → ์ปค๋๋ก ์ ํ(์ปค๋ ๋ชจ๋ ์ง์ ) → ์ปค๋ ์ฝ๋/์ธํฐ๋ฝํธ ์ฒ๋ฆฌ → ๋ค์ ์ฌ์ฉ์ ์์ญ ๋ณต์ ํ ์ฌ๊ฐ
์์คํ ์ฝ, ์ธํฐ๋ฝํธ, ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
- ์์คํ ์ฝ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ์ ํ ์ข ๋ฅ๋ก ๋ณผ ์ ์๋ค.
- ์ ์ถ๋ ฅ ๋ฑ ์์ ์ ๊ทผ ์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ด๋ ์ปค๋์ด ๊ด๋ จ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
- ํ๋์จ์ด ์ธํฐ๋ฝํธ: ์ฅ์น(ํค๋ณด๋, ๋คํธ์ํฌ ๋ฑ)์์ ๋ฐ์ํ๋ ์ ํธ
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ: ์์คํ ์ฝ ๋ฑ ํ๋ก๊ทธ๋จ์ด ๋ช ๋ น์ ํตํด ๋ฐ์์ํค๋ ์ ํธ
๋ฉ๋ชจ๋ฆฌ ์์ญ
์ฝ๋ ์์ญ
- CPU๊ฐ ์ฝ๊ณ ์คํํ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด(๊ธฐ๊ณ์ด ์ฝ๋)๊ฐ ์ ์ฅ๋จ
- ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์คํํ์ผ์ด ์ ์ฌ๋จ. ์คํ ์ค ๋ด์ฉ์ด ๋ณํ์ง ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋จ ์์~์ข ๋ฃ๊น์ง ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง
๋ฐ์ดํฐ ์์ญ
- ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๋ฅผ ์ ์ฅ
- ์ ์ ๋ณ์
- ํ๋ก๊ทธ๋จ์ด ์์๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ๊ทธ ๊ฐ๊ณผ ๊ณต๊ฐ์ด ์ ์ง๋๋ ๋ณ์, ํจ์ ๋ด์์ ์ ์ธ ์: ํจ์๊ฐ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋์ด๋ ๋ณ์๋ ํ ๋ฒ๋ง ์ด๊ธฐํ๋๊ณ , ์ด์ ๊ฐ์ ๊ณ์ ๋ณด์กด. ์ ์ธ๋ ํจ์/ํ์ผ ๋ด์์๋ง ์ ๊ทผํ ์ ์๋ค.
- ์คํ ์ค ํฌ๊ธฐ๊ฐ ๋ณํ์ง ์๋ ์ ์ ํ ๋น ์์ญ. ํ๋ก๊ทธ๋จ ์์ ์ ํ ๋น, ์ข ๋ฃ ์ ์๋ฉธ
- ์ด๊ธฐํ๋ ๋ฐ์ดํฐ์ ์ด๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ(BSS ์์ญ)๊ฐ ๋๋ ์ง ์ ์์
ํ ์์ญ
- ์ฌ์ฉ์ ์ฝ๋์์ ์ง์ ๋์ ์ผ๋ก ํ ๋น(new, malloc), ํด์ (delete, free)ํ๋ ๊ณต๊ฐ
- ํ๋ก๊ทธ๋จ ์คํ ์ค ํฌ๊ธฐ๊ฐ ๋ณํ ์ ์๋ ๋์ ํ ๋น ์์ญ
- ๊ณต๊ฐ์ ํ ๋นํด ๋๊ณ ๋ฐํํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํจ. Java, Python์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ๋ก ์๋ ๊ด๋ฆฌ
์คํ ์์ญ
- ํจ์ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์, ๋งค๊ฐ ๋ณ์, ํจ์ ๋ณต๊ท ์ฃผ์ ๋ฑ ์ ์ฅ
- ํธ์ถ/๋ณต๊ท์ ์๋ ์์ฑ·์๋ฉธ. ์คํ ํ๋ ์ ๊ตฌ์กฐ, ํ๋ก๊ทธ๋จ ์คํ ์ค ํฌ๊ธฐ๊ฐ ๊ณ์ ๋ณํจ
PCB๋?
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์ด๋ฅผ ์๋ณํ ์ ์๋ ์ปค๋ ๋ด์ ์ ๋ณด๊ฐ ํ์ํ๋ค.
์ฆ, ์ปค๋ ์์ญ์์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ณ·๊ด๋ฆฌํ๋ ์ ๋ณด ์งํฉ
ํ๋ก์ธ์ค ์์ฑ ์ ์ปค๋ ๋ด์ ์์ฑ, ํ๋ก์ธ์ค ์คํ ์ข ๋ฃ ์ ์๋ฉธ
์ปค๋ ๋ด์ ํ๋ก์ธ์ค ํ ์ด๋ธ์ ์ฌ๋ฌ PCB๋ค์ด ๊ด๋ฆฌ๋์ด ์์
PCB ์ ๋ณด ๋ด์ฉ
- PID(ํ๋ก์ธ์ค ์๋ณ์), ๋ ์ง์คํฐ ๊ฐ(๋ฌธ๋งฅ ์ ๋ณด), ํ๋ก์ธ์ค ์ํ, CPU ์ค์ผ์ค๋ง ์ ๋ณด(์ฐ์ ์์ ๋ฑ), ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์น, ์ด๋ฆฐ ํ์ผ, ์ ์ถ๋ ฅ ์ฅ์น ์ ๋ณด ๋ฑ
PCB ๊ด๋ฆฌ
- PCB๋ ์ปค๋์ ํ๋ก์ธ์ค ํ ์ด๋ธ์์ ์ถ๊ฐ/์ญ์ ๋จ
- ์ข๋น ํ๋ก์ธ์ค: ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ด ์์์ ํ์๋๋๋ฐ, ๋ถ๋ชจ๊ฐ ์ ์์ ์ผ๋ก ์๊ฑฐํ์ง ์์ PCB๊ฐ ๋จ์์๋ ์ํ
- ๊ณ ์ ํ๋ก์ธ์ค: ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ข ๋ฃ๋์ด ๋ถ๋ชจ๊ฐ ์๋ ํ๋ก์ธ์ค. ์ด๋ฐ ๊ฒฝ์ฐ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ init ํ๋ก์ธ์ค๊ฐ ๋์ ๋ถ๋ชจ๊ฐ ๋จ
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ์ ์ค๋น/์คํ ์ํ
ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด, ์คํํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ปค๋์ด PCB๋ฅผ ์์ฑํ๋ค.
ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ์ํ์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์๊ฐ๋ฉด์ ์คํ๋๋๋ฐ, ์คํ๋๋ค๋ ๊ฒ์ cpu์ ์์์ ํ ๋น ๋ฐ์๊ฒ๊ณผ ๊ฐ๋ค.
์ค๋น์ํ
- ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด CPU ํ ๋น์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ.
- ํ์ํ ์์์ ๊ฐ์ท์ง๋ง ์์ง CPU๋ฅผ ํ ๋น ๋ฐ์ง ์์ ์ํ.
์คํ์ํ
- CPU ์์์ด ์ค์ ๋ก ํ ๋น๋์ด ๋ช ๋ น์ ์คํํ๊ณ ์๋ ์ํ.
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ์์ง๋ง, ํ๋์ CPU(๋จ์ผ์ฝ์ด ๊ธฐ์ค)๋ ๋์์ ํ ํ๋ก์ธ์ค๋ง ์คํ์ํ๊ฐ ๋ ์ ์๋ค.
CPU ์์๊ณผ ํ์ ์ธํฐ๋ฝํธ
๊ฐ ํ๋ก์ธ์ค๋ CPU ์ค์ผ์ค๋ง ์ ์ฑ ์ ๋ฐ๋ผ ์ผ์ ์๊ฐ(TIME SLICE) ๋์๋ง CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ง์ ๋ ์๊ฐ์ด ์ง๋๋ฉด ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๊ณ , OS๊ฐ CPU๋ฅผ ํ์ํด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋นํ๋ค.
์ด๋ฅผ ํตํด ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๊ฒ CPU๋ฅผ ๋ฒ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ ๊ฒ
์ด๋ ๊ฒ๋๋ฉด ์ฌ์ฉํ๋ ๋ ์ง์คํฐ ๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด, ํ์ผ, ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ๊ธฐ๋กํด์ผํ๊ณ , ์ด๋ค์ ๋ฌธ๋งฅ์ด๋ผํ๋ค. ์์์ ๋งํ๊ฒ์ฒ๋ผ PCB์ ๋ฌธ๋งฅ์ด ์ ์ฅ๋๊ณ , OS๊ฐ ์ธ์ ๋ ์ง ์ํ๋ฅผ ๋ฐฑ์ /๋ณต๊ตฌํ ์ ์๋ค.
ํ์ ์ธํฐ๋ฝํธ, ์์คํ ์ฝ, ์ ์ถ๋ ฅ ๋๊ธฐ ๋ฑ์ผ๋ก CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ ๋ ํ์ฌ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ PCB์ ๋ฐฑ์ ํ๋ค.
๋ฌธ๋งฅ๊ตํ(Context Switching)
- OS๋ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํ ๋,
- ํ์ฌ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ PCB์ ๋ฐฑ์
- ๋ค์ ํ๋ก์ธ์ค์ PCB์์ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ๋ณต๊ตฌํด์ ์คํ์ ์์
- ์ด ๊ณผ์ ์ ๋ฌธ๋งฅ๊ตํ์ด๋ผ๊ณ ํ๋ฉฐ, ๋ฌผ๋ก ๋ฌธ๋งฅ ๋ฐฑ์ ๊ณผ ๋ณต๊ตฌ์์๋๋ ์์์ด ์๋ชจ๋๊ธฐ์ ๋น๋ฒํ ๋ฌธ๋งฅ๊ตํ์ ํฐ ์ค๋ฒํค๋๊ฐ ์๊ธธ ์ ์๋ค.
ํ๋ก์ธ์ค ์ํ
์์ฑ ์ํ
- ํ๋ก์ธ์ค๊ฐ ์ฒ์ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ , PCB๊ฐ ํ ๋น๋๋ค.
- ์์ง CPU๋ฅผ ํ ๋น๋ฐ์ง ์์ ์ํ
์ค๋น ์ํ
- ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ๋ ์ค๋น๊ฐ ์๋ฃ๋ ์ํ
- CPU๊ฐ ํ ๋น๋ ๋๊น์ง ๋๊ธฐ ์ค์ด๋ฉฐ, ์ค๋น ์ํ → ์คํ ์ํ ์ ํ์ ๋์คํจ์น๋ผ๊ณ ํ๋ค.
- CPU ํ ๋น์ ์กฐ๊ฑด์ ์ถฉ์กฑํด ‘์คํ ๊ฐ๋ฅ’ ์ํ์ด์ง๋ง, CPU ์์์ด ๋ถ์กฑํด ์์๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
์คํ ์ํ
- CPU๊ฐ ์ค์ ๋ก ํ๋ก์ธ์ค์ ํ ๋น๋์ด ๋ช ๋ น์ด๊ฐ ์คํ๋๊ณ ์๋ ์ํ
- ์คํ ์ค ํ์ ์ธํฐ๋ฝํธ ๋ฐ์ ๋๋ ์๊ฐ์ด ๋ค ๋๋ฉด ์คํ ์ํ→์ค๋น ์ํ๋ก ์ ํ
- ์ ์ถ๋ ฅ ์์ฒญ ์ ์คํ ์ํ → ๋๊ธฐ ์ํ๋ก ์ ํ
๋๊ธฐ ์ํ
- ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ ์๋ฃ ๋ฑ ํน์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- CPU๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ์ค๋น ์ํ๋ก ์ ํ
์ข ๋ฃ ์ํ
- ํ๋ก์ธ์ค๊ฐ ์ ์ ๋๋ ๋น์ ์์ ์ผ๋ก ์คํ์ ๋ง์ณค์ ๋์ ์ํ
- ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๋ ์์์ ํ์ํ๊ณ ํด์
์ํ ๋ณ๊ฒฝ
- ์์ฑ → ์ค๋น: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ ๋ฐ ์ด๊ธฐํ ์๋ฃ → CPU ํ ๋น ๋๊ธฐ
- ์ค๋น → ์คํ: ์ค์ผ์ค๋ฌ๊ฐ CPU ํ ๋น → ํ๋ก์ธ์ค ์คํ ์์
- ์คํ → ์ค๋น: ํ์ ์ฌ๋ผ์ด์ค ์ข ๋ฃ๋ ์ ์ ์ ์ํด CPU ํ์ → ๋ค์ ๋๊ธฐ์ด๋ก ๋๊ธฐ
- ์คํ → ๋๊ธฐ: ์ ์ถ๋ ฅ ์์ฒญ, ์ด๋ฒคํธ ๋๊ธฐ ๋ฑ์ผ๋ก CPU ๋ฐ๋ฉ
- ๋๊ธฐ → ์ค๋น: ์ ์ถ๋ ฅ ์๋ฃ, ์ด๋ฒคํธ ๋ฐ์์ผ๋ก CPU ํ ๋น ๋๊ธฐ
- ์คํ → ์ข ๋ฃ: ํ๋ก์ธ์ค ์คํ ์ข ๋ฃ ๋๋ ๋น์ ์ ์ข ๋ฃ
๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ค๋ ๋
๋ฉํฐํ๋ก์ธ์ค
- ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋ฐฉ์
- ์์ ๊ณต์ : ๊ฐ ํ๋ก์ธ์ค๋ ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(์ฝ๋, ๋ฐ์ดํฐ, ํ, ์คํ)์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
- ์๋ณ: PID, ํ์ผ ๋์คํฌ๋ฆฝํฐ, ์ ์ถ๋ ฅ ์ฅ์น ๋ฑ์ด ๋ ๋ฆฝ์ ์
- ์ฅ์ : ํ๋ก์ธ์ค๊ฐ ํ๋ ์ค๋จ๋์ด๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ด ์ ์ด ์์ ์ฑ์ด ๋์
- ๋จ์ : ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC)์ด ์๋์ ์ผ๋ก ๋ณต์กํ๊ณ ๋น์ฉ์ด ํผ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์
๋ฉํฐ์ค๋ ๋
- ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋๋ ๋ฐฉ์
- ์์ ๊ณต์ : ๊ฐ์ ํ๋ก์ธ์ค ๋ด ์ค๋ ๋๋ค์ ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ๊ณต์ ํ์ง๋ง, ๊ฐ๊ฐ ๋ณ๋์ ์คํ , ์ค๋ ๋ ID, PC, ๋ ์ง์คํฐ๋ฅผ ๊ฐ์ง
- ์ฅ์ : ๋ฉ๋ชจ๋ฆฌ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ณต์ ํด ์์คํ ์์ ์ฌ์ฉ๋ ๊ฐ์, ์ค๋ ๋ ๊ฐ ํต์ ์ด ๋น ๋ฅด๊ณ ๊ฐ๋จํจ, Context Switching ๋น์ฉ์ด ํ๋ก์ธ์ค๋ณด๋ค ์ ์
- ๋จ์ : ์์ ๊ณต์ ๋ก ์ธํด ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์. ํ๋์ ์ค๋ ๋ ์ค๋ฅ๊ฐ ์ ์ฒด ํ๋ก์ธ์ค์ ์ํฅ์ ์ค
ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC) ๋ฐฉ์
๊ณต์ ๋ฉ๋ชจ๋ฆฌ
- ํ๋ก์ธ์ค๋ค์ด ๊ณตํต ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์
- ๋น ๋ฅด์ง๋ง ๋๊ธฐํ ๋ฌธ์ (Race Condition) ์ ๋ฐ ๊ฐ๋ฅ
๋ฉ์์ง ์ ๋ฌ
- ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ฉ์์ง๋ก ๊ตํ
- send(), recv() ์์คํ ์ฝ ์ฌ์ฉ, ๋๊ธฐํ ๋ฌธ์ ๋ ์ค์ง๋ง ์ปค๋์ ๊ฑฐ์น๋ฏ๋ก ์๋๊ฐ ๋๋ฆผ
๋๊ธฐํ
- ๊ณต์ ์์: ๋ฉ๋ชจ๋ฆฌ, ํ์ผ, ๋ณ์, ์ ์ถ๋ ฅ ์ฅ์น ๋ฑ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ์์
- ์๊ณ ๊ตฌ์ญ (Critical Section): ๊ณต์ ์์์ ์ ๊ทผํ๋ ์ฝ๋ ์ค์์ ๋์ ์ง์
์ ๋ฌธ์ (race condition)๊ฐ ๋ฐ์ํ ์ ์๋ ๋ถ๋ถ
- ์ฆ, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ ์ ์๋๋ก ์๋ก ์ํธ ๋ฐฐ์ ๊ฐ ํ์ํ ์ฝ๋ ์์ญ
๋ ์ด์ค ์ปจ๋์
- ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํด์ผ ํ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋์์ ๋ณ๊ฒฝํ๋ ค ํ ๋ ๋ฐ์ํ๋ ์์์น ๋ชปํ ์ค๋ฅ ์ํ
- ์) ๋ ์ด์์ ์ค๋ ๋๊ฐ ๊ฐ์ ๋ณ์๋ฅผ ๋์์ ์์ ํ๋ฉด ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฌธ์ ํด๊ฒฐ์ ์ํด์๋ ๋ฐ๋์ ์๊ณ ๊ตฌ์ญ์ ๋ํ ๋๊ธฐํ๊ฐ ํ์ํ๋ค.
๋๊ธฐํ์ ๋ ๊ฐ์ง ์กฐ๊ฑด
- ์ํธ ๋ฐฐ์ (Mutual Exclusion)
- ์๊ณ ๊ตฌ์ญ์๋ ํ ๋ฒ์ ์ค์ง ํ๋์ ํ๋ก์ธ์ค ํน์ ์ค๋ ๋๋ง ์ง์ ํ ์ ์์ด์ผ ํ๋ค.
- ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ ๊ตฌ์ญ์ด ๋น์์ง ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ์คํ ์์ ์ ์ด (์์ ๋ณด์ฅ, Progress)
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์ ์ ๊ทผํ ๋ ์ฌ๋ฐ๋ฅธ ์์๋ก ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋์ด์ผ ์ฝ๋ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
- ํ๋ก์ธ์ค๋ฅผ ๋ฌดํ์ ๋๊ธฐ์ํค๋ ์ํฉ(starvation)์ด ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํ๋ค.
๋๊ธฐํ ๊ตฌํ ๋ฐฉ๋ฒ
๋ฎคํ ์ค(Mutex, ์ํธ๋ฐฐ์ ๋ฝ)
- ์๊ณ ๊ตฌ์ญ์์ง์ ํ๊ธฐ ์ ์ ๋ฐ๋์ ๋ฝ์ ํ๋(acquire)ํด์ผ ํ๊ณ , ์๊ณ ๊ตฌ์ญ์ ๋ฒ์ด๋๋ฉด ๋ฝ์ ํด์ (release)ํด์ผ ํ๋ ์ํธ๋ฐฐ์ ๊ธฐ๋ฒ
- 1๊ฐ์ ๊ณต์ ์์๋ง ๋๊ธฐํ ๊ฐ๋ฅ(1๊ฐ์ ํ๋ก์ธ์ค๋ ์ค๋ ๋๋ง ์๊ณ ๊ตฌ์ญ์ ์ง์ ํ์ฉ)
- ๋ฝ์ ํ๋ํ ํ๋ก์ธ์ค/์ค๋ ๋๋ง ๋ฝ์ ํด์ ํ ์ ์์(์์ ๊ถ ์กด์ฌ)
์ธ๋งํฌ์ด(Semaphore)
- ์ฌ๋ฌ ๊ฐ์ ๊ณต์ ์์์ ๋์์ผ๋ก ๋๊ธฐํ๋ฅผ ์ํํ๋ ๊ธฐ๋ฒ
- ์ ์ ๋ณ์ S๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ์์ ์๋ฅผ ๋ํ๋.๋๊ธฐํ ํจ์๋ wait()(P์ฐ์ฐ)๊ณผ signal()(V์ฐ์ฐ)์ผ๋ก ๊ณต์ ์์ ํ๋๊ณผ ๋ฐํ์ ์กฐ์ ํจ
- ํ๋ ์ด์์ ๋์ ์ ๊ทผ์ ํ์ฉํ ์ ์์
- ์์ ๊ถ์ด ์์ด์ ์์์ ํ๋ก์ธ์ค๊ฐ signal()์ ํธ์ถํ ์ ์์
- ์ฌ๋ฌ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ํ๋์ ์ธ๋งํฌ์ด๋ฅผ ๊ณต์ ํ ์ ์์
์กฐ๊ฑด ๋ณ์(Condition Variable)
- ํน์ ์กฐ๊ฑด์ด ๋ง์กฑ๋ ๋๊น์ง ํ๋ก์ธ์ค/์ค๋ ๋๋ฅผ ๋๊ธฐ์ํค๊ณ , ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๋๊ธฐ๋ฅผ ํด์ ํ๋ ๋๊ธฐํ ๋๊ตฌ
- ํน์ง: ๋ฎคํ ์ค๋ ๋ชจ๋ํฐ์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉ๋๋ฉฐ, ์๊ณ ๊ตฌ์ญ ๋ด์์ ๋๊ธฐ์ ์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ค.
๋ชจ๋ํฐ(Monitor)
- ๊ณต์ ์์๊ณผ ๊ทธ ์์์ ๋ํ ์ฐ์ฐ(ํจ์)์ผ๋ก ๊ตฌ์ฑ๋ ์ถ์์ ๋๊ธฐํ ๋ฐฉ๋ฒ
- ๋ชจ๋ํฐ ์์ ์ฌ๋ฌ ์ค๋ ๋/ํ๋ก์ธ์ค๊ฐ ์ง์ ํ ์ ์๋๋ก ์ํธ๋ฐฐ์ ๋ฅผ ๋ณด์ฅ
- ๋ชจ๋ํฐ ๋ด์์ ์กฐ๊ฑด ๋ณ์๋ก ์คํ ์์ ์ ์ด ๋ฐ ๋๊ธฐํ ๊ฐ๋ฅ
- ์ด๋ฏธ ์๊ณ ๊ตฌ์ญ์ ๋ค๋ฅธ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ์์ผ๋ฉด ๋๊ธฐ ํ์์ ๊ธฐ๋ค๋ฆผ
๋ฐ๋๋ฝ(๊ต์ฐฉ์ํ)
๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์๋ก ์๋๋ฐฉ์ด ์ ์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ์ ์ง ์ํ์ ๋น ์ง๋ ํ์
์: ํ๋ก์ธ์ค A๋ ์์ 1์ ์ ์ , ์์ 2๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ , ํ๋ก์ธ์ค B๋ ์์ 2๋ฅผ ์ ์ , ์์ 1์ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ
๊ต์ฐฉ์ํ ๋ฐ์ 4๊ฐ์ง ์กฐ๊ฑด (๋์ ๋ฐ์ ์ ๊ต์ฐฉ์ํ ๋ฐ์)
- ์ํธ๋ฐฐ์ : ์์์ ํ ๋ฒ์ ํ ํ๋ก์ธ์ค๋ง ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ ์ ๋๊ธฐ: ์์์ ์ด๋ฏธ ์ ์ ํ ์ํ์์ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ๋น์ ์ : ์์์ ์ด์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ์์ ์ด ๋๋๊ธฐ์ ์ ๊ทธ ์์์ ๋บ์ด๊ฐ ์ ์๋ค.
- ์ํ๋๊ธฐ: ํ๋ก์ธ์ค๋ค์ด ์ํ ํํ๋ก ์์์ ์๋ก ๋๊ธฐํ๋ ์ํ
๊ต์ฐฉ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์๋ฐฉ(Prevention)
- ๊ต์ฐฉ์ํ ๋ฐ์ ์กฐ๊ฑด ์ค ํ๋๋ฅผ ์ฌ์ ์ ์ ๊ฑฐํ์ฌ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ
- ์: ์ํธ ๋ฐฐ์ ์ ๊ฑฐ, ์ ์ ์ ๋๊ธฐ ๋ฐฉ์ง, ๋น์ ์ ์กฐ๊ฑด ํด์ , ์ํ ๋๊ธฐ ์กฐ๊ฑด ์์ ๊ธฐ(์์์ ์์ ๋ถ์ฌ)
- ๋จ์ : ์์ ํ์ฉ๋ฅ ์ ํ, ์ค์ฉ์ฑ ๋จ์ด์ง
- ํํผ(Avoidance)
- ์์ ํ ๋น ์ ๊ต์ฐฉ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด ์ํ ์ ํ ๋น ๊ฑฐ๋ถ
- ๋ํ ์๊ณ ๋ฆฌ์ฆ: ์ํ์ ์๊ณ ๋ฆฌ์ฆ(Banker’s Algorithm)
- ๋จ์ : ์์ ํ์ ์ ๊ฒฐ๊ตญ ๊ต์ฐฉ ๊ฐ๋ฅ์ฑ ์กด์ฌ
- ๊ฒ์ถ ๋ฐ ํ๋ณต(Detection and Recovery)
- ์ฌํ ์กฐ์น๋ก, ๋ฌธ์ ์๊ธฐ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ๊ทธ ์์ ๊ฐ์ ๋ก ๋นผ์์์ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ๊ฒ. ๋ฆฌ๋ณผ๋น๊ฐ์ ๋๋
- ๋ฌด์(Ignore)
- ๊ต์ฐฉ์ํ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๊ทนํ ๋ฎ์ผ๋ฉฐ, ๋ฐ์ ์ ์ฌ๋ถํ ๋ฑ์ผ๋ก ํด๊ฒฐํ๋ ํ์ค์ ์ธ ๋ฐฉ๋ฒ
- ๋๋ถ๋ถ์ ์์ฉ ์ด์์ฒด์ (Unix, Windows)์์ ์ฑํ
CPU ์ค์ผ์ค๋ง
์ด์์ฒด์ ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค ์ค ์ด๋ ํ๋ก์ธ์ค์ CPU ์์์ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ค. ํจ์จ์ ์ด๊ณ ๊ณต์ ํ CPU ๋ฐฐ๋ถ์ด ์์คํ ์ฑ๋ฅ์ ์ข์ฐํ๋ค.
PCB ๋ด ์ฐ์ ์์: ๊ฐ ํ๋ก์ธ์ค๋ ์ฐ์ ์์๋ฅผ ๊ฐ๊ณ , ์ด์์ฒด์ ๋ PCB์ ์ฐ์ ์์๋ฅผ ๋ช ์ํด ๋์.
์ค์ผ์ค๋ฌ๋ ์ฐ์ ์์์ ๋ฐ๋ผ CPU ํ ๋น์ ๊ฒฐ์ ํ๋ค. ์ฌ์ฉ์๊ฐ ์ฐ์ ์์๋ฅผ ์กฐ์ ํ ์๋ ์๋ค.
CPU์ I/O ๋ฒ์คํธ: ํ๋ก์ธ์ค๋ CPU ์ฐ์ฐ๊ณผ ์ ์ถ๋ ฅ ์์ ์ ๋ฒ๊ฐ์ ์ํํ๋ค.
- CPU ๋ฒ์คํธ: CPU๋ฅผ ์ฌ์ฉํ๋ ์์ ์๊ฐ
- I/O ๋ฒ์คํธ: ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์์ ์๊ฐ
- CPU ๋ฐ์ด๋ ํ๋ก์ธ์ค: CPU ๋ฒ์คํธ๊ฐ ๊ธด ํ๋ก์ธ์ค
- I/O ๋ฐ์ด๋ ํ๋ก์ธ์ค: I/O ๋ฒ์คํธ๊ฐ ๊ธด ํ๋ก์ธ์ค
์ด์์ฒด์ ๋ CPU ์์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํด I/O bound ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ค.
๊ทธ ์ด์ ๋ I/O bound ํ๋ก์ธ์ค๊ฐ ์งง์ CPU ์์ ํ ๊ณง๋ฐ๋ก ์ ์ถ๋ ฅ ๋๊ธฐ ์ํ์ ๋น ์ง์ผ๋ก์จ ์ ์ถ๋ ฅ ์ฅ์น๊ฐ ๋น ๋ฅด๊ฒ ๋์์ ์์ํ๊ฒ ๋๋ค.
์ ์ถ๋ ฅ ์ฅ์น๊ฐ ๋์ ์ค์ผ ๋๋ CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์ ์์ผ๋ฏ๋ก CPU๊ฐ ์ ํด ์ํ๋ก ๋จ์ง ์๊ณ CPU bound ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ง์ฝ CPU bound ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ๊ถ์ด ์ฃผ์ด์ง๋ค๋ฉด, CPU๋ฅผ ์ค๋ ์๊ฐ ์ ์ ํ์ฌ I/O bound ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋ฐ์ง ๋ชปํ๊ณ ์ ์ถ๋ ฅ ์์ ์ ์ ๋ ์์ํ์ง ๋ชปํ๋ค. ์ด๋ก ์ธํด ์ ์ถ๋ ฅ ์ฅ์น๋ ๋์ํ์ง ์๊ณ ๋๊ธฐ ์ํ๊ฐ ๋์ด๋ ์์คํ ์์์ด ๋นํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ ์ฒด CPU ํ์ฉ๋ฅ ๋ ๋จ์ด์ง ์ ์๋ค. CPU๊ฐ ๊ณ์ ์คํ ์ค์ด์ง๋ง ์์คํ ์ ์ฒด ์์์ ๋ณํ ํ์ฉ์ด ์ ํด๋์ด ํจ์จ์ฑ์ด ๊ฐ์ํ๋ ์ํฉ์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
ํ๋์ CPU bound ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ค๋ ์ ์ ํ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU ์ฌ์ฉ์ ๋ชป ํด ์์คํ ์ ๋ฐ ์ ์ถ๋ ฅ๊ณผ ๋์์ CPU ํ์ฉ๋ฅ ์ ๊ทน๋ํํ์ง ๋ชปํ๋ค.
์ฆ, CPU๋ฅผ ๋ง์ด ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ๋ ์์คํ ์ ์ฒด ์ ์ถ๋ ฅ ์์๊ณผ CPU๊ฐ ํจ์จ์ ์ผ๋ก ๋ณํ ํ์ฉ๋์ง ๋ชปํด CPU ํ์ฉ๋ฅ ์ด ๋จ์ด์ง ์ ์๋ค.
์ค์ผ์ค๋ง ํ
- ์ค๋น ํ(Ready Queue): CPU ํ ๋น์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ PCB๋ค์ด ๋ชจ์ฌ ์๋ ํ
- ๋๊ธฐ ํ(Waiting/Blocked Queue): ์
์ถ๋ ฅ ๋ฑ ์ด๋ฒคํธ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค์ PCB๋ค์ด ํ๋ฅผ ์ด๋ฃธ
- ๋๊ธฐ ํ๋ ์ด๋ฒคํธ๋ณ(์ ์ถ๋ ฅ ์ฅ์น ๋ณ)๋ก ๋ถ๋ฆฌ๋จ.
์ด์์ฒด์ ๋ ๊ฐ ํ์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ค๋น ํ์์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ถํฐ CPU๋ฅผ ํ ๋นํ๋ค.
์ค์ผ์ค๋ฌ ์ข ๋ฅ
- ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ(Long-term): ์์คํ ์ ๋ค์ด์ฌ ํ๋ก์ธ์ค ์๋ฅผ ์กฐ์
- ์ค๊ธฐ ์ค์ผ์ค๋ฌ(Medium-term): ํ๋ก์ธ์ค๋ฅผ ์์ ์ค์งํ๊ฑฐ๋ ํ์ฑํํด ์์คํ ๋ถํ ์กฐ์
- ๋จ๊ธฐ ์ค์ผ์ค๋ฌ(Short-term, CPU Scheduler): ์ค๋น ํ์์ CPU ํ ๋นํ ํ๋ก์ธ์ค๋ฅผ ์ ์
์ค์ผ์ค๋ง ์ ํ
- ๋น์ ์ ํ(Non-preemptive): ํ๋ก์ธ์ค๊ฐ ์ค์ค๋ก CPU๋ฅผ ๋ฐ๋ฉํ ๋๊น์ง ๊ณ์ ์ฌ์ฉ
- CPU๋ฅผ ๋ ์ ํ ์ํ์ด ์๊ณ , ๊ธด ์์ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ฌดํ ๋๊ธฐํ ์ ์์.
- ์ ์ ํ(Preemptive): ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฑ์ฅ,ํ์ ์ธํฐ๋ฝํธ ๋ฑ์ผ๋ก ๊ฐ์ ๋ก CPU ๋นผ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
- FCFS (First Come First Serve): ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ์์๋๋ก ์ฒ๋ฆฌ
- SJF (Shortest Job First): CPU ๋ฒ์คํธ๊ฐ ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค ์ฐ์ ์ฒ๋ฆฌ
- Round Robin: ์๊ฐ ํ ๋น๋(ํํ )์ ์ ํด ์ํํ๋ฉฐ CPU ํ ๋น
- SRT (Shortest Remaining Time): ๋จ์ ์คํ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค ์ฐ์ ์ฒ๋ฆฌ
- ์ฐ์ ์์ ์ค์ผ์ค๋ง: ํ๋ก์ธ์ค ๋ณ ์ฐ์ ์์์ ๋ฐ๋ผ CPU ํ ๋น
- ๋ค๋จ๊ณ ํ, ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ: ์ฌ๋ฌ ํ๋ฅผ ๋๋์ด ์ฐ์ ์์๋ณ๋ก ์ค์ผ์ค๋งํ๋ฉฐ, ํผ๋๋ฐฑ์ ํตํด ํ ์ด๋๋ ๊ฐ๋ฅ
๋ฆฌ๋ ์ค 5๊ฐ์ง ์ค์ผ์ค๋ง ์ ์ฑ
- SCHED_FIFO (First In First Out)
- ์ ์ ํ ์ค์๊ฐ ์ค์ผ์ค๋ง ์ ์ฑ . ์๊ฐ ํ ๋น๋ ์์
- ์คํ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋์ ์ฐ์ ์์ ํ๋ก์ธ์ค๊ฐ CPU ์ ์
- SCHED_RR (Round Robin)
- ์๊ฐ ํ ๋น๋์ด ์๋ ์ค์๊ฐ ์ค์ผ์ค๋ง
- SCHED_FIFO์ ์ ์ฌํ์ง๋ง, ํ์ ํํ ์ ๋ค ์ฐ๋ฉด ๋๊ธฐ์ด ๋ค๋ก ์ด๋
- SCHED_NORMAL (๋๋ SCHED_OTHER)
- ์ผ๋ฐ ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ์ ์ฑ .
- CFS(Completely Fair Scheduler)๊ฐ ์ ์ฉ๋จ
- CFS๋ ๊ฐ ํ๋ก์ธ์ค์ vruntime์ด๋ผ๋ ๊ฐ์ ์คํ์๊ฐ์ ๊ด๋ฆฌํ๊ณ , ๊ฐ์ฅ ์์ vruntime์ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํจ
- vruntime์ ํ๋ก์ธ์ค์ ์ค์ ์คํ ์๊ฐ๊ณผ ์ฐ์ ์์๋ฅผ ๋ฐ์ํ ๊ฐ์ด๋ฉฐ, RB ํธ๋ฆฌ๋ก ํจ์จ์ ๊ด๋ฆฌ
- SCHED_BATCH: CPU ์ง์ฝ์ ์์ ์ ์ํ ์ ์ฑ . ๋น์ค์๊ฐ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ ํฉ
- SCHED_IDLE: ๋งค์ฐ ๋ฎ์ ์ฐ์ ์์๋ก CPU ์ฌ์ ๊ฐ ์์ ๋๋ง ์คํ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ
CPU๋ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ฉ๋ชจ๋ฆฌ(RAM) ์์ ์ฝ์ด์ ์ฒ๋ฆฌํ๋ค.
๊ทธ๋ฌ๋ ํ๋ก์ธ์ค๋ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ง์ ๋ค๋ฃจ์ง ์๋๋ค. ๋์ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ ผ๋ฆฌ ์ฃผ์: ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ ๋ง์ 0๋ฒ์ง๋ถํฐ ์์ํ๋ ๋ ๋ฆฝ๋ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๋ค.
- ๋ฌผ๋ฆฌ ์ฃผ์: ์ค์ ๋ฉ๋ชจ๋ฆฌ(RAM) ์์ ์ค์ ์์น๋ฅผ ๋ปํ๋ค.
๋ ผ๋ฆฌ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ๋ณํํ๋ ์ญํ ์ ๋ด๋นํ๋ ํ๋์จ์ด ์ฅ์น๊ฐ MMU(Memory Management Unit) ์ด๋ค.
์ฆ, CPU๊ฐ ์์ฑํ๋ ์ฃผ์(๋
ผ๋ฆฌ ์ฃผ์)๋ MMU๋ฅผ ํตํด ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํ๋์ด ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค.
์ค์ํ(Swapping)
์ด์์ฒด์ ๋ ๋์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ์คํํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ๋ ํ์ ๋ ์์์ด๋ค.
๋ฐ๋ผ์ ์ค๋ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ์ฌ์ฉ๋์ง ์๋ ํ๋ก์ธ์ค๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น(๋์คํฌ) ์ ์ค์ ์์ญ(swap area) ์ผ๋ก ๋ด๋ณด๋ธ๋ค.
์ด ๊ณผ์ ์ ์ค์ ์์(swap-out) ์ด๋ผ ํ๊ณ , ๋ค์ ์คํํ ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ค์ ์ธ(swap-in) ์ด๋ผ ํ๋ค.
์ค์ํ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ง๋ง, ๋์คํฌ ์ ๊ทผ์ด ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ์ธ๋ถ ๋จํธํ
๊ณผ๊ฑฐ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ๋ฐฐ์นํ๋ ๋ฐฉ์์ด ์ฌ์ฉ๋์๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์๋ค.
- ์ธ๋ถ ๋จํธํ(External Fragmentation): ํ๋ก์ธ์ค์ ์ข
๋ฃ์ ์์ฑ์ด ๋ฐ๋ณต๋ ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ค๊ฐ์ค๊ฐ์ ์์ ๋น ๊ณต๊ฐ์ด ์๊ธด๋ค.
- ์ด๋ฌํ ๊ณต๊ฐ์ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์๋ ํฌํจ๋์ง๋ง, ์ค์ ๋ก๋ ์ฌ์ฉํ ์ ์๋ ๋ญ๋น๋ ๊ณต๊ฐ์ด ๋๋ค.
- ํ๋ก์ธ์ค ํฌ๊ธฐ ์ ํ: ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ๋์ ์ฐ์๋ ๊ณต๊ฐ์ ์ฌ๋ผ๊ฐ์ผ ํ๋ฏ๋ก, ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ๋ ์ด ๋ฐ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ์ ์ด๋ค.
์ด์์ฒด์ ๋ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ง ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ , ๋๋จธ์ง๋ ๋์คํฌ์ ๋ณด๊ดํ๋ค.
CPU๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ์ฒด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ๊ฒ์ฒ๋ผ ์ธ์ํ๋ค.
-> ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ฒ์ผ๋ก๋ ํ์ด์ง(Paging) ๊ณผ ์ธ๊ทธ๋ฉํ ์ด์ (Segmentation) ์ด ์๋ค.
ํ์ด์ง
ํ์ด์ง์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ์ ํ ํฌ๊ธฐ์ ๋ธ๋ก์ผ๋ก ๋๋์ด ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ → ์ผ์ ๋จ์๋ก ๋๋ ํ์ด์ง(Page)
- ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ → ๋์ผํ ํฌ๊ธฐ์ ํ๋ ์(Frame)
๊ฐ ํ์ด์ง๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ์์น(ํ๋ ์)์ ์ ์ฅ๋์ด ์๋์ง๋ฅผ ํ์ด์ง ํ ์ด๋ธ(Page Table) ์ ํตํด ๊ด๋ฆฌํ๋ค.
- ํ์ด์ง ๋ฒํธ (Page number)
- ํ๋ ์ ๋ฒํธ (Frame number)
- ์ ํจ ๋นํธ (Valid bit)
- ๋ณดํธ ๋นํธ (Protection bit)
- ์ฐธ์กฐ ๋นํธ (Reference bit)
- ์์ ๋นํธ (Dirty bit)
์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ๋ก์ธ์ค์ ํ์ด์ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์ฐ์์ ์ผ๋ก ๋ฐฐ์น๋์ด๋ ์คํ์ ๋ฌธ์ ๊ฐ ์๋ค.
ํ์ง๋ง, ์ธ๋ถ ๋จํธํ๋ ์ฌ๋ผ์ง์ง๋ง, ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ด๋ถ ๋จํธํ(Internal Fragmentation)
ํ์ด์ง๋ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋์ด์ง๊ธฐ ๋๋ฌธ์, ํ๋ก์ธ์ค์ ๋ง์ง๋ง ํ์ด์ง๊ฐ ์ ํํ ํ์ด์ง ํฌ๊ธฐ๋ก ๋๋์ด๋จ์ด์ง์ง ์์ผ๋ฉด ๋จ๋ ๋ถ๋ถ์ด ์๊ธด๋ค. ์ด ๋จ๋ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๊ณ , ์ด๋ฅผ ๋ด๋ถ ๋จํธํ๋ผ๊ณ ํ๋ค.
์ธ๊ทธ๋ฉํ ์ด์
์ธ๊ทธ๋ฉํ ์ด์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์๋ฏธ ์๋ ๋จ์์ธ ์ธ๊ทธ๋จผํธ(Segment) ๋ก ๋๋๋ ๊ธฐ๋ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ์ฝ๋ ์ธ๊ทธ๋จผํธ, ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ, ์คํ ๋ฑ์ด ๋ ๋ฆฝ์ ์ธ ์ธ๊ทธ๋จผํธ๊ฐ ๋๋ค.
- ๊ฐ ์ธ๊ทธ๋จผํธ๋ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์์ง ์๋ค.
- ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๋ฏ๋ก ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ์ธก๋ฉด์์๋ ์ดํดํ๊ธฐ ์ฝ๋ค.
- ํ์ง๋ง ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ๊ฐ ์ผ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋จํธํ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ ์ ์๋ค.
ํ์ด์ง ํ ์ด๋ธ๊ณผ ์ฃผ์ ๋ณํ ๊ตฌ์กฐ
ํ์ด์ง ์์คํ ์์ CPU๊ฐ ์ ๊ทผํ๋ ๋ ผ๋ฆฌ ์ฃผ์๋ <ํ์ด์ง ๋ฒํธ, ๋ณ์(Offset)> ํํ๋ก ๊ตฌ์ฑ๋๋ค.
์ด ๋ ผ๋ฆฌ ์ฃผ์๋ ํ์ด์ง ํ ์ด๋ธ(Page Table) ์ ํตํด ๋ฌผ๋ฆฌ ์ฃผ์ <ํ๋ ์ ๋ฒํธ(Frame number), ๋ณ์> ๋ก ๋ณํ๋๋ค.
ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ค ํ๋ ์(Frame) ์ ์ฌ๋ผ๊ฐ ์๋์ง๋ฅผ ๋ํ๋ด๋ ์ผ์ข ์ ๋งคํ ํ๋ค.
์ด๋, ํ์ด์ง ํ ์ด๋ธ์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ๊ฐ PTBR(Page Table Base Register) ์ด๋ค.
๊ฐ ํ๋ก์ธ์ค๋ ์์ ๋ง์ ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, CPU๋ PTBR์ ํตํด ํด๋น ํ๋ก์ธ์ค์ ํ์ด์ง ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ค.
ํ์ด์ง ํ ์ด๋ธ ๊ด๋ฆฌ์ ๋ ๊ฐ์ง ๋ฌธ์
ํ์ด์ง ํ ์ด๋ธ ๊ด๋ฆฌ์๋ ๋ ๊ฐ์ง ํฐ ๊ณ ๋ ค์ฌํญ์ด ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์ ๋ฌธ์
- ํ์ด์ง ํ
์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค๋ฉด, CPU๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด์๋
- ํ์ด์ง ํ ์ด๋ธ ์ ๊ทผ (๋ ผ๋ฆฌ → ๋ฌผ๋ฆฌ ๋ณํ)
- ์ค์ ํ๋ ์ ์ ๊ทผ
- ์ด๋ ๊ฒ ๋ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ด 2๋ฐฐ๊ฐ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด TLB(Translation Lookaside Buffer) ๊ฐ ์ฌ์ฉ๋๋ค.
- TLB: ํ์ด์ง ํ ์ด๋ธ์ ์ผ๋ถ๋ฅผ ์ ์ฅํ๋ ๊ณ ์ ์บ์ ๋ฉ๋ชจ๋ฆฌ
- ๋์ ์๋ฆฌ: ์ต๊ทผ ์ ๊ทผํ ํ์ด์ง ๋ฒํธ์ ํ๋ ์ ๋ฒํธ ์์ ์ ์ฅํ๊ณ , CPU๊ฐ ์ฃผ์ ๋ณํ ์ ํด๋น ์ ๋ณด๊ฐ TLB์ ์กด์ฌํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์์ด ๋ฐ๋ก ๋ณํ
- ํน์ง: ์ฐธ์กฐ ์ง์ญ์ฑ ์๋ฆฌ์ ๋ฐ๋ผ ํจ์จ์ ์ผ๋ก ๋์(์ฆ, ์ต๊ทผ ์ ๊ทผ๋ ํ์ด์ง๋ ๋ค์ ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋์)
- TLB์์ ๋ณํ ์ ๋ณด๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด ์ด๋ฅผ TLB miss ๋ผ ํ๋ฉฐ, ์ด๋์๋ง ํ์ด์ง ํ ์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ํ๊ฒ ๋๋ค.
- ํ์ด์ง ํ
์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค๋ฉด, CPU๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด์๋
- ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ ๋ฌธ์ (๊ณ์ธต์ ํ์ด์ง)
- ํ๋ก์ธ์ค๊ฐ ์ปค์ง์๋ก ํ์ด์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๋ ์ปค์ง๋ค. ๋ชจ๋ ํ์ด์ง ํ ์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค.
- ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ์์ด ๊ณ์ธต์ ํ์ด์ง(Hierarchical Paging) ์ด๋ค.
- ์์ด๋์ด: ํ์ด์ง ํ ์ด๋ธ ์์ฒด๋ฅผ ๋ค์ ํ์ด์งํ๋ค.
- ์ฆ, ํ์ด์ง ํ ์ด๋ธ์ ์ฌ๋ฌ “ํ์ ํ์ด์ง ํ ์ด๋ธ”๋ก ๋๋๊ณ , ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์์(Outer) ํ์ด์ง ํ ์ด๋ธ์ ๋๋ค.
- ์ฅ์
- ์์ ํ์ด์ง ํ ์ด๋ธ(outer table)๋ง ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ์ํค๊ณ , ์ค์ ํ์ด์ง ํ ์ด๋ธ ์ํธ๋ฆฌ๋ ํ์ํ ๋๋ง ๋ณด์กฐ๊ธฐ์ต์ฅ์น์์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ , ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์๊ตฌ ํ์ด์ง(Demand Paging)
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์๋ ํ๋ก์ธ์ค์ ๋ชจ๋ ํ์ด์ง๋ฅผ ํ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์๋๋ค.
CPU๊ฐ ์ค์ ๋ก ์ ๊ทผํ ๋ ํ์ํ ํ์ด์ง๋ค๋ง ์ ์ฌํ๋ ๋ฐฉ์์ ๊ตฌ ํ์ด์ง์ด๋ผ ํ๋ค.
- CPU๊ฐ ํน์ ํ์ด์ง์ ์ ๊ทผํ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค.
- ํด๋น ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค๋ฉด(์ ํจ ๋นํธ = 1), ์ฆ์ ์ ๊ทผํ๋ค.
- ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด(์ ํจ ๋นํธ = 0), ํ์ด์ง ํดํธ(Page Fault) ๋ฐ์
- ์ด์์ฒด์ ์ ํ์ด์ง ํดํธ ์ฒ๋ฆฌ ๋ฃจํด์ด ์คํ๋์ด, ํด๋น ํ์ด์ง๋ฅผ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์จ๋ค.
- ํ์ด์ง ํ ์ด๋ธ์ ์ ํจ ๋นํธ๋ฅผ 1๋ก ์์ ํ๊ณ , ๋ช ๋ น์ ์ฌ์๋ํ๋ค.
์ด๋ ๊ฒ ํ์ํ ํ์ด์ง๋ง ๋ก๋ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๋์ผ ์ ์์ง๋ง, ๋๋ฌด ๋ง์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ฉด ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์๋ค.
์ค๋ ์ฑ(Thrashing)
ํ์ด์ง ํดํธ๊ฐ ์ง๋์น๊ฒ ์์ฃผ ๋ฐ์ํ๋ ์ํฉ์ ์ค๋ ์ฑ ์ด๋ผ๊ณ ํ๋ค.
์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ ํ ์ ์ง๋์ด์ผ ํ ํ์ด์ง๋ค์ด ๊ณ์ํด์ ๊ต์ฒด๋๋ฉฐ, CPU๊ฐ ๊ณ์ ๋์คํฌ I/O์ ๋ฌถ์ฌ ์๋ ๋น์ ์์ ์ธ ์ํ๋ฅผ ์๋ฏธํ๋ค.
- ์์ธ: ํ๋ก์ธ์ค ์๋ ํ์ด์ง ์์ฒญ์ด ๋ง์, ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ง์ ํ์ด์ง๋ค์ด ๊ต์ฒด๋๋ฉฐ ๊ณ์ ์ค์ ์ธ/์์ ๋ฐ์
- ๊ฒฐ๊ณผ: CPU ํ์ฉ๋ฅ ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๊ณ , ์์คํ ์ ์ฒด๊ฐ ๋๋ ค์ง๋ค.
- ์ด์์ฒด์ ๋ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์ ์งํฉ(Working Set) ๊ด๋ฆฌ๋ ํ๋ ์ ํ ๋น ์กฐ์ ๋ฑ์ ์ ์ฑ ์ ์ฌ์ฉํ๋ค.
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
์๊ตฌ ํ์ด์ง์์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ์๋ก์ด ํ์ด์ง๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ ์ ๊ธฐ์กด ํ์ด์ง ์ค ํ๋๋ฅผ ๋ด๋ณด๋ด์ผ ํ๋ค.
์ด๋ ์ด๋ค ํ์ด์ง๋ฅผ ๊ต์ฒดํ ์ง ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ด ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- FIFO (First-In First-Out)
- ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ๊ต์ฒด
- ๊ตฌํ์ด ๊ฐ๋จํ์ง๋ง, Belady’s anomaly(ํ์ด์ง ์๊ฐ ๋์ด๋ ํดํธ๊ฐ ์ฆ๊ฐํ๋ ํ์) ๊ฐ ๋ฐ์ํ ์ ์์
- Optimal (์ต์ ๊ต์ฒด)
- ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
- ์ค์ ๊ตฌํ์ ๋ถ๊ฐ๋ฅํ์ง๋ง, ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ต ๊ธฐ์ค์ผ๋ก ์์ฃผ ์ฌ์ฉ๋จ
- LRU (Least Recently Used)
- ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
- ์ค์ ์ ๊ทผ ํจํด์ ์๊ฐ์์ผ๋ก ๊ธฐ๋กํด ๊ฐ์ฅ ์ค๋๋ ํ์ด์ง๋ฅผ ์ ํ
- TLB์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐธ์กฐ ์ง์ญ์ฑ์ ๊ธฐ๋ฐํ ํ์ค์ ์ธ ๋ฐฉ์
- ๊ตฌํ์ ์คํ ๋๋ ์นด์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฅ (๋จ, ์ค๋ฒํค๋ ์กด์ฌ)
ํ์ผ ์์คํ
๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋ ์ ๋ณด(ํ์ผ, ๋๋ ํฐ๋ฆฌ ๋ฑ)๋ฅผ ๊ด๋ฆฌํ๋ ์ด์์ฒด์ ํต์ฌ ๊ตฌ์ฑ์์
ํ์ผ์ ์ด๋ฆ, ๋ฐ์ดํฐ, ๋ค์ํ ๋ฉํ๋ฐ์ดํฐ(ํฌ๊ธฐ, ์์ ์, ๊ถํ ๋ฑ)๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ์กฐ์์ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ์์คํ ์ฝ์ ํตํด์๋ง ๊ฐ๋ฅ
์์ฉํ๋ก๊ทธ๋จ์ด ์ง์ ํ๋๋์คํฌ๋ฅผ ๋ค๋ฃจ์ง ์๊ณ , ๋ฐ๋์ ์ด์์ฒด์ ์ ํ์ผ ์์คํ API๋ฅผ ํตํด ํ์ผ์ ์์ฑ, ์ด๊ธฐ, ์ฐ๊ธฐ, ๋ซ๊ธฐ ๋ฑ์ ์์ ์ ์ฒ๋ฆฌํ๋ค.
ํ์ผ ๋์คํฌ๋ฆฝํฐ๋?
- ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ OS๊ฐ ๊ฐ ํ๋ก์ธ์ค์ ๋ถ์ฌํ๋ ํ์ผ ์๋ณ์๋ก, ํ์ผ, ์ ์ถ๋ ฅ ์ฅ์น, ํ์ดํ(IPC), ์์ผ ๋ฑ ์์คํ ์ ๋ค์ํ ์ ์ถ๋ ฅ ์์์ ๊ตฌ๋ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ํ๋ก์ธ์ค๊ฐ open() ์์คํ ์ฝ๋ก ํ์ผ์ ์ด๋ฉด, OS๋ ํด๋น ํ์ผ์ ๋ํ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์ ์ ๊ฐ) ๋ฅผ ๋ฐํํ๋ค. ์ดํ write(), read(), close() ๋ฑ ๋๋ถ๋ถ์ ํ์ผ ๊ด๋ จ ํจ์ ํธ์ถ ์ ์ด ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉํ๋ค.
- ํ์ผ ๋์คํฌ๋ฆฝํฐ ํ์ฉ ๋ฒ์
- ์ค์ ํ์ผ๋ฟ๋ง ์๋๋ผ, ํ์ค ์ ์ถ๋ ฅ(stdin: 0, stdout: 1, stderr: 2), ๋คํธ์ํฌ ์์ผ, ํ์ดํ IPC ๋ฑ๋ ๋ชจ๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ก ์๋ณ๋์ด ๋์ํ๋ค.
- ์ด ๊ตฌ์กฐ ๋๋ถ์ ๋ชจ๋ ๊ฒ์ ํ์ผ์ฒ๋ผ ๋ค๋ฃฐ ์ ์์ด ์์คํ ์ค๊ณ๊ฐ ์ผ๊ด๋๊ณ ์ ์ฐํ๋ค.
ํ์ผ ๊ด๋ จ ํต์ฌ ์์คํ ์ฝ
- open(filename, mode): ํ์ผ์ ์ด๊ณ , ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํ๋ค.
- write(fd, buf, count): ํ์ผ ๋์คํฌ๋ฆฝํฐ fd๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค.
- read(fd, buf, count): ํ์ผ ๋์คํฌ๋ฆฝํฐ fd๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค.
- close(fd): ํ์ผ ๋์คํฌ๋ฆฝํฐ fd๋ฅผ ๋ซ์ ์์์ ํด์ ํ๋ค.
์ฌ์ฉ์ ๋ชจ๋ → ์ปค๋ ๋ชจ๋ ์ ํ ๋ฐ ์์คํ ์ฝ ์ฒ๋ฆฌ ๊ณผ์
- open() ์์คํ
์ฝ ํธ์ถ
- ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ผ ์์ฑ์ ์์ฒญํ๋ฉด,
- CPU๋ ํธ๋ฉ(trap) ์ ํตํด ์ปค๋ ๋ชจ๋๋ก ์ ํ๋๋ค.
- ์ด์์ฒด์ ์ปค๋์ด ํ์ผ ์์คํ ์ ์ ๊ทผํ์ฌ ์ ํ์ผ์ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ํ์ผ์ ์ฐ๋ค.
- ํ์ผ ์์ฑ์ด ์๋ฃ๋๋ฉด, ์ปค๋์ ํด๋น ํ์ผ์ ์๋ณํ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์ ์ ๊ฐ)๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐํํ๋ค.
- write() ์์คํ
์ฝ ํธ์ถ
- ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํด์ผ ํ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ write() ์์คํ ์ฝ์ ํธ์ถํ๋ค.
- ๋ค์ ํ๋ฒ ์ปค๋ ๋ชจ๋๋ก ์ ํ๋์ด, ์ปค๋ ๋ด๋ถ์์ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด ํ์ผ์ ์ฐพ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ค.
- ๋ฐ์ดํฐ ๊ธฐ๋ก์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋๋ฉด ์ ์ด๊ฐ ์์ฉํ๋ก๊ทธ๋จ(์ฌ์ฉ์ ๋ชจ๋)๋ก ๋์์จ๋ค.
- close() ์์คํ
์ฝ ํธ์ถ
- ์์ ํ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ close() ์์คํ ์ฝ๋ก ๋ซ์ผ๋ฉด,
- ์ปค๋ ๋ชจ๋๋ก ์ ํ๋์ด ๊ด๋ จ ์์์ ํด์ ํ๊ณ ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ(๋ฒํผ ๋ฑ)์ ๋ฐ์ํ๋ค.
- ์ข ๋ฃ ์๋ฃ ์ ์ฌ์ฉ์ ๋ชจ๋๋ก ๋ณต๊ทํ๋ค.
์ด์์ฒด์ ์์ ๋๋ ํฐ๋ฆฌ๋ ํน๋ณํ ํ์ผ๋ก ๊ฐ์ฃผ๋๋ค.
์ฆ, ๋๋ ํฐ๋ฆฌ ์์ฒด๋ ํ์ผ ํํ๋ก ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋๊ณ , ๋ด๋ถ์๋ ๋๋ ํฐ๋ฆฌ ์ํธ๋ฆฌ๋ผ๋ ํ ์ด๋ธ ํ์์ ์ ๋ณด๊ฐ ๋์ด๋๋ค.
๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก ๊ตฌ์กฐ
- ๋ฃจํธ ๋๋ ํฐ๋ฆฌ(`/`)๊ฐ ์ต์์์ ์๊ณ , ๊ทธ ์๋๋ก ์๋ธ ๋๋ ํฐ๋ฆฌ๋ค์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋๋ค.
- ๊ฐ ๋๋ ํฐ๋ฆฌ์ ์ํธ๋ฆฌ๋ ํ์ผ ์ด๋ฆ๊ณผ ํด๋น ํ์ผ์ด ์ ์ฅ๋ ์์น(์์ด๋ ธ๋ ๋๋ ๋ธ๋ก ์๋ณ์ ๋ฑ)๋ฅผ ์ฐพ์ ์ ์๋ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
- ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ํ ๋, ์ด์์ฒด์ ๋ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ถํฐ ์ถ๋ฐํด ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋ชฉ์ ํ์ผ์ ์ฐพ๋๋ค.
๋๋ ํฐ๋ฆฌ ์ํธ๋ฆฌ์ ์ธ๋ถ ๋ด์ฉ
- ํ์ผ ์ด๋ฆ(๋๋ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ)
- ํ์ผ์ i-node ๋ฒํธ(ํด๋น i-node์๋ ํ์ผ์ ์ค์ ์์น, ์์ ์, ์ ๊ทผ ๊ถํ ๋ฑ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ)
- ํ์ ์ ํ์ผ ์ ํ(์ผ๋ฐ ํ์ผ, ๋๋ ํฐ๋ฆฌ, ๋งํฌ ๋ฑ)
ํ์ผ ํ ๋น ๋ฐฉ๋ฒ
์ด์์ฒด์ ๋ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ธ๋ก ๋จ์๋ก ๊ด๋ฆฌํ๋ค.
ํ์ผ์ ์ฌ๋ฌ ๋ธ๋ก์ผ๋ก ๋ถ์ฐ ์ ์ฅํ ๋ ๋ํ์ ์ผ๋ก ์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ด ๋ง์ด ์ฐ์ธ๋ค.
- ์ฐ๊ฒฐ ํ ๋น(Linked Allocation): ํ์ผ์ ๊ฐ ๋ธ๋ก ๋ด๋ถ์ ๋ค์ ๋ธ๋ก์ ์ฃผ์๋ฅผ ์ ์ฅํด์, ์ฒด์ธ์ฒ๋ผ ๋ธ๋ก๋ค์ด ์๋ก ์ฐ๊ฒฐ๋๋ ๋ฐฉ์์ด๋ค. ์ฒซ ๋ธ๋ก์ ์์น๋ง ์์๋ ์ ์ฒด ํ์ผ์ ์์ฐจ์ ์ผ๋ก ์ฝ์ ์ ์๋ค.
- ์์ธ ํ ๋น(Indexed Allocation): ๋ชจ๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์์น(์ฃผ์)๋ฅผ ํ๊บผ๋ฒ์ ์ ์ฅํ ์์ธ ๋ธ๋ก(index block) ์ ๋ณ๋๋ก ๋์ด, ๊ฐ ํ์ผ์ ์ธ๋ฑ์ค ๋ธ๋ก์ ํตํด ๋ธ๋ก์ ์์น ์ ๋ณด๋ฅผ ํ ๋ฒ์ ์ฐธ์กฐํ ์ ์๋ค.
ํ์ผ ์์คํ ํฌ๋งท๊ณผ ์์ด๋ ธ๋
- ํฌ๋งทํ (Formatting): ๋ฐ์ดํฐ ์ ์ฅ ์ , ํ์ผ ์์คํ ๊ตฌ์กฐ(๋ธ๋ก, ์์ด๋ ธ๋, ๋๋ ํฐ๋ฆฌ ๋ฑ)๋ฅผ ์์ฑํ์ฌ ์ ์ฅ ์ค๋น๋ฅผ ๋ง์น๋ ๊ณผ์ ์ด๋ค.
- ์์ด๋
ธ๋(i-node): ์ ๋์ค ๊ณ์ด ํ์ผ ์์คํ
์ ํต์ฌ ์์ธ ๋ธ๋ก ๊ตฌ์กฐ
- ํ์ผ์ด ์ ์ฅ๋ ๋ธ๋ก ์์น ์ ๋ณด
- ํ์ผ์ ์์ ์, ๊ถํ, ํฌ๊ธฐ, ์์ฑ·์์ ·์ญ์ ์๊ฐ
- ํ์ผ ์ด๋ฆ์ ์ ์ธํ ๊ฑฐ์ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ค.
- ์ค์ ๋๋ ํฐ๋ฆฌ ์ํธ๋ฆฌ์๋ ํ์ผ ์ด๋ฆ๊ณผ ์ด ํ์ผ์ด ์ฐ๊ฒฐ๋ ์์ด๋ ธ๋ ๋ฒํธ๋ง ์ ์ฅ๋์ด ์๊ณ , ๋๋จธ์ง ์ ๋ณด๋ค์ ์์ด๋ ธ๋๋ฅผ ์ฐธ์กฐํด ํ์ธํ๋ค.
์์ด๋ ธ๋ ๊ธฐ๋ฐ ํ์ผ ์์คํ ์์๋ ๋ชจ๋ ํ์ผ(๋๋ ํฐ๋ฆฌ ํฌํจ) ์ด ๊ณ ์ ์ ์์ด๋ ธ๋๋ฅผ ๊ฐ์ง๋ค.
์์ด๋ ธ๋๋ ํ์ผ์ ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก ์์น, ํฌ๊ธฐ, ๊ถํ, ์๊ฐ ์ ๋ณด ๋ฑ ์ด๋ฆ์ ์ ์ธํ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
์ด ๊ตฌ์กฐ ์์์ ํ๋ ๋งํฌ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ, ๊ทธ๋ฆฌ๊ณ ๋ง์ดํธ ๊ฐ๋ ์ด ์ ์ฉ๋๋ค.
ํ๋ ๋งํฌ
- ํ๋ ๋งํฌ๋ ๋์ผํ ์์ด๋ ธ๋ ๋ฒํธ๋ฅผ ๊ฐ๋ “๋ค๋ฅธ ์ด๋ฆ์ ํ์ผ”์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ํ๋ ๋งํฌ ํ์ผ๊ณผ ์๋ณธ ํ์ผ์ ๊ฐ์ ์์ด๋ ธ๋๋ฅผ ๊ณต์ ํ๋ฏ๋ก, ๋ฐ์ดํฐ์ ์์ฑ์ด ์์ ํ ๋์ผํ๋ค.
- ํ๋ ๋งํฌ ๋ฐฉ์์์๋ ์๋ณธ ํ์ผ์ด ์ญ์ ๋๋๋ผ๋ ์์ด๋ ธ๋๋ฅผ ์ฐธ์กฐํ๋ ๋งํฌ(ํ๋ ๋งํฌ)๊ฐ ๋จ์์์ผ๋ฉด ๋ฐ์ดํฐ๋ ์ ๋ ์ ์ค๋์ง ์๋๋ค.
- ํ์ผ์ ์ฐ๊ฒฐ๋ ๋งํฌ๊ฐ ๋ชจ๋ ์ญ์ ๋์ด์ผ ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก๊ณผ ์์ด๋ ธ๋๊ฐ ํด์ ๋๋ค.
- ํ๋ ๋งํฌ ํ์ผ๊ณผ ์๋ณธ ํ์ผ ๋ชจ๋ ๋๋ฑํ๋ฉฐ, ์ด๋ ํ์ชฝ์ ์์ ํ๋ฉด ๋ค๋ฅธ ์ชฝ ๋ด์ฉ๋ ๋ฐ๋๋ค.
- ์ฃผ์: ํ๋ ๋งํฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋์ผํ ํ์ผ ์์คํ (๋์ผ ํํฐ์ ) ๋ด์์๋ง ๋ง๋ค ์ ์๋ค. ๋ํ ๋๋ ํฐ๋ฆฌ์ ๋ํ ํ๋ ๋งํฌ๋ ์์น์ ์ผ๋ก ์ ํ๋๋ค.
์ฌ๋ณผ๋ฆญ ๋งํฌ
- ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ ๋ฐ๋ก๊ฐ๊ธฐ(๋จ์ถ ์์ด์ฝ)์ฒ๋ผ, “์๋ณธ ํ์ผ ๊ฒฝ๋ก”๋ง์ ์ ์ฅํ๋ ํน์ํ ํ์ผ์ด๋ค.
- ์๋ณธ ํ์ผ์ ์์ด๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ์๋๋ผ, ์๋ณธ์ ๊ฒฝ๋ก๋ฅผ ๋ฌธ์์ด๋ก ์ ์ฅํด์ ์ ๊ทผ ์ OS๊ฐ ์๋ณธ์ ์ฐพ์ ์ฐ๊ฒฐํ๋ค.
- ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ์๋ณธ ํ์ผ์ ์์ด๋ ธ๋๋ ๋ค๋ฅด๋ค.
- ์๋ณธ ํ์ผ์ด ์ญ์ /์ด๋๋๋ฉด, ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ ์ฐ๊ฒฐ์ด ๋๊ธด ๋จ์ ํ ์คํธ ํ์ผ(broken link)์ด ๋์ด ํ์ผ ๋ด์ฉ์๋ ์ ๊ทผํ ์ ์๋ค.
- ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ ๋๋ ํฐ๋ฆฌ์๋ ์์ฑํ ์ ์๊ณ , ์๋ก ๋ค๋ฅธ ํ์ผ ์์คํ ์ด๋ ๋คํธ์ํฌ ๋๋ผ์ด๋ธ์๋ ๋ง๋ค ์ ์๋ค.
๋ง์ดํธ
- ๋ง์ดํธ๋, ํ ์ ์ฅ์ฅ์น๋ ํํฐ์ (๋ถ๋ฆฌ๋ ํ์ผ ์์คํ )์ ๋ฃจํธ/์๋ธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ์ ์ฐ๊ฒฐํ๋ ์์ ์ด๋ค.
- ์ฆ, ์๋ก์ด ์ ์ฅ์ฅ์น๋ฅผ ๊ธฐ์กด ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ์ ํน์ ์์น์ ํธ์ ์์ผ OS์ ์ฌ์ฉ์/ํ๋ก๊ทธ๋จ์ด ํฌ๋ช ํ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค.
- ๋ง์ดํธ๋ ์์น ์๋์์๋ ๊ทธ ์ ์ฅ์ฅ์น์ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ด๋/์์ /์ญ์ ๋๋ค.
'๐ปโโ๏ธ ์ ๊ณต๊ณต๋ถ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 7. ํ๋ก์ธ์ค ๋๊ธฐํ(1) (2) | 2024.05.01 |
|---|---|
| 6. ์ค์ผ์ค๋ง (2) | 2024.05.01 |
| 2. ์ปดํจํฐ ์์คํ ๊ตฌ์กฐ (0) | 2024.05.01 |
| 1. ์ด์์ฒด์ ๋ (0) | 2024.05.01 |