ํ๋ก์ธ์ค์ ๊ฐ๋
“Process is a program in execution.”
์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค.
ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(Context)
- CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ์ผ๋ก, CPU์์ ๋ฌด์์, ์ด๋ป๊ฒ, ์ด๋๊น์ง ์ํํ๋์ง๋ฅผ ๋ํ๋ธ๋ค.
- Program Counter
- ๊ฐ์ข register
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ฌธ๋งฅ ์์
- code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB
- kernel stack
ํ๋ก์ธ์ค ์ํ(Process State)
ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ํ๋๋ค.
New(์์ฑ)
- ํ๋ก์ธ์ค๊ฐ ์์ฑ ์ค์ธ ์ํ
Ready(์ค๋น)
- CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ (๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๊ณ )
- ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ์ํ
- ํ๋ก์ธ์ค๊ฐ ์ค์ผ์ค๋ฌ์ ์ํด CPU๊ฐ ํ ๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
Running(์คํ)
- CPU๋ฅผ ์ก๊ณ instruction์ ์ํ ์ค์ธ ์ํ
- CPU ํ ๋น์ด ๋๋๋ ๊ฒฝ์ฐ ์ธ ๊ฐ์ง
- timer interrupt์ ์ํด Ready ์ํ๊ฐ ๋๋ ๊ฒฝ์ฐ
- I/O ๋๋ ์ด๋ฒคํธ์ ์ํด Blocked(waiting) ์ํ๊ฐ ๋๋ ๊ฒฝ์ฐ
- ์ผ์ ๋ง์น๊ณ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ ์ํ๊ฐ ๋๋ ๊ฒฝ์ฐ(Terminated)
Blocked(wait, sleep, ๋๊ธฐ)
- CPU๋ฅผ ์ฃผ์ด๋ ๋น์ฅ instruction์ ์ํํ ์ ์๋ ์ํ
- ํ๋ก์ธ์ค ์์ ์ด ์์ฒญํ event(I/O ๋ฑ)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ์์ ์ด ์๋ฃ๋๋ฉด interrupt๋ฅผ ํตํด ํ๋ก์ธ์ค ์ํ๋ฅผ Ready๋ก ๋ณ๊ฒฝ
- (์) ๋์คํฌ์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ
Terminated(์ข ๋ฃ)
- ํ๋ก์ธ์ค๊ฐ ์ํ(execution)์ ๋ง์น๊ณ ์ข ๋ฃ ์ค์ธ ์ํ
๐ก ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๊ฒ์ ํ๋ก์ธ์ค๊ฐ ์๋๋ค. ๋ณธ๊ฒฉ์ ์ธ ํ๋ก์ธ์ค ์ํ๊ฐ ์์ง ์๋ ๊ฒฝ์ฐ๊ฐ New, ํ๋ก์ธ์ค ์ข ๋ฃ ์ ๋ค์ฒ๋ฆฌ๊ฐ ๋จ์ ์๋ ๊ฒฝ์ฐ๊ฐ Terminated์ด๋ค.
PCB(Process Control Block)
PCB๋ ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค ๋น ์ ์งํ๋ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
PCB๋ ์ด์์ฒด์ ์ ์ปค๋ ์ฃผ์ ๊ณต๊ฐ ์ค์์ ํ๋ก์ธ์ค๋ง๋ค ํ๋์ฉ ๊ฐ์ง๊ณ ์๋ค. CPU ๋ด ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ง๋ค ํด๋น ํ๋ก์ธ์ค๋ค์ ๋ฌธ๋งฅ๋ค์ PCB์ ๋ณ๋๋ก ์ ์ฅํ๋ค.
CPU ์์ ์๋ ํ๋ก์ธ์ค ๋ฌธ๋งฅ์ ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ฅํ๋ ์ด์ ๋?
- CPU๋ฅผ ํ ๋นํ๊ณ ํ ๋น ํด์งํ๋ ์์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋๋ฐ, ํ๋ก์ธ์ค๋ค์ ๋ฌธ๋งฅ์ ์ด๋๊ฐ ์ ์ฅ์ ํด๋์ด์ผ ํ๋ค. ๋ค์๋ฒ์ CPU๋ฅผ ํ ๋นํ์ ๋ ์ ์ฅํ๋ ๋ฌธ๋งฅ ๋ค์ ์ง์ ์ ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. (๋ฌธ๋งฅ ๊ตํ)
PCB ๊ตฌ์ฑ ์์(๊ตฌ์กฐ์ฒด๋ก ์ ์ง)
(1) ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ ๋ณด
- Process state, Process ID
- Scheduling information, Priority
- ํ๋ก์ธ์ค์ priority๋ฅผ ๊ณ์ฐํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ด CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฌ์ฉ๋๋ค.
(2) CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
- Program Counter, registers
(3) ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ
- code, data, stack์ ์์น ์ ๋ณด
(4) ํ์ผ ๊ด๋ จ
- Open file descriptiors…
๋ฌธ๋งฅ ๊ตํ(Context Switch)
๋ฌธ๋งฅ ๊ตํ์ CPU๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
์ํ ๊ณผ์
CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋์ด๊ฐ ๋ ์ด์์ฒด์ ๋ ๋ค์์ ์ํํ๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๊ณ ์๋ ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ PCB๊ฐ ํด์ค๋ค.
- CPU๋ฅผ ๋ด์ด์ฃผ๋ ํ๋ก์ธ์ค์ ์ํ(๋ฌธ๋งฅ)๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ
- CPU๋ฅผ ์๋กญ๊ฒ ์ป๋ ํ๋ก์ธ์ค์ ์ํ(๋ฌธ๋งฅ)๋ฅผ PCB์์ ์ฝ์ด์ด (๋ฌธ๋งฅ ๋ณต์)
๋ฌธ๋งฅ ๊ตํ์ด ์๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค๊ฐ ์ธ๋ถ๋ก๋ถํฐ interrupt๊ฐ ๋ฐ์ํ๊ฑฐ๋, System Call์ ํตํด ์ปค๋ ํจ์๋ฅผ ์คํํ์ ๋ ๋ค์ ์คํ ์ค์ด๋ ํ๋ก์ธ์ค๋ก ๋ณต๊ทํ๋ ๊ณผ์ ์ ๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋ฌ๋ค๊ณ ํ์ง ์๋๋ค.
๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋ ๊ฒฝ์ฐ
timer interrupt๊ฐ ๋ฐ์ํ๊ฑฐ๋ I/O ์์ฒญ System Call์ด ๋ฐ์ํ ๊ฒฝ์ฐ์๋ CPU๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ฃผ๋ฉด์ ๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋๋ค.
(1)์ ๊ฒฝ์ฐ์๋ CPU ์ํ ์ ๋ณด Context์ ์ผ๋ถ๋ฅผ PCB์ ์ ์ฅํด์ผ ํ์ง๋ง, ๋ฌธ๋งฅ ๊ตํ์ ํ๋ (2)์ ๊ฒฝ์ฐ ๊ทธ ๋ถ๋ด์ด ํจ์ฌ ํฌ๋ค. (์ค๋ฒํค๋) ์๋ํ๋ฉด cache memory๋ฅผ ์ง์์ฃผ๋ ์์ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ ํ
- ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ค์ ๋ชจ๋ ํ์ ๋ฃ๊ณ ๊ด๋ฆฌํ๋ค.
- ํ๋ก์ธ์ค๋ค์ ๊ฐ ํ๋ค์ ์ค๊ฐ๋ฉฐ ์ํ๋๋ค.
Job Queue
- ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
Ready Queue
- ์ค๋น ํ
- ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
Device Queue
- ์ ์ถ๋ ฅ์ฅ์น ๋๊ธฐ ํ
- I/O device์ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
์ค์ผ์ค๋ฌ(Scheduler)
๋จ๊ธฐ ์ค์ผ์ค๋ฌ(Short-term scheduler, CPU scheduler)
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ running ์ํฌ ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ CPU๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํ๋ค. (millisecond ๋จ์)
- CPU๋ ๋น ๋ฅด๊ฒ ํ๋ก์ธ์ค์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๋ ์์ฃผ ํธ์ถ๋๋ค.
- (์) timer interrupt ํ ๋ฒ ๊ฑธ๋ฆด ๋๋ง๋ค ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ํธ์ถ๋๋ค.
์ฅ๊ธฐ ์ค์ผ์ค๋ฌ(Long-term scheduler, Job scheduler)
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ์ ready queue๋ก ๋ณด๋ผ ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค memory(๋ฐ ๊ฐ์ข
์์)๋ฅผ ์ฃผ๋ ๋ฌธ์ (๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๋ฌธ์ )
- ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ new์์ ready ์ํ๋ก ๋์ด๊ฐ ๋ admitted๊ฐ ์ผ์ด๋๋๋ฐ, ์ด ์ญํ ์ ํ๋ค.
- admitted๋ ํ๋ก์ธ์ค๊ฐ ์์๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋๋ก ํ๋ฝํด ์ฃผ๋ ์ญํ ์ ํ๋ค.
- degree of Multiprogramming์ ์ ์ด
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ํ๋ก์ธ์ค์ ๊ฐ์๋ฅผ ์กฐ์ ํ๋ ์ญํ ์ ํ๋ค.
- ์์ฆ ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๋๋ฐ ์ด๋ฅผ ์ด๋ป๊ฒ ์กฐ์ ํ ๊น? → Medium-term scheduler
- time sharing system์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๋ค. (๋ฌด์กฐ๊ฑด ready)
- ์์ฆ ๋ฒ์ฉ ์ด์์ฒด์ (๋ฆฌ๋ ์ค, ์๋์ฐ์ฆ ๋ฑ)์๋ ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์กด์ฌํ์ง ์๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ๋ฌด์กฐ๊ฑด ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ํ ๊ณง๋ฐ๋ก ready ์ํ๊ฐ ๋๋ค.
์ค๊ธฐ ์ค์ผ์ค๋ฌ(Medium-trem scheduler, Swapper)
- ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋
- ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฒฝํฉ์ด ์ฌํด์ ธ ์ฑ๋ฅ์ด ๋ฎ์์ง๋ ์ํฉ์ด ์๊ธด๋ค.
- ์ด๋ฐ ์ํฉ์์ ์ผ๋ถ ํ๋ก๊ทธ๋จ์์ ์ซ์๋ด๋ ๊ฒ์ด ํจ์จ์ ์ผ ์๊ฐ ์๋ค.
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of Multiprogramming์ ์ ์ด
degree of Multiprogramming๋?
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ํ๋ก์ธ์ค์ ๊ฐ์๋ฅผ ์๋ฏธ
ํ๋ก์ธ์ค ์ํ Suspended (Stopped)
- Ready
- Running
- Blocked (wait, sleep)
- Suspended (Stopped)
Suspended (Stopped)
- ์ด์์ฒด์ ์ ์ค๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ๋ค์ด๊ฐ๋ฉด์ ์ถ๊ฐ๋๋ ํ๋ก์ธ์ค ์ํ
- ์ค๊ธฐ ์ค์ผ์ค๋ฌ์ ์ํด ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ ์ํ
- ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
- ํญ์ ์ค๊ธฐ ์ค์ผ์ค๋ฌ์ ์ํด์๋ง Suspended๊ฐ ๋๋ ๊ฒ์ ์๋์ง๋ง Suspended ์ํ๊ฐ ๋๋ ์ํฉ์ ๊ณตํต์ ์ ์ธ๋ถ์ ์ธ ์ด์ ๋๋ฌธ์ด๋ค.
- (์1) ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ผ์์ ์ง ์ํจ ๊ฒฝ์ฐ (break key)
- (์2) ์์คํ ์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ ์ํจ ๊ฒฝ์ฐ (๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋)
Blocked์ Suspended ์ฐจ์ด
- Blocked: ์์ ์ด ์์ฒญํ event๊ฐ ๋ง์กฑ๋๋ฉด Ready
- Suspended: ์ธ๋ถ์์ resumeํด์ฃผ์ด์ผ Active (์ฌ๋์ด ๋ค์ ์คํํด์ผ ํจ)
Suspended Blocked
Suspended๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ ๋นผ์๊ธด ์ํ์ด๊ธฐ ๋๋ฌธ์ CPU ์์ ๊ณผ ๊ฐ์ ์ปดํจํฐ ๋ด๋ถ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ๋ง์ฝ์ I/O ์์ ๋์ค์ Suspended ์ํ๊ฐ ๋์์ ๋๋ I/O์ ๊ณ์ ํ ์ ์๋ค.
user mode Running๊ณผ kernel mode Running
ํ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ์์ ์ ์ฝ๋๋ฅผ ์ํ ์ค์ธ ์ํ๋ฅผ user mode Running์ด๋ผ๊ณ ํ๋ค.
ํ๋ก์ธ์ค๊ฐ System Call์ ํตํด ์ด์์ฒด์ ์ ์ฝ๋๊ฐ ์ํ๋๋ ๊ฒ์ kernel mode Running์ด๋ผ๊ณ ํ๋ค.
kernel mode Running ์ํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋นผ์๊ฒผ๋ค๊ณ ๋ณด๋ ๊ฒ ๋ณด๋ค๋, ํ๋ก์ธ์ค๊ฐ ์ฌ์ ํ CPU์์ ์ผ์ ํ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ฃผํ๋ ๊ฒ์ด ๋ ํ๋นํ๋ค.
์ด๋ ์ฃผ์ํด์ผ ํ ์
- ์ด์์ฒด์ ๊ฐ CPU๋ฅผ ์ก๊ณ ๊ธฐ๊ณ์ด๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ๊ฐ Running๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ์ฝ์ง๋ง ์๋๋ค.
- Running-Ready-Blocked ์ํ๋ค์ ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋๋ ์ํ์ด์ง, ์ด์์ฒด์ ๋ณธ์ธ์ ์ํ๋ฅผ ์ค์ค๋ก ํํํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ ์ถ์ฒ
http://www.kocw.net/home/search/kemView.do?kemId=1226304
์ด์์ฒด์
<๊ต์ฌ ๋ฐ ์ถ์ฒ><br/><br/>- A. Silberschatz et al., Operating System Concepts, 9th Edition, John Wiley & Sons, Inc. 2013.<br/><br/>- A. Silberschatz et al., Operating System Principles, Wiley Asia Student Edition<br/><br/>- ๋ฐํจ๊ฒฝ, ์ด์์ฒด์ ์
www.kocw.net