Context Switching ์ด๋ ?
ํ์ฌ ์งํํ๊ณ ์๋ Task(Process, Tread)์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ์งํํ Task์ ์ํ ๊ฐ์ ์ฝ์ด ์ ์ฉํ๋ ๊ณผ์ ์ ๋งํ๋ค.
ย
- ๋งค๋ฒ ํ๋์ Task๋ง ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ๋ค์ Task๋ฅผ ๊ธฐ๋ค๋ฆด ์ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๊ณ ์ฌ์ฉํ๊ธฐ ๋ถํธํ๋ค.
- Task์ ๋๋ถ๋ถ ์ ๋ณด๋ Register์ ์ ์ฅ๋๊ณ PCB(Process Control Block)๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค.
- ํ์ฌ ์คํํ๊ณ ์๋ Task์ PCB ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฒ ๋๋ค. (Process Stack, Ready Queue)
- ๋ค์ ์คํํ Task์ PCB ์ ๋ณด๋ฅผ ์ฝ์ด Register์ ์ ์ฌํ๊ณ CPU๊ฐ ์ด์ ์ ์งํํ๋ ๊ณผ์ ์ ์ฐ์์ ์ผ๋ก ์ํ์ ํ ์ ์์ต๋๋ค.
- ์ปจํ ์คํธ ์ค์์นญ์ ๊ฐ์ ์ข ๋ฅ์ ์์ ๋จ์ ๋ด์์ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก, ํ๋ก์ธ์ค ๊ฐ ๋๋ ์ค๋ ๋ ๊ฐ์์ ์ผ์ด๋ฉ๋๋ค.
PCB(Process Control Block)
- ํฌ์ธํฐ
ํ๋ก์ธ์ค์ ํ์ฌ ์์น๋ฅผ ์ ์ฅํ๋ ํฌ์ธํฐ ์ ๋ณด.
- ํ๋ก์ธ์ค ์ํ
ํ๋ก์ธ์ค์ ๊ฐ ์ํ (์์ฑ(New), ์ค๋น(Ready), ์คํ(Running), ๋๊ธฐ(Waiting), ์ข
๋ฃ(Terminated))๋ฅผ ์ ์ฅ.
- ํ๋ก์ธ์ค ๋ฒํธ
๋ชจ๋ ํ๋ก์ธ์ค์๋ ํ๋ก์ธ์ค ์๋ณ์๋ฅผ ์ ์ฅํ๋ ํ๋ก์ธ์ค ID ๋๋ PID๋ผ๋ ๊ณ ์ ํ ID๊ฐ ํ ๋น๋๋ค.
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ
ํ๋ก์ธ์ค๋ฅผ ์ํด ์คํ๋ ๋ค์ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ํฌํจํ๋ ์นด์ดํฐ๋ฅผ ์ ์ฅ.
- ๋ ์ง์คํฐ
๋์ฐ๊ธฐ, ๋ฒ ์ด์ค, ๋ ์ง์คํฐ ๋ฐ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ฅผ ํฌํจํ๋ CPU ๋ ์ง์คํฐ์ ์๋ ์ ๋ณด.
- ๋ฉ๋ชจ๋ฆฌ ์ ํ
์ด ํ๋์๋ ์ด์ ์ฒด์ ์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ
์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.ย ์ฌ๊ธฐ์๋ ํ์ด์ง ํ
์ด๋ธ, ์ธ๊ทธ๋จผํธ ํ
์ด๋ธ ๋ฑ์ด ํฌํจ๋ ์ ์๋ค.
- ์ด๋ฆฐ ํ์ผ ๋ชฉ๋ก
์ด ์ ๋ณด์๋ ํ๋ก์ธ์ค๋ฅผ ์ํดย ์ด๋ฆฐ ํ์ผ ๋ชฉ๋กย ์ด ํฌํจ๋๋ค.
ย
์ด์์ฒด์ ๋ ๋น ๋ฅด๊ฒ PCB์ ์ ๊ทผํ๊ธฐ ์ํด ํ๋ก์ธ์ค ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ ํ๋ก์ธ์ค PCB๋ฅผ ๊ด๋ฆฌํ๋ค.
ย
์ปจํ ์คํธ ์ค์์นญ์ ์ฐจ์ด์
- ํ๋ก์ธ์ค ๊ฐ ์ปจํ ์คํธ ์ค์์นญ
- ํ๋ก์ธ์ค ๊ฐ ์ปจํ ์คํธ ์ค์์นญ์ ๋ณดํต ๋ ๋ง์ ๋น์ฉ(์๊ฐ ๋ฐ ์์)์ด ์์๋ฉ๋๋ค. ์ด๋ ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ค์์นญ ์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- CPU ๋ ์ง์คํฐ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ํ, ๋ฉ๋ชจ๋ฆฌ ๋งต ๋ฑ์ ์ ์ฅํ๊ณ ๋ณต์ํ๋ ๊ณผ์ ์ด ํฌํจ๋ฉ๋๋ค.
- ์ค๋ ๋ ๊ฐ ์ปจํ ์คํธ ์ค์์นญ
- ์ค๋ ๋ ๊ฐ ์ปจํ ์คํธ ์ค์์นญ์ ํ๋ก์ธ์ค ๊ฐ ์ค์์นญ๋ณด๋ค ์๋์ ์ผ๋ก ๋น์ฉ์ด ์ ๊ฒ ๋ญ๋๋ค. ์ด๋ ์ค๋ ๋๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ํ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ๋ณต์ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ฃผ๋ก CPU ๋ ์ง์คํฐ์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ง ๊ฐฑ์ ํ๋ฉด ๋ฉ๋๋ค.
ย
ย
์ปจํ ์คํธ ์ค์์นญ ๊ณผ์
- ํ์ฌ ์ค๋ ๋์ ์ปจํ ์คํธ ์ ์ฅ: ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ ์ํ, ์๋ฅผ ๋ค์ด CPU ๋ ์ง์คํฐ, ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ์คํ ํฌ์ธํฐ ๋ฑ์ ์ ์ฅํฉ๋๋ค.
- ํ์ฌ ํ๋ก์ธ์ค์ ์ปจํ ์คํธ ์ ์ฅ: ํ์ฌ ์ค๋ ๋์ ํจ๊ป, ํ์ฌ ํ๋ก์ธ์ค์ ์ ์ฒด ์ํ๋ ์ ์ฅํฉ๋๋ค. ์ด์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด(์: ํ์ด์ง ํ ์ด๋ธ), ์ด๋ฆฐ ํ์ผ ๋ชฉ๋ก, ๋ณด์ ๋ฐ ๊ถํ ์ค์ ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์๋ก์ด ํ๋ก์ธ์ค์ ์ปจํ ์คํธ ๋ณต์: ๋ค์์ ์คํํ ํ๋ก์ธ์ค์ ์ปจํ ์คํธ๋ฅผ CPU์ ์์คํ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ถ๋ฌ์ต๋๋ค. ์ด ๊ณผ์ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด, ํ์ํ ์์คํ ์์์ ์ฐ๊ฒฐ ๋ฑ์ด ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์๋ก์ด ์ค๋ ๋์ ์ปจํ ์คํธ ๋ณต์: ์๋ก์ด ํ๋ก์ธ์ค์ ํน์ ์ค๋ ๋์ ์ปจํ ์คํธ๋ฅผ ๋ณต์ํ์ฌ, ์ค๋ ๋๊ฐ ์ค๋จ๋์๋ ์ง์ ๋ถํฐ ์์ ์ ์ฌ๊ฐํ ์ ์๋๋ก ํฉ๋๋ค.
ย
ย
์ค๋ ๋ ์ปจํ
์คํธ ์ค์์นญ์ด ๋ฐ์ํ ๋๋ ํ์ฌ ํด๋น ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ธ์ค์ ์ฐ์ฐ์ cpu๊ฐ ์ฒ๋ฆฌํ๊ณ ์๋ ์ํ์ธ๊ฐ?
์ค๋ ๋ ์ปจํ
์คํธ ์ค์์นญ์ด ๋ฐ์ํ ๋, CPU๋ ์ด๋ฏธ ํด๋น ์ค๋ ๋๊ฐ ์ํด ์๋ ํ๋ก์ธ์ค์ ์ปจํ
์คํธ(๋ฉ๋ชจ๋ฆฌ, ์ด๋ฆฐ ํ์ผ, ๋ณด์ ์ ๋ณด ๋ฑ)๋ฅผ ๋ก๋ํ ์ํ์
๋๋ค. ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๋ฏ๋ก, ์ค๋ ๋ ๊ฐ ์ปจํ
์คํธ ์ค์์นญ์ ํด๋น ํ๋ก์ธ์ค์ ์ปจํ
์คํธ ๋ด์์ ์ผ์ด๋ฉ๋๋ค.
์ด๋ ์ค๋ ๋ ์ปจํ
์คํธ ์ค์์นญ์ ์ํด ์ฃผ๋ก ๊ฐฑ์ ๋๋ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- CPU ๋ ์ง์คํฐ์ ์ํ
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ
- ์คํ ํฌ์ธํฐ
์ด ์ ๋ณด๋ค์ ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ ์คํ ์ํ๋ฅผ ๋ํ๋ด๋ฏ๋ก, ์ค๋ ๋ ๊ฐ ์ค์์นญ ์ ์ด๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ์คํํ ์ค๋ ๋์ ์ํ๋ฅผ CPU์ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ด์์ ์ผ์ด๋๋ฉฐ, ํ๋ก์ธ์ค ๊ฐ ์ปจํ
์คํธ ์ค์์นญ๊ณผ ๋น๊ตํ๋ฉด ๋น๊ต์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์
๋๋ค.
๋ฐ๋ผ์ CPU๋ ํ ํ๋ก์ธ์ค ๋ด์ ์ค๋ ๋์์ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ํํ ๋, ํ๋ก์ธ์ค์ ์ ์ฒด ์ปจํ
์คํธ๋ฅผ ๋ณ๊ฒฝํ ํ์ ์์ด ๋ ๋น ๋ฅด๊ฒ ์ค์์นญ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฉํฐ์ค๋ ๋ฉ์ด ํ๋ก์ธ์ค๋ณด๋ค ์ค๋ฒํค๋๊ฐ ์ ๊ณ , ๋ฆฌ์์ค ์ฌ์ฉ ํจ์จ์ด ์ข๋ค๋ ์ฅ์ ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
ย
Loading Comments...