Process Management
ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ๊ฐ ๋, CPU๊ฐ CPU ์ค์ผ์ค๋ง์ ํตํด ๊ด๋ฆฌํ๋ ๊ฒ
( ์ด๋ CPU๋ ๊ฐ ํ๋ก์ธ์ค๋ค์ด ๋๊ตฐ์ง ์์์ผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ํ๋ก์ธ์ค๋ค์ ํน์ง์ ๊ฐ๊ณ ์๋ ๊ฒ์ด Process Metadata์ด๋ค. )
[ Process Metadata ]
- Process ID : PID(Process Identification Number)๋ผ๊ณ ๋ ํ๋ค. // ํ๋ก์ธ์ค ๊ณ ์ ์๋ณ๋ฒํธ
- Process State : ํ๋ก์ธ์ค์ ํ์ฌ ์ํ(์ค๋น, ์คํ, ๋๊ธฐ)๋ฅผ ๊ธฐ์ต์ํจ๋ค. //ํ๋ก์ธ์ค ์ํ
- Process Priority : ํ๋ก์ธ์ค ์ฐ์ ์์ ๋ฑ๊ณผ ๊ฐ์ ์ค์ผ์ค๋ง ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ธฐ์ต์ํจ๋ค. //์ค์ผ์ค๋ง ์ ๋ณด
- CPU Registers : ํ๋ก์ธ์ค์ ๋ ์ง์คํฐ ์ํ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ผ๋ก CPU ๋ด ๋ฒ์ฉ ๋ ์ง์คํฐ, ๋ฐ์ดํฐ ๋ ์ง์คํฐ, ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ ๋ฑ์ด ๊ฐ๊ณ ์๋ ๊ฐ์ ๊ธฐ์ต์ํจ๋ค.
- Owner : CPU ์ฌ์ฉ์๊ฐ์ ์ ๋ณด(Quantum)๊ณผ ๊ฐ์ข ์ค์ผ์ค๋ฌ์ ํ์ํ ์ ๋ณด๋ฅผ ๊ธฐ์ต์ํจ๋ค. //๊ณ์ ์ ๋ณด
- ๊ธฐ์ต์ฅ์น ๊ด๋ฆฌ ์ ๋ณด : ํ๋ก๊ทธ๋จ์ด ์ ์ฌ๋ ๊ธฐ์ต ์ฅ์น์ ์ํ์น, ํํ์น, ํ์ด์ง ํ ์ด๋ธ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ธฐ์ต์ํจ๋ค.
- ์ ์ถ๋ ฅ ์ ๋ณด : ํ๋ก์ธ์ค ์ํ ์ ํ์ํ ์ฃผ๋ณ ์ฅ์น, ํ์ผ๋ค์ ์ ๋ณด๋ฅผ ๊ธฐ์ต์ํจ๋ค.
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ : ๋ค์์ ์คํ๋๋ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ธฐ์ต์ํจ๋ค. //๊ณ์๊ธฐ
์ด๋ฌํ ์ ๋ณด๋ค์ด ๋ด๊ธด ๋ฉํ๋ฐ์ดํฐ๋ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด PCB๋ผ๋ ๊ณณ์ ์ ์ฅ๋๋ค!
PCB (Process Controll Block)
ํ๋ก์ธ์ค ๋ฉํ๋ฐ์ดํฐ๋ค์ ์ ์ฅํด ๋๋ ๊ณณ
ํ๋์ PCB ์์๋ ํ๋์ ํ๋ก์ธ์ค์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ค
ํ๋ก๊ทธ๋จ ์คํ -> ํ๋ก์ธ์ค ์์ฑ -> ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ (์ฝ๋, ๋ฐ์ดํฐ, ์คํ) ์์ฑ -> ์ด ํ๋ก์ธ์ค์ ๋ฉํ๋ฐ์ดํฐ๋ค์ด PCB์ ์ ์ฅ
PCB ์์ธ ๊ตฌ์กฐ ->
PCB๊ฐ ํ์ํ ์ด์
CPU์์๋ ํ๋ก์ธ์ค์ ์ํ์ ๋ฐ๋ผ ๊ต์ฒด ์์ ์ด ์ด๋ฃจ์ด์ง๋ค.
์ด๋ ์์ผ๋ก ๋ค์ ์ํํ Block ์ํ์ ํ๋ก์ธ์ค์ ์ํ๊ฐ์ PCB์ ์ ์ฅํด๋๋ค.
PCB์ ๊ด๋ฆฌ ๋ฐฉ์
Linked List ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋๋ค. PCB list head์ PCB ์์ฑ๋ ๋๋ง๋ค ๋ถ๊ฒ ๋๋ค. ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ ธ์๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ก ์ฝ์ , ์ญ์ ์ฉ์ด
ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด ํด๋น PCB๊ฐ ์์ฑ๋๊ณ ํ๋ก์ธ์ค ์๋ฃ์ ์ ๊ฑฐ๊ฐ ๋๋ค.
์ด๋ ๊ฒ ์ํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ ๋, CPU์ ๋ ์ง์คํฐ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ Context Switching์ด๋ผ๊ณ ํ๋ค.
Context Switching
CPU๊ฐ ํ์ฌ ์คํํ๊ณ ์๋ task(process, thread)์ ์ํ๋ฅผ ์ ์ฅํ๊ณ
๋ค์ ์งํํ task์ ์ํ ๋ฐ register ๊ฐ๋ค์ ๋ํ
์ ๋ณด(context)๋ฅผ ์ฝ์ด ์๋ก์ด task์ context ์ ๋ณด๋ก ๊ต์ฒดํ๋ ๊ณผ์
* context๋ : CPU๊ฐ ๋ค๋ฃจ๋ Task(Process / Thread)์ ๋ํ ์ ๋ณด๋ฅผ ๋งํ๊ณ , ๋๋ถ๋ถ์ ์ ๋ณด๋ Register์ ์ ์ฅ๋๊ณ pcb๋ก ๊ด๋ฆฌ๋๋ค.
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ์คํ ์ค์ธ CPU ์ฌ์ฉ ํ๊ฐ ์๊ฐ์ ๋ชจ๋ ์๋ชจํ๊ฑฐ๋,
์ ์ถ๋ ฅ์ ์ํด ๋๊ธฐํด์ผ ํ๋ ๊ฒฝ์ฐ Context Switching์ด ๋ฐ์
ํ๋ก์ธ์ค๊ฐ Ready -> Running , Running -> Ready , Running -> Block ์ฒ๋ผ ์ํ ๋ณ๊ฒฝ ์์ ๋ฐ์
Context Switching ์ํ ๊ณผ์
1. Task์ ๋๋ถ๋ถ ์ ๋ณด๋ Register์ ์ ์ฅ๋๊ณ PCB(Process Control Block)๋ก ๊ด๋ฆฌ
2. ํ์ฌ ์คํํ๊ณ ์๋ Task์ PCB ์ ๋ณด๋ฅผ ์ ์ฅ (Process Stack, Ready Queue)
3. ๋ค์ ์คํํ Task์ PCB ์ ๋ณด๋ฅผ ์ฝ์ด Register์ ์ ์ฌํ๊ณ CPU๊ฐ ์ด์ ์ ์งํํ๋ ๊ณผ์ ์ ์ฐ์์ ์ผ๋ก ์ํ
Context Switching Cost
1. Cashe ์ด๊ธฐํ
2. Memory Mapping ์ด๊ธฐํ
3. ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ ์ํด์ ํญ์ ์คํ๋์ด์ผ ํ๋ kernel
์์ ๊ฐ์ Cost๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ ์ฆ์ context switching์ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ ธ์จ๋ค.
* Process๊ฐ Thread๋ณด๋ค ๋ง์ด ๋ ๋ค. ( Thread๋ stack์์ญ์ ์ ์ธํ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ context switching ๋ฐ์์ stack ์์ญ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๊ธฐ ๋๋ฌธ)
Context Switching๊ณผ Interrupt
CPU๋ ํ๋์ ํ๋ก์ธ์ค ์ ๋ณด๋ง์ ๊ธฐ์ตํ๋ค.
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์๋ CPU๊ฐ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค๊ฐ ๋ณต๊ทํ๊ณ ๋ค์ ์ ์ฅํ๋ค๊ฐ ๋ณต๊ทํ๋ ์ผ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด๋ค.
ํ๋ก์ธ์ค ์ค๋จ๊ณผ ์คํ์ interrupt๊ฐ ๋ฐ์ํ๋ฏ๋ก context switching์ด ๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ interrupt๊ฐ ๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
Context Switching๊ณผ ์๊ฐ ํ ๋น๋
์๊ฐ ํ ๋น๋์ด ์ ์ด์ง๋ฉด :
๋ฌธ๋งฅ ๊ตํ ์, ์ธํฐ๋ฝํธ ํ์, ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ํ๋๋ ๋๋์ ๊ฐ๋๋ค.
์๊ฐ ํ ๋น๋์ด ์ปค์ง๋ฉด :
๋ฌธ๋งฅ ๊ตํ ์, ์ธํฐ๋ฝํธ ํ์, ์ค๋ฒํค๋๊ฐ ๊ฐ์ํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ํ๋๋ ๋๋์ ๊ฐ์ง ๋ชปํ๋ค.
<์ฐธ๊ณ >
https://m.blog.naver.com/adamdoha/222019884898 https://jhnyang.tistory.com/33
'๐ฅ > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ์ธํฐ๋ฝํธ Interrupt (0) | 2021.08.25 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ (0) | 2021.08.25 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด (0) | 2021.08.18 |
[์ด์์ฒด์ ] CPU ์ค์ผ์ค๋ฌ (0) | 2021.08.11 |
[์ด์์ฒด์ ] ์ค์ผ์ค๋ฌ์ ์ข ๋ฅ : ์ฅ๊ธฐ, ์ค๊ธฐ, ๋จ๊ธฐ (0) | 2021.08.04 |