ํ๋ก์ธ์ค ๊ฐ์
OS๋ ๋ค์ํ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
- Batch System(jobs)
- Time-shared Systems - user programs, tasks
ํ๋ก๊ทธ๋จ์ executable file ์ํ๋ก disk์ ์ ์ฅ๋์ด ์๋ค. (passive)
ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ ๋์์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.(active)
ํ ํ๋ก๊ทธ๋จ ๋น
ํ๋ก์ธ์ค๋ ์ฌ๋ฌ๊ฐ์ผ ์ ์๋ค.
ํ ํ๋ก๊ทธ๋จ์ ๋์์ ์ฌ๋ฌ ์ ์ ๊ฐ ์คํํ๋ ๊ฒ์ ์๊ฐํด๋ณด์(์นดํก, ์ ํฌ๋ธ ๋ฑ๋ฑ..)
OS๋ ํ๋ก์ธ์ค ์ฌ๋ฌ๊ฐ๋ฅผ
๋ณ๋ ฌ์ ์ผ๋ก ๊ด๋ฆฌํด ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
ํ๋ก์ธ์ค ๊ตฌ์กฐ
ํ๋ก์ธ์ค๋ ์ฌ๋ฌ ํํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
code
: text section์ด๋ผ๊ณ ๋ ํ๋ค. ์คํ์ด ๋๋ฉด์ ์ํ๋์ด์ผํ ๋ช
๋ น์ด๊ฐ ์ฌ๋ผ์จ๋ค.
data
: global, static ๋ณ์๋ค์ ๋ด๋๋ค.
heap
: runtime๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค
stack
: ์ผ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค.(function parameter, argc, argv, ์ง์ญ๋ณ์ ๋ฑ๋ฑ)
์์)
ํ๋ก์ธ์ค ์ํ
ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋, ๊ทธ ์ํ๋ ๋ฌ๋ผ์ง๋ค

new
: ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๋
running
: ๋ช
๋ น์ด ์คํ์ค์ผ ๋
ready
: ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์์ ์ํด ํ ๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
waiting
: ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์ด๋ฒคํธ(I/O ๋ฑ๋ฑ)๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
terminated
: ํ๋ก์ธ์ค๊ฐ ์ํ์ ๋๋ด๊ณ ๋์์ ์ํ
PCB

ํ๋ก์ธ์ค์ ์ํ, PID, program counter, register ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
interrupt๊ฐ ๋ฐ์ํ์ ๋, pcb์ ํ๋ก์ธ์ค์ ํ์ฌ ์งํ ์ฌํญ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
3. ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
์ฌ๋ฌ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด ์์์ ๊ณต์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ OS์์ ํจ์จ์ ์ผ๋ก process๋ฅผ ์ค์ผ์ค๋งํด์ผ ํ๋ค.
์ฆ, cpu์ ํ์ฉ์ ์ต๋ํํ๊ธฐ ์ํด process scheduling์ด ํ์ํ๋ค.
process scheduler๋ cpu๊ฐ ์ํํ ๋ค์ ์ด์ฉ๊ฐ๋ฅํ ํ๋ก์ธ์ค๋ฅผ ์ ํ๋ค.
+) program counter : ๋ค์์ ์คํํ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
process scheduling ์์
์๋ก์ด ํ๋ก์ธ์ค๋ ์ด๊ธฐ์ ready queue์ ๋์ธ ํ, ์คํ์ ์ํด ์ ํ(dispatch)๋ ๋๊น์ง ready queue์์ ๊ธฐ๋ค๋ฆฐ๋ค.
์ผ๋จ ํ๋ก์ธ์ค์๊ฒ cpu๊ฐ ํ ๋น๋๋ฉด, event๊ฐ ๋ฐ์ํ ๋๊น์ง ํด๋น ํ๋ก์ธ์ค๊ฐ cpu์์ ๋๊ธฐํ๋ค.
event์ ์ข ๋ฅ
ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ ์์ฒญ์ ํด์ ์ ์ถ๋ ฅ queue์ ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค๊ฐ ์๋ก์ด ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์์ํ๋ก์ธ์ค์ ์ข ๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค๊ฐ ์ธํฐ๋ฝํธ ๋ฐ์์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ
ํ ๋น๋ ์๊ฐ์ด ๋ง๋ฃ๋ ๊ฒฝ์ฐ
์ค์ผ์ค๋ฌ์ ์ข ๋ฅ
short term scheduler(CPU scheduler)
- ready-queue ์์ ์๋ ํ๋ก์ธ์ค ์ค ์ค์ cpu์ ํ ๋นํ ํ๋ก์ธ์ค ๊ฒฐ์
long-term scheduler(Job Scheduler)
- ready queue์ ๋ค์ด๊ฐ ํ๋ก์ธ์ค ๊ฒฐ์
- ํ๋ก์ธ์ค๋ฅผ ์ mix ํ๋๊ฒ์ด ํ์ํ๋ค
- ํ๋ก์ธ์ค์ ๋ณ๋ ฌ์ฑ ์ ๋๋ฅผ ๊ฒฐ์ ํ๋ค.
medium-term scheduler
- ready ์ํ์ ์ฐ์ ์์๊ฐ ๊ธํ์ง ์์ ํ๋ก์ธ์ค๋ฅผ disk๋ก swapping-out ํ๋ ์ญํ
Context Switch
ํ์ฌ ๋์๊ฐ๋ ํ๋ก์ธ์ค์์ ์ ํ๋ก์ธ์ค๋ก ๋ณ๊ฒฝํด ์ฃผ๋ ๊ณผ์
old process์ ์ํ๋ฅผ ์ ์ฅํ๊ณ , context switch๋ฅผ ํตํด์ new process์ ์ ์ฅ๋ ์ํ๋ฅผ ๋ก๋ฉํด์ผ ํ๋ค.
์ด ์ํ๋ PCB๋ฅผ ํตํด ๊ฐ์ ธ์จ๋ค
๐ ์ฃผ์ํ ์
- context-switch๋ ์ฆ์์๋ก ํจ์จ์ด ๋จ์ด์ง๋ค.
switchํ๋ ๋์ CPU๊ฐ ์ ํจํ ์์ ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค
๐ ๊ทธ๋ผ์๋ context switching์ ์ฌ์ฉํ๋ ์ด์ ?
ํ๋์ cpu๋ฅผ ์ฌ๋ฌ ์์ ๋ค์ด ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ ์ ์๋ค. (์์์ ๊ณต์ ๋ฐ cpu ํ์ฉ ์ต์ ํ)
์ปดํจํฐ๊ฐ ๋งค๋ฒ ํ๋์ task๋ง ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ๋ฐ์์๋๊ฐ ๋งค์ฐ ๋๋ฆด๊ฒ์ด๋ค.
์ฐธ๊ณ
- Operating System Concepts,8/E
- ์ด์์ฒด์ ๊ฐ์ ์๋ฃ
์ ํํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ ์ ์ต์ ์ ๋คํ์ง๋ง, ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค!
ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์ง์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ ๋ฐ์ํ๊ฒ ์ต๋๋ค๐