๐ Knowledge/์ด์์ฒด์ (OS)
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ค์์น(Process Swtich)
TIlearn
2024. 3. 17. 19:00
Context Switch
์ด์ ์ ๋ฐฐ์ด ๊ฒ์ ๋ค์ ํ ๋ฒ ์ง์ด๋ณด์.
์ปค๋ ๋ชจ๋์ ์ ์ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ Mode Change๋ผ๊ณ ํ๋ฉฐ, ์ด Mode Change๋ ํ๋์ ํ๋ก์ธ์ค์์์ ๋์ํ๋ค.
๋ฐ๋๋ก ์ปจํ ์คํธ ์ฒด์ธ์ง๋ Mode Change์ ๋ฌ๋ฆฌ ํ๋ก์ธ์ค๊ฐ ๋ฐ๋๋ ๊ฒ์ ๋งํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค. ํ ํ๋ก์ธ์ค์์ ์ปค๋๋ก CPU ํ ๋น์ด ๋ฐ๋๋ Mode Change์๋ ๋ฌ๋ฆฌ Context Switch๋ ํ๋ก์ธ์ค ๊ทธ ์์ฒด๊ฐ ๋ฐ๋์ ์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ํ ๊ฒฝ์ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๊พธ๋ Context Switch๊ฐ ์ผ์ด๋ ๊น? ๋ค์์ ์ดํด๋ณด์.
- ํ๋ก์ธ์ค์ Termination(Termination of a process)
- ํ๋ก์ธ์ค์ ์๋ฌ๋ ์์ธ ํน์ ์ผ๋ฐ์ ์ธ ์ข ๋ฃ(termination)
- ์๋ก์ด ํ๋ก์ธ์ค๊ฐ dispatch๋ ๋ ํ๋ก์ธ์ค๋ terminate๋๋ค.
- Blocking System Call์ ๋ถ๋ ์ ๋
- ์ฆ, ํด๋น ํ๋ก์ธ์ค๊ฐ Block๋๋ฏ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํด์ผ ํ๋ค.
- I/O request, file open
- Time Slice๊ฐ ๋ค ๋์์ ๋
- ํ์ฌ ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ time slice๋ฅผ ๋ชจ๋ ์์งํ ๊ฒฝ์ฐ timeout๋๋ฉฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก Context Swtichํด์ผํ๋ค.
- I/O interrupt
- Event Occur๋๋ ์ํฉ์์ ์ด๋ฏธ ์คํ ์ค์ธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ์๋ณดํด ๋ฌ๋ผ๊ณ ํ๋ ๊ฒ
- I/O ์์ ์ด ์๋ฃ๋จ์ผ๋ก ์ธํด Block ํ๋ก์ธ์ค๊ฐ Ready ์ํ๋ก ๋ณํจ
- ๊ทธ๋์ ์ด Ready Process๋ CPU๋ฅผ ์ฐจ์งํ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์ ์๋ค.
- ์ด๋ ์ค์ผ์ค๋ฌ์ ์ํด์ ์ ํด์ง๋ค.
Steps of Context Switch
- Program Counter(PC)์ ๋ค๋ฅธ ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ PCB์ ์ ์ฅํ๋ค.(save context)
- ํ์ฌ Running ์ํ์ ์๋ PCB๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
- PCB๋ฅผ ์ ์ ํ Queue๋ก ์ฎ๊ธด๋ค. (Ready, Blocked, Ready/Suspended)
- ์คํ์ ์ํ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ค.
- ์ ํ๋ ํ๋ก์ธ์ค์ PCB๋ฅผ ์ ๋ฐ์ดํธํ๋ค.(state๋ฅผ running์ผ๋ก)
- ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด(code, data, stack)๋ ์ ๋ฐ์ดํธํ๋ค.
- ์ ํ๋ ํ๋ก์ธ์ค์ Context๋ฅผ ๋ณต๊ตฌํ๋ค.