Computer Science/๐ Operating System
[์ด์์ฒด์ ] PCB์ ๋ฌธ๋งฅ ๊ตํ(Context Switching)
J1Yun
2023. 2. 24. 15:00
728x90
PCB (Process Control Block)
- ์ด์์ฒด์ ๊ฐ ์์คํ
๋ด์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ง๋ค ์ ์งํด์ผํ๋ ์ ๋ณด๋ค์ ๋ด๋ ์ปค๋ ๋ด ์๋ฃ๊ตฌ์กฐ
- ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ data ์์ญ์ ์กด์ฌ
- ํ๋ก์ธ์ค์ ๋ฉํ ๋ฐ์ดํฐ๋ค์ด ์ ์ฅ๋๋ ๊ณณ
- Process ID
- Process ์ํ
- CPU Regiter ๊ฐ
- CPU ์ค์ผ์ค๋ง ์ ๋ณด
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ/๊ด๋ฆฌ ์ ๋ณด
- ๋ฑ๋ฑ
- Linked List ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ
- PCB ์์ฑ๋ง๋ค PCB List Head์ ์ฃผ์๊ฐ์ผ๋ก ์ฐ๊ฒฐ
PCB๊ฐ ํ์ํ ์ด์
CPU์์๋ ํ๋ก์ธ์ค์ ์ํ์ ๋ฐ๋ผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํด์ฃผ๋ ์์ ์ด ํ์ํ๋ค. ์ด๋ฅผ ๋ฌธ๋งฅ ๊ตํ(Context Switching)์ด๋ผ๊ณ ํ๋ค. ๋ฌธ๋งฅ ๊ตํ ์ ํ์ฌ CPU ์์์ ์คํ๋๊ณ ์๋ ํ๋ก์ธ์ค์ ์ ๋ณด(๋ฌธ๋งฅ)์ ์์ ์ PCB์ ์ ์ฅํ๊ณ , ์๋กญ๊ฒ CPU ํ ๋น์ ๋ฐ๊ฒ๋๋ ํ๋ก์ธ์ค๋ PCB๋ก๋ถํฐ ์์ ์ ์ ์ฅํ๋ ์์ ์ ์ ๋ณด(๋ฌธ๋งฅ)์ ๋ณต์์์ผ ์ด์ด์ ์คํํ ์ ์์ด์ผ ํ๋ค. ์ด๋ ๋ฏ PCB๋ ๋ฌธ๋งฅ ๊ตํ ๊ณผ์ ์์ ํ๋ก์ธ์ค์ ์ ๋ณด/์ํ/๋ฌธ๋งฅ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ฌธ๋งฅ ๊ตํ(Context Switching)
- CPU/์ฝ์ด์์ ์คํ์ค์ด๋ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค/์ค๋ ๋๋ก ๊ต์ฒด๋๋ ๊ฒ (ํ๋ก์ธ์ค/์ค๋ ๋ -> ์ดํ ํ๋ก์ธ์ค)
- ํ๋์ ํ๋ก์ธ์ค๋ก๋ถํฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก CPU ์ ์ด๊ถ์ด ์ด์๋๋ ๊ณผ์
- ๋ฉํฐ ํ์คํน(Multitasking), ์ธํฐ๋ฝํธ ํธ๋ค๋ง(Interrupt Handling) ์ ๋ฌธ๋งฅ ๊ตํ ๋ฐ์
- ํ๋ก์ธ์ค๊ฐ ์ฃผ์ด์ง time slice(quantum)๋ฅผ ๋ค ์ฌ์ฉํ๋ค๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋
- ์ ์ถ๋ ฅ ์์ฒญ(IO ์์ ) ๋ฑ์ ๋ํ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋
- ์์ ํ๋ก์ธ์ค ์์ฑ, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋๊ธฐ ๋ฑ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ค๋ ค์ผํ ๋
- ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋๋ ๊ทธ ์ธ ์ธํฐ๋ฝํธ๋ ์์คํ ์ฝ ๋ฐ์ ์์๋ ์ ์ ์์ ์ปค๋๋ก ๋ชจ๋๋ง ๋ฐ๋ ๋ฟ ๋ฌธ๋งฅ ๊ตํ X
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ (๋ฉํฐ ํ์คํน)
- ์งง์ time slice ๋ฑ์ผ๋ก ์ธํ ์ฆ์ ๋ฌธ๋งฅ ๊ตํ์ ์ค๋ฒ ํค๋๋ฅผ ๋ฐ์
Context Switching ๊ณผ์
- P1 ์คํ ์ค ์ด์์ฒด์ ์์ ํ๋ก์ธ์ค์ ์ค์ผ์ค๋ฌ์ ์ํด ์ธํฐ๋ฝํธ ๋ฐ์
- ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ์ ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํ
- ๊ธฐ์กด์ ์คํ๋์๋ ํ์ฌ ํ๋ก์ธ์ค(P1)์ ์ํ/์ ๋ณด๋ฅผ ์์ ์ PCB1์ ์ ์ฅ
- PCB2๋ก๋ถํฐ ๋ค์์ ์คํ๋๋ ํ๋ก์ธ์ค(P2)์ ์ํ/์ ๋ณด ๋ณต๊ตฌ
- ์ปค๋ ๋ชจ๋์์ ์ ์ ๋ชจ๋๋ก ์ ํ
- ์๋ก์ด ํ๋ก์ธ์ค P2 ์คํ
ํ๋ก์ธ์ค ์ํ ์ ์ด์ ๋ฐ๋ฅธ ๋ฌธ๋งฅ ๊ตํ์ด ํ์ํ ์ํฉ
ํ์ ์ํฉ | ์ค๋ช | ์ ์ด ๊ณผ์ |
dispatch | ์๋กญ๊ฒ CPU ํ ๋น ๋ฐ์ ์คํ ์ํ๋ก ์ ์ด | ์ค๋น → ์คํ (dispatch) |
CPU ํ ๋น ์๊ฐ ๋ง๋ฃ | CPU ํ ๋น ์๊ฐ ๋ง๋ฃ๋ก ์ค๋น ์ํ๋ก ์ ์ด | ์คํ → ์ค๋น (Timeout) |
I/O ์์ ๋ฐ ํ ๋น | I/O ์์ ์ด ํ์ํ์ฌ ์์ ์๋ฃ ์๊น์ง ๋๊ธฐ ์ํ๋ก ์ ์ด | ์คํ → ๋๊ธฐ (Sleep) |
System Call | ๋๋ค๋ฅธ ์๋น์ค ํธ์ถ์ด ํ์ํ ๊ฒฝ์ฐ ๋๊ธฐ ์ํ๋ก ์ ์ด | ์คํ → ๋๊ธฐ (Sleep |
๋ฌธ๋งฅ ๊ตํ์ ์ค๋ฒํค๋ ํด๊ฒฐ ๋ฐฉ์
- ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ์์ค(time slice ์ฃผ๊ธฐ)์ ๋ฎ์ถ์ด ๋ฌธ๋งฅ ๊ตํ ๋ฐ์ ๋น๋ ๊ฐ์
- ์ค๋ ๋๋ฅผ ์ด์ฉํด ๋ฌธ๋งฅ ๊ตํ ๋ถํ ์ต์ํ (์ค๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ด๋ จ ์ฒ๋ฆฌ๋ฅผ ์ํํ ํ์ X)
- ์คํ ์ด์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ์คํ ํฌ์ธํฐ๋ฅผ ํ์ฉํด ๋ฌธ๋งฅ ๊ตํ ๋ถํ ์ต์ํ
โญ๏ธ ์ฐธ๊ณ
- https://aktnfl.tistory.com/25
- https://spurdev.tistory.com/13
- https://yoongrammer.tistory.com/53
- https://gyoogle.dev/blog/computer-science/operating-system/PCB%20&%20Context%20Switching.htmlhttps://yoongrammer.tistory.com/53
728x90