Process1 - hochan222/Everything-in-JavaScript GitHub Wiki
ํ๋ก์ธ์ค ๊ฐ๋
-
"Process is a program in execution"
-
ํ๋ก์ธ์ค์ context == ํ๋ก์ธ์ค์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๋๋ฐ ํ์ํ ๋ชจ๋ ์์
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter
- ๊ฐ์ข register
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB (Process Control Block)
- Kernel stack
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
ํ๋ก์ธ์ค ์ํ (Process State)
- ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ํ๋๋ค.
- Running
- CPU๋ฅผ ์ก๊ณ instruction์ ์ํ์ค์ธ ์ํ
- Ready
- CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ (๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑ)
- Blocked (wait, sleep)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ Instruction์ ์ํํ ์ ์๋ ์ํ
- Process ์์ ์ด ์์ฒญํ event(์: I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- (์) ๋์คํฌ์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ
- New: ํ๋ก์ธ์ค๊ฐ ์์ฑ์ค์ธ ์ํ
- Terminated: ์ํ(execution)์ด ๋๋ ์ํ
- Suspended (stopped) (์ค๊ณ์ค์ผ์ค๋ฌ๋ก์ธํด ์ถ๊ฐ๋จ)
- ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
- ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ Swap out ๋๋ค.
- ์) ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง ์ํจ ๊ฒฝ์ฐ
- ์์คํ ์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ์ํด
- (๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋)
- Running
Blocked: ์์ ์ด ์์ฒญํ event๊ฐ ๋ง์กฑ๋๋ฉด Ready
Suspended: ์ธ๋ถ์์ resumeํด ์ฃผ์ด์ผ Active
ํ๋ก์ธ์ค ์ํ๋
Process Control Block (PCB)
- ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋น ์ ์งํ๋ ์ ๋ณด
Context Switch
-
์ฌ์ฉ์ Process์์ ๋ค๋ฅธ ์ฌ์ฉ์ Process๋ก ๋๊ฒจ์ฃผ์ด์ผ๋ (์ด์์ฒด์ ๋ก ๊ฐ๋๊ฑด์๋)
-
CPU๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
-
CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํ
- CPU๋ฅผ ๋ด์ด์ฃผ๋ ํ๋ก์ธ์ค ์ํ๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ
- CPU๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์์ ์ฝ์ด์ด
-
System call์ด๋ Interrupt ๋ฐ์์ ๋ฐ๋์ context switch๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋.
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋ง ํ๊ธฐ ์ํ ํ
- Job queue
- ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Ready queue
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Device queues
- I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ค์ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
interrupt ๋ฐ์์ ready queue๋ก ๋์ด๊ฐ๋๊ฑด ์๋ (๊ทธ๋ฆผ ์๋ชป๋จ)