Context Switching
์๋ฐ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ - ์ด์ ์ฒด์ ๊ธฐ๋ณธ ์ง์
Context Switching
ํ๋์ CPU๋ ๋์ผํ ์๊ฐ์ ํ๋์ ์์ (
Task)๋ง ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ ์ ์๋ค.ํ๋์ CPU ์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ฑ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํด์ผ ํ๋๋ฐ ์ด๊ฒ์ ๋ฌธ๋งฅ ๊ตํ(
Context Switching) ์ด๋ผ๊ณ ํ๋ค.
๋ฌธ๋งฅ (Context)
ํ๋ก์ธ์ค ๊ฐ ์ ํ์ ์ํด์๋ ์ด์ ์ ์ด๋๊น์ง ๋ช ๋ น์ ์ํํ๊ณ ,
CPU Register์๋ ์ด๋ค ๊ฐ์ด ์ ์ฅ๋์ด ์๋์ง์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ค.Context๋ CPU๊ฐ ํด๋น ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด ์ ๋ณด๋ค์ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋PCB๋ผ๊ณ ํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๊ณต๊ฐ์ ์ ์ฅ๋๋ค.
PCB (Process Control Block)
์ด์์ฒด์ ๊ฐ ์์คํ ๋ด์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ง๋ค ์ ์งํ๋ ์ ๋ณด๋ฅผ ๋ด๋ ์ปค๋ ๋ด์ ์๋ฃ ๊ตฌ์กฐ์ด๋ค.
์ปจํ ์คํธ ์ค์์นญ์ CPU๊ฐ ํ๋ก์ธ์ค ๊ฐ PCB ์ ๋ณด๋ฅผ ๊ต์ฒดํ๊ณ ์บ์๋ฅผ ๋น์ฐ๋ ์ผ๋ จ์ ๊ณผ์ ์ด๋ผ ๋ณผ ์ ์๋ค.

ํ๋ก์ธ์ค ์ํ

New(์์ฑ) : ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์๋ ๋จ๊ณ๋ก ์ปค๋ ์์ญ์ PCB๊ฐ ๋ง๋ค์ด์ง ์ํ
Ready(์ค๋น) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
Running(์คํ) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น ๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ์ค์ธ ์ํ
Waiting(๋๊ธฐ) : ํ๋ก์ธ์ค๊ฐ I/O ์์ ์๋ฃ ๋๋ ์ฌ๊ฑด ๋ฐ์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
Terminated(์ข ๋ฃ) : ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ์ํ
์ปจํ
์คํธ ์ค์์นญ์ด ์ผ์ด๋๋ ์กฐ๊ฑด
์คํ ์ค์ธ ํ๋ก์ธ์ค์์ I/O ํธ์ถ์ด ์ผ์ด๋ ํด๋น I/O ์์ ์ด ๋๋ ๋๊น์ง ํ๋ก์ธ์ค ์ํ๊ฐ
Running์์Waiting์ํ๋ก ์ ์ด๋ ๊ฒฝ์ฐ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง ๋ฑ ์ด์์ฒด์ ์ CPU ์ค์ผ์ค๋ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋ ์๊ฐ ์์์ ๋ชจ๋ ์ฌ์ฉํ์ ๋ ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ค์ง(
Ready์ํ๋ก ์ ์ด)ํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํ ์์ผ์ฃผ๋ ๊ฒฝ์ฐ

์ปจํ
์คํธ ์ค์์นญ ๋์ ๊ณผ์

์ด์์ฒด์ ์ค์ผ์ค๋ฌ์ ์ํด ํ๋ก์ธ์ค ํ๋๋ฅผ ์ ์
์ ์ ๋ ํ๋ก์ธ์ค(
Process 1)๋ ์คํ ์ํ, ๋ค๋ฅธ ํ๋ก์ธ์ค(Process 2)๋ ์ค๋น ์ํ์ ์ ๋ ํ๋ก์ธ์ค์์ ์ฃผ์ด์ง ์คํ ์๊ฐ์ด ์ข ๋ฃ๋๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํ ๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
์ค๋ ๋ ์ปจํ
์คํธ ์ค์์นญ
TCB(Thread Control Block)
์ค๋ ๋ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ๋ก, PC์ Register Set(CPU ์ ๋ณด), ๊ทธ๋ฆฌ๊ณ PCB๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๋ค.
์ค๋ ๋๊ฐ ํ๋ ์์ฑ๋ ๋๋ง๋ค PCB ๋ด์์ TCB๊ฐ ์์ฑ๋๋ฉฐ ์ปจํ ์คํธ ์ค์์นญ์ด ์ผ์ด๋๋ฉด ๊ธฐ์กด์ ์ค๋ ๋ TCB๋ฅผ ์ ์ฅํ๊ณ ์๋ก์ด ์ค๋ ๋์ TCB๋ฅผ ๊ฐ์ ธ์ ์คํํ๋ค.

ํ๋ก์ธ์ค vs ์ค๋ ๋
ํ๋ก์ธ์ค๋ ์ปจํ ์คํธ ์ค์์นญ ํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ด๋ จ์ ๋ํด ์ฌ๋ฌ๊ฐ์ง ์ฒ๋ฆฌ(CPU ์บ์ ์ด๊ธฐํ, TLB ์ด๊ธฐํ, MMU ์ฃผ์ ์ฒด๊ณ ์์ ๋ฑ)๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ด๋ จ ์ถ๊ฐ์ ์ธ ์์ ์ด ์์ด ํ๋ก์ธ์ค์ ๋นํด ์ค๋ฒํค๋๊ฐ ์์์ ์ปจํ ์คํธ ์ค์์นญ์ด ๋น ๋ฅด๋ค.
์ค๋ ๋๋ฅผ ์์ฑํ๋ ๋น์ฉ์ ํฌ๋ค. ๋ง์ ์์ ์ค๋ ๋ ์์ฑ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ด ๋ฐ์ํ๊ฑฐ๋ ๋น๋ฒํ ์ปจํ ์คํธ ์ค์์นญ์ผ๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
์ด์ โฉ๏ธ - ์ด์ ์ฒด์ ๊ธฐ๋ณธ ์ง์ - ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ
๋ค์ โช๏ธ - ์ด์ ์ฒด์ ๊ธฐ๋ณธ ์ง์ - CPU & I/O Bound
Last updated