junghyunlyoo contextSwitching - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
cpu์ ํ๋ก์ธ์ค
cpu๋ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํํ ์ ์๋ค.
์ฆ ๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์ cpu๊ฐ ํ๋์ผ ๊ฒฝ์ฐ์, ๋ค์์ ํ๋ก์ธ์ค๋ค์ ๋์์ ์คํ๋ ์ ์๋ค.
์ค์ผ์ค๋ฌ
์ค์ผ์ค๋ฌ๋ ๋ค์์ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ ํ๋ก์ธ์ค์ cpu๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ค.
์ด ์์
์ ์ค์ผ์ค๋ง
์ด๋ผ ํ๋ค. ์ค์ผ์ค๋ฌ๋ ํ๋ก์ธ์ค๋ค์๊ฒ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก cpu๋ฅผ ํ ๋นํ๊ณ ํด์ ํ๋ค.
(ํ๋ก์ธ์ค์๊ฒ cpu๊ฐ ํ ๋น๋๋ค๋ ๊ฒ์ cpu๊ฐ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค๋ ์๋ฏธ์ด๋ค.)
cpu๊ฐ ์คํํ๋ ํ๋ก์ธ์ค๋ค์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๊ต์ฒด๋๋ค.
๊ทธ๋์ ์ฌ์ฉ์๋ ๋ฉํฐ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค๋ค์ด ๋์์ ์คํ๋๋ ๋ฏํ ๋๋์ ๋ฐ๋๋ค.
Context Switching
ํ๋ก์ธ์ค๋ค์ ์ค์ผ์ค๋ฌ์ ์ํด cpu๋ฅผ ํ ๋น๋ฐ๊ธฐ๋ ํ๊ณ cpu๋ฅผ ํ์๋นํ๊ธฐ๋ ํ๋ค.
์๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์ ์ํ๋ new ์ํ์ด๋ค.
๊ทธ๋ฆฌ๊ณ new ์ํ์ ํ๋ก์ธ์ค๋ค์ cpu๋ฅผ ํ ๋น๋ฐ๊ธฐ ์ํ ์ค๋น๋ฅผ ํ๋ ready ์ํ๋ก ๋ฐ๋๋ค.
์ค์ผ์ค๋ฌ๋ ready ์ํ์ ํ๋ก์ธ์ค์๊ฒ cpu๋ฅผ ํ ๋นํ๋ค. cpu๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๋ running ์ํ๊ฐ ๋๋ค.
running ์ํ์ธ ํ๋ก์ธ์ค์ ์คํ ๋์ค, ์ค์ผ์ค๋ฌ์ ์ํด ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก cpu๊ฐ ํ ๋น๋๋ interrupt๊ฐ ๋ฐ์ํ ์ ์๋ค.
running ์ํ์ด๋ ํ๋ก์ธ์ค๋ ์ค์ผ์ค๋ฌ์ ์ํด cpu๋ฅผ ํ์๋นํ๊ณ , ์ค์ผ์ค๋ฌ๋ ํ์ํ cpu๋ฅผ ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ํ ๋นํ๋ค.
cpu ์ ์ฅ์์๋ ์์ ์ด ์คํ์์ผ์ผ ํ ํ๋ก์ธ์ค๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด๋ค. ์ด๋ฅผ Context Switching ์ด๋ผ๊ณ ํ๋ค.
Context Switching ์ค๋ฒํค๋
cpu๋ ํ๋ก์ธ์ค๋ฅผ ์คํ์ํฌ ๋ ๋ ์ง์คํฐ๋ผ๊ณ ํ๋ cpu ๋ด๋ถ ๊ณต๊ฐ์ ํด๋น ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ค.
๊ทธ๋ฐ๋ฐ Context Switching์ด ๋ฐ์ํ๋ฉด, ์๋ก์ด ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๊ธฐ ์ํด ๊ธฐ์กด ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ด ์ ์ฅ๋์ด ์๋ ๋ ์ง์คํฐ๋ฅผ ๋น์์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ cpu ์ ์ ๊ฐ ๋๋๋ฉด ๊ธฐ์กด ํ๋ก์ธ์ค์ ๋ค์ cpu๋ฅผ ํ ๋นํด์ค์ผ(Context Switching) ํ๋ฏ๋ก ๋ ์ง์คํฐ์ ์ ์ฅํด๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฌ์์ผ ํ๋ค.
๊ทธ๋์ OS๊ฐ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ์ธ PCB(Process Control Block)์ ๊ธฐ์กด ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ PCB๋ก๋ถํฐ ์ฝ๊ณ cpu ๋ ์ง์คํฐ๋ก ์ฎ๊ธด๋ค. (PCB์ ํ๋ก์ธ์ค๋ง๋ค ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ด ๋๋์ด์ ธ ์๋ค.)
๊ทธ๋ฐ๋ฐ PCB์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฅํ ๋ CPU๊ฐ ์๋ฌด๋ฐ ์ผ๋ ํ์ง ๋ชปํ๋ค. ์ด ๋๋ฌธ์ Context Switching์ด ์ฆ์ผ๋ฉด ์ค๋ฒํค๋๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์๋ค.
https://philip1994.tistory.com/45
https://hoony-gunputer.tistory.com/entry/Thread-Context-Switching-vs-Process-Context-Switching
https://hoony-gunputer.tistory.com/entry/Thread-process
https://velog.io/@adam2/2020-01-08-2301-%EC%9E%91%EC%84%B1%EB%90%A8-huk55f3cic