week9_incheol_6 - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
context switching์ ๋ํด์ ์ค๋ช ํด๋ณด์์ค
Context Switching์ด๋?
์์ ํ๊ณ ์๋ Task(Process, Thread)์ ์ธํฐ๋ฝํธ ์์ฒญ์ ์ํด ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ค๋ฅธ Task๋ฅผ ์ ํํ๋ ๊ณผ์ ์ ๋งํ๋ค.
Context๋?
CPU๊ฐ ๋ค๋ฃจ๋ Task(Process / Thread)์ ๋ํ ์ ๋ณด๋ก ๋๋ถ๋ถ์ ์ ๋ณด๋ Register์ ์ ์ฅ๋๋ฉฐ PCB(Process Control Block)์ผ๋ก ๊ด๋ฆฌ๋๋ค.
Process์ Thread์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ?
- Process :
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด
- PCB๋ OS์ ์ํด ์ค์ผ์ค๋ง๋๋ Process Control Block์ด๋ค.
- Thread :
- ํ๋ก์ธ์ค๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์(ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ์ ๋จ์)
- Process ๋ด์ TCB(Task Control Block)๋ผ๋ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ํตํด ๊ด๋ฆฌ๋๋ค.
Context Switching ๋น์ฉ
- Cache ์ด๊ธฐํ
- Memory Mapping ์ด๊ธฐํ
Process์ Thread ๋น์ฉ ์ฐจ์ด
- ํ๋ก์ธ์ค ์ปจํ ์คํธ ์ค์์นญ์ด ์ผ์ด๋ฌ์ ๊ฒฝ์ฐ, ๊ณต์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ์บ์ฌ๊ฐ ์ง๊ธ๊ป ์์๋์ ๋ฐ์ดํฐ๋ค์ด ๋ฌด๋์ง๊ณ ์๋ก ์บ์ฌ์ ๋ณด๋ฅผ ์์์ผ ํ๋ค. ์ด๊ฒ์ด ํ๋ก์ธ์ค ์ปจํ ์คํธ ์ค์์นญ์ ๋ถ๋ด์ด ๋๋ ์์์ด๋ค.
- ๋ฐ๋ฉด, ์ฐ๋ ๋๋ผ๋ฉด ์ ์ฅ๋ ์บ์ฌ ๋ฐ์ดํฐ๋ ์ฐ๋ ๋๊ฐ ๋ฐ๋์ด๋ ๊ณต์ ํ๋ ๋ฐ์ดํฐ(code, data, heap์์ญ)๊ฐ ์์ผ๋ฏ๋ก ์๋ฏธ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ปจํ ์คํธ ์ค์์นญ์ด ๋น ๋ฅธ ๊ฒ์ด๋ค.
- ๋จ, ๊ณต์ ํ๋ ์์ญ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ ๋๊ฐ์ ๋๊ธฐํ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.