Computer Science
Process
8/12/2024

Concept
Program In Execution
The Unit of Work
ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ด ์ํ๋๋ ์์ ๋จ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด์์ฒด์ ์ ์ํ์ฌ ๊ด๋ฆฌ๋ฉ๋๋ค. ์ด์์ฒด์ ์ ๊ฐ์ฅ ํฐ ์๋ฌด ์ค ํ๋๋ ๋์คํฌ์ ํ๋ก๊ทธ๋จ์ด ์ํ๋ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๊ณ , CPU๊ฐ ์ด๋ค ํ๋ก์ธ์ค์ ๋ช ๋ น์ด๋ค์ ์ํํ๊ฒ ํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค. ๋ํ ๋ชจ๋ ๋ช ๋ น์ด๊ฐ ์ํ๋๋ฉด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๊ณ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ์ค์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์๋ค์ ๋ฐํํ๋ ์์ ๋ ์ํํฉ๋๋ค.
ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ธ์ง ์ ํํ๊ฒ ์ดํดํ๊ธฐ ์ํด์๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์ค์ ๋ก ๋์ํ๋์ง ๊ทธ ์๋ฆฌ๋ฅผ ์์์ผํ ํ์๊ฐ ์์ต๋๋ค. ์๋๋ถํฐ๋ ํ๋ก๊ทธ๋จ์ ์ํ์ํค๊ธฐ ์ํด ์ด์์ฒด์ ๊ฐ ์ํํ๋ ์ผ๋ค์ ์ดํด๋ณด๊ณ ๊ทธ ๊ณผ์ ์์ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ธ์ง ์ดํด๋๋ฅผ ๋์ธ๋ค์, ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ ๋ณด๋ค์ ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ง ์์ ์ ๋๋ค.
In Memoryโฆ
์ฐ๋ฆฌ๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์ ์์ค์ฝ๋๋ก ๋์คํฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ด ์์ค์ฝ๋๋ฅผ ์ปดํ์ผ์ ํตํด ์คํ๊ฐ๋ฅํ ํ์ผ๋ก ๋ณํํ๋ฉด XXX.out ํน์ XXX.exe์ ๊ฐ์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ด๊ฒ์ด โํ๋ก๊ทธ๋จโ์ผ๋ก, ์์ง ์ํ์ค์ด์ง๋ ์์ง๋ง ์ด์์ฒด์ ๋ก๋ถํฐ ํธ์ถ๋์ด ์ํ๋ ์ ์๋ ์ํ์ธ ํ์ผ์ ์๋ฏธํฉ๋๋ค.
์ดํ ์ปดํจํฐ์ ์ฌ์ฉ์์ ์ํด ํ๋ก๊ทธ๋จ์ด ํธ์ถ๋๋ฉด, ์ด์์ฒด์ ๋ ๋์คํฌ์ ์๋ ํ๋ก๊ทธ๋จ์ด ์ํ๋ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๊ณผ์ loading์ ๊ฑฐ์นฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ์ด ๋ก๋ฉ๋ ์ด instance๋ฅผ โํ๋ก์ธ์คโ๋ผ๊ณ ํฉ๋๋ค. ์ดํ ํ๋ก์ธ์ค๋ OS์ ์ํด ํ๋ก์ธ์๋ฅผ ์ ์ ํ๊ฒ ๋๊ณ ํ๋ก๊ทธ๋จ์ ์ํ๋ฉ๋๋ค.

https://www.includehelp.com/operating-systems/memory-layout-of-a-process.aspx
๋ฉ๋ชจ๋ฆฌ ์์ ํ๋ก์ธ์ค๋ ์์ ๊ฐ์ด ์ฌ๋ฌ ์น์ ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
TEXT ์น์ ์ ์ํ๋๋ ๋ช ๋ น์ด๋ค์ ํฌํจํ๊ณ ์๋ ์น์ ์ ๋๋ค. CPU์ PC Register๊ฐ ์ด ๊ณต๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉฐ, ํ๋์ ๋ช ๋ น์ด๊ฐ ์ํ๋ ๋๋ง๋ค ๊ทธ ๋ค์ ์์น์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ๋ฆฌ์ผ ํ๋ก๊ทธ๋จ์ด ์์ฐจ์ ์ผ๋ก ์ํ๋ฉ๋๋ค.
DATA ์น์ ์ ์ ์ญ ๋ณ์๋ฅผ ํฌํจํ๊ณ ์๋ ์น์ ์ ๋๋ค. ํ๋ก๊ทธ๋จ ์ํ ์ค ์ ์ญ๋ณ์์ ์ ๊ทผํ ์ผ์ด ์์ ๋ ์ด ๊ณณ์ ์ ๊ทผํ๊ฒ ๋ฉ๋๋ค.
HEAP ์น์ ์ ๋์ ํ ๋น๋ ๋ณ์๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. C์์์ malloc, Java์ new ๋ฅผ ํตํด ์์ฑ๋ ๋ณ์๋ค์ ์ด ๊ณณ์ ์ ์ฅ๋ฉ๋๋ค. ์ด ๋ณ์๋ค์ ์ ํ์ ์ธ ๋ ผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฎ์ ์ฃผ์๋ถํฐ ๋์ ์ฃผ์๋ก ์ฑ์์ง๋๋ค.
STACK ์น์ ์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ, ๋ฐํ ๊ฐ, ์ง์ญ ๋ณ์๋ค์ ํฌํจํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. ์ด ๋ณ์๋ค์ ๋์ ์ฃผ์๋ถํฐ ๋ฎ์ ์ฃผ์๋ก ์ฑ์์ง๋๋ค. ํํ ์๊ธฐํ๋ StackOverflow๋ ํจ์์ ๋ฃจํ ํธ์ถ๋ก ์ธํ์ฌ ์ด ๊ณต๊ฐ์ด ํ๊ณ์น๋ฅผ ๋๊ฒผ์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ ๋๋ค. ํจ์์ ํธ์ถ์ ํตํด ํ๋ผ๋ฏธํฐ์ ๋ฐํ ๊ฐ, ์ง์ญ ๋ณ์๋ค์ด ์ ์ฅ๋์ด์ผ ํ๋ ๊ณต๊ฐ์ด ๋ฌดํํ ๋์ด๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
PCB : Process Control Block
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ก์ธ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ด์์ฒด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์๋ ํ๋ก์ธ์ค๊ฐ ๋ช๊ฐ๊ฐ ์๋์ง, ์ด๋์ ์๋์ง, ์ด๋ค ์ํ์ธ์ง ๊ด๋ฆฌํด์ผํ ํ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์์ฒด์ ๋ ๋ณ๋์ ๊ตฌ์กฐ์ฒด๋ฅผ ํตํด ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๋๋ฐ, ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ PCB๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.

ํ๋์ PCB์๋ ํ๋์ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์์ต๋๋ค. PCB์๋ ํ๋ก์ธ์ค์ ๊ณ ์ ํ ์๋ณ์, ์ํ๋ฅผ ๋น๋กฏํ์ฌ CPU์๊ฒ ์ ๋ฌํด์ผํ Context, ํ ๋น๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฃผ์, ์์ฑํ ์ฌ์ฉ์ ๋ฑ์ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.
Context๋ ํ๋ก์ธ์๊ฐ ํ๋ก์ธ์ค๋ฅผ ์ํํ๋๋ฐ ํ์ํ ์ ๋ณด๋ค๋ก, PC(Program Counter), General Purpose Register๋ค์ ํฌํจํฉ๋๋ค. ์๋์์ ์ค๋ช ํ๊ฒ ์ง๋ง ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค์ ๋์์ ๋์๊ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์, ํ๋ก์ธ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋น ๋ฅด๊ฒ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์ํํฉ๋๋ค. ์ด ๊ณผ์ ์์ ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์๋ฅผ ๋ ๋๊ณ ๋ค์ ์ ์ ํ ๋, ํ๋ก์ธ์์๊ฒ โ๊ธฐ์กด์ ์ด ๋ถ๋ถ์์ ๋๊ฒผ์ผ๋ ์ด์ ๋ ์ด ๋ถ๋ถ๋ถํฐ ์ํํ๋ฉด ๋ผโ ๋ผ๋ ์ด์ผ๊ธฐ๋ฅผ ํด์ค ์ฃผ์ฒด๊ฐ ํ์ํฉ๋๋ค. OS๋ PCB์ context์ ํ๋ก์ธ์๋ฅผ ๋ ๋๋ ์์ ์ PC์ General Purpose Register๋ฅผ ์ ์ฅํด๋๊ณ , ์ดํ ํ๋ก์ธ์ค๊ฐ ๋ค์ CPU๋ฅผ ์ ์ ํ ๋ ํด๋น ๊ฐ๋ค์ CPU์ ์ ๊ณตํ์ฌ ๋๊ฒผ๋ ์ํ์์๋ถํฐ ํ๋ก์ธ์ค๊ฐ ๋ค์ ์ํ๋ ์ ์๋๋ก ํฉ๋๋ค. ์ด ๋ถ๋ถ์ Context Switch์์ ๋ ์์ธํ๊ฒ ์์๋ณผ ๊ฒ์ ๋๋ค.
๊ฒฐ๊ตญ ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋์คํฌ์ ์๋ ํ๋ก๊ทธ๋จ์ ์ํ๊ฐ๋ฅํ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ฉํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์์ฑ๋ ํ๋ก์ธ์ค์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ PCB๋ฅผ ๋ง๋ค๊ณ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๊ณ ์๋ PCB Table์ ์ ์ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ์ดํ PCB๋ ์ฌ๋ฌ ์ด์์ฒด์ ์ ๋์ ์ค์ ์ฌ์ฉ๋๋ฉฐ, ์ดํ ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค์ ์ข ๋ฃ ์์ฒญ์ ๋ฐ์ผ๋ฉด PCB์ ์ ๋ณด๋ฅผ ํตํด ํ๋ก์ธ์ค๊ฐ ๊ฐ๊ณ ์๋ ์์๋ค์ ๋ชจ๋ ๋ฐํํด์ค๋ค PCB๋ ์ญ์ ๋ ๊ฒ์ ๋๋ค.
Context Switch
์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ๋ ์ฌ๋ฌ๊ฐ์ง ํ๋ก์ธ์ค๋ค์ด ์ํ๋๊ณ ์์ต๋๋ค. ์ ๊ฐ ์ค์ ์ผ๋๊ณ , ๋ ธ์ ์ ๋์์ ์์ฑํ๋ ๊ฒ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด, ํ๋์ ํ๋ก์ธ์๋ ํ ์๊ฐ์ ํ๋์ ๋์๋ฐ์ ํ์ง ๋ชปํฉ๋๋ค. ํ๋ก์ธ์๋ ์ค์ง PC์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ fetch ์ํํ๋execution ํ๋๋ฐ์ ํ์ง ๋ชปํฉ๋๋ค. ์ฆ, ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋์์ ์ํ๋ ์ ์๋ค๋ ๊ฒ์ธ๋ฐ, ์ด ๊ฒฝ์ฐ ์ค๊ณผ ๋ ธ์ ์ด ๋์์ ์คํ๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ ์ง๋ ๋ชจ๋ฆ ๋๋ค. ์ด์์ฒด์ ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ Multiprogramming์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
Multiprogramming์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์์ฃผ์ํค๊ณ ํ๋ก์ธ์๊ฐ ์์๋ก ํ๋ก์ธ์ค๋ค์ ์ ํํ๋ฉฐ ์ํํ์ฌ ๋ง์น ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์ํ๋๋ ๊ฒ๊ณผ ๊ฐ์ ํ์์ ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ธ์ค๋ค์ ์ฐ๋ฆฌ๊ฐ ๋ฏธ์ฒ ์์์ฐจ๋ฆฌ์ง๋ ๋ชปํ ์ ๋๋ก ๋น ๋ฅด๊ฒ ์ ํ๋๋ฉฐ ํ๋ก์ธ์๋ก๋ถํฐ ์ํ๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ ธ์ ๊ณผ ์ค์ด ๋์์ ์ํ๋๋ ๊ฒ๊ณผ ๊ฐ์ ๋๋์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด ๋ ํ๋ก์ธ์๊ฐ ์ํํ๋ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๊พธ๋ ๊ณผ์ ์ Context Switch๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.

https://www.crocus.co.kr/1364
Context Switch๋ฅผ ๋ ์์ธํ ์ดํดํ๊ธฐ ์ํด ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ 2๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๋ ์ํฉ์ ๊ฐ์ ํฉ๋๋ค. ํ์ฌ CPU๋ Process 0์ ์ฝ๋๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. PC์ ์ ์ฅ๋์ด์๋ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ํตํด ๋ช ๋ น์ด๋ฅผ fetch ํ๊ณ , ๋ช ๋ น์ด๋ฅผ ์ํํ ๊ฒ์ ๋๋ค. ์ด์ Process 0์ ์ด๋์ ๋ ์ํํ์ผ๋ ๋์์ฑ์ ํ์์ ์ฃผ๊ธฐ ์ํด Process 1์ ์ํํด์ผํ ๊ฒ์ ๋๋ค. CPU๊ฐ Process 1์ ์ํํ๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ ํ์ ์ฌ๋ฌ ์ด์ ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค. ๋จ์ํ ๋์์ฑ์ ์ํด P0์ด ์ผ์ ์๊ฐ ์ด์ ์ํ๋์ด์ ์ ํ์ ํ๋ ๊ฒฝ์ฐ๋ ์๊ณ , P0์ด I/O ์์ฒญ์ ํ์ฌ์ ๊ทธ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ CPU๊ฐ ํ ์ผ์ด ์์ด์ ธ์ P1๋ฅผ ๋ถ๋ฌ์์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์ ์ ์์ต๋๋ค.
์ฌ๋ฌ ์ด์ ๋ฅผ ํตํด P0์ด ์ ํ๋์ด์ผ ํ๋ ์ํฉ์์, ์ด์์ฒด์ ๋ CPU์ ์ ์ด๋ฅผ ๋บ์ด์จ ๋ค(interrupt or system call, Context Switch)๋ฅผ ์ํํฉ๋๋ค. Context Switch๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํ๊ธฐ ์ํด์๋ ๋จผ์ ์ํ์ค์ด๋ P0์ ํ์ฌ ์ํฉ์ P0์ PCB์ ์ ์ฅํด์ผ ํฉ๋๋ค(save state into PCB0). ์ด๋ค ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค๊ฐ ๋ฉ์ท๋์ง, ํ์ฌ ์ด๋ค ํจ์๋ฅผ ์ํํ๋ค๊ฐ ๋ฉ์ท๋์ง์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด์์ด์ผ ์ดํ ๋ค์ context switch๋ฅผ ํตํด P0์ ์ฐจ๋ก๊ฐ ๋์ ๋ ํ๋ก๊ทธ๋จ์ด ๋ง์ ๋์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. P0์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ค์, CPU์ ๋ ์ง์คํฐ์๋ PCB1 ์ context ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ต๋๋ค(reload state from PCB1). ์ด๋ฅผ ํตํ์ฌ CPU๋ ์์ฐ์ค๋ฝ๊ฒ P1์ ์ํํ ์ ์์ต๋๋ค.
P1์ด ๋ชจ์ข ์ ์ด์ ๋ก ์ ํ๋์ด์ผ ํ๋ค๋ฉด ๊ฐ์ ๊ณผ์ ์ด ๋ฐ๋ณต๋ฉ๋๋ค. ์ด์์ฒด์ ๊ฐ CPU๋ฅผ ์ ์ ํ ๋ค CPU์ context ์ ๋ณด๋ฅผ PCB1์ ์ ์ฅํ๊ณ , PCB0์ ์ ๋ณด๋ฅผ ๋ค์ CPU์ ์ฎ๊น์ผ๋ก์จ P0์ ๊ธฐ์กด์ ์ข ๋ฃ๋ ์ํ๋ก ๋์๊ฐ ์ํ์ ์ด์ด๊ฐ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ ํตํด ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๋ ๋ฒ๊ฐ์๊ฐ๋ฉฐ CPU๋ฅผ ์ ์ ํ๊ณ , ์ด๊ฒ์ผ๋ก ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ํ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด์์ฒด์ ๋ Context Switch๋ฅผ ํ๋ ๊ณผ์ ์์ ์ฌ๋ฌ ์์ฌ๊ฒฐ์ ์ ํ๊ธฐ๋ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ ์ํ๋ Process๋ฅผ ๋๊ฐ ๋๊ฒ ํ ๊ฒ์ธ๊ฐ, ์ ํ์ด ๋๋ ์์ ์ ์ธ์ ๋ก ํ ๊ฒ์ธ๊ฐ ๋ฑ์ด ์์ต๋๋ค.
ํ๋ก์ธ์ค ์๋ช ์ฃผ๊ธฐ์ State
ํ๋ก์ธ์ค์ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์๋ ํํ 2-model, 5-model, 7-model ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ํ๋ด๊ณค ํฉ๋๋ค. ์ฌ๊ธฐ์๋ 5-model์ ํตํด ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.

https://www.baeldung.com/cs/process-lifecycle
ํ๋ก์ธ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ์ฌ ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ถ์ฌํ๊ณ , ์ด๋ฅผ PCB์ ์ ์ฅํ์ฌ ํ์ฉํฉ๋๋ค.
Start ํน์ New ์ํ๋ ํ๋ก์ธ์ค์ ์์ฑ์ ์์ฒญ๋ฐ์ ํ์ํ ์ด๊ธฐํ๋ฅผ ํ๋ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ดํ ์ํ๋๊ธฐ ์ํ ๋ชจ๋ ์ค๋น๊ฐ ์๋ฃ๋๋ฉด ํ๋ก์ธ์ค๋ Ready ์ํ๋ก ๋ฐ๋๋๋ค.
Ready ์ํ์ ํ๋ก์ธ์ค๋ค์ CPU๋ฅผ ํ๋ํ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ ๋ ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค์ PCB๋ ํ๋ก ๊ด๋ฆฌ๋์ด, context switch์ ์ํด์ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ๊ฒ ๋ ์์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ดํ context switch์ ์ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ๊ฒ ๋๋ฉด, ํ๋ก์ธ์ค๋ Running ์ํ๊ฐ ๋ฉ๋๋ค. ์ด๋ context switch๋ฅผ ํ๋ ๊ณผ์ ์ dispatch๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
Running ์ํ์ ํ๋ก์ธ์ค๋ ํ์ฌ CPU์ ์ํด ์ํ๋๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ง์ฝ ํ๋ก์ธ์๊ฐ ํ๋๋ฐ์ ์๋ค๋ฉด ๋ชจ๋ ํ๋ก์ธ์ค ์ค Running ์ํ์ ํ๋ก์ธ์ค ์ญ์ ํ๋๋ฐ์ ์์ ๊ฒ์ ๋๋ค. Running ์ํ์ ํ๋ก์ธ์ค๋ 3๊ฐ์ง์ ์ํ๋ก ๋ฐ๋ ์ ์์ต๋๋ค.
์ฒซ๋ฒ์งธ๋ Ready ์ํ๋ก ๋์๊ฐ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ๋ ํ๋ก์ธ์ค๊ฐ CPU์ ์ํด ์ํ๋๋ ๋์ค ๋์์ฑ์ ์ํด context switch๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ์ ๋๋ค. ํ๋ก์ธ์ค๋ Ready ์ํ๋ก ๋์๊ฐ ์๊ธฐ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
๋๋ฒ์งธ๋ Waiting ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ๋ I/O Operation์ด ๋ฐ์ํ์ฌ Disk์์ ํ์ํ ๊ฐ์ ์ฝ์ด์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ๋ฅผ ํฌํจํฉ๋๋ค. ์ด ๋ ํ๋ก์ธ์ค๋ I/O Operation์ด ๋๋๊ธฐ ์ ๊น์ง๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ ํ์๊ฐ ์์ผ๋ฏ๋ก Ready๊ฐ ์๋ Waiting ์ํ๋ก ๋ฐ๋๋๋ค. ์ดํ I/O Operation์ด ๋๋๊ณ ํ๋ก์ธ์ค๊ฐ ๋ค์ ์ํํ ์ ์๋ ํ๊ฒฝ์ด ๋๋ค๋ฉด Ready ์ํ๋ก ๋ณ๊ฒฝ๋๊ณ , CPU๋ฅผ ์ ์ ํ ์ ์์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ธ๋ฒ์งธ๋ Termination ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์ํํ๊ณ ์ข ๋ฃ๋๋ ์ํฉ์ ๋๋ค. Termination ์ํ๊ฐ ๋ ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ์ ์ํด ์ฌ์ฉํ๋ ๋ชจ๋ ์์์ ๋ฐ๋ฉํ๊ณ ์ข ๋ฃ๋ฉ๋๋ค. ๋ํ ์ด์์ฒด์ ๋ ์๊ธฐ์น ๋ชปํ ์ํฉ์ด ๋ฐ์ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํด์ผํ ๋ Termination ์ํ๋ก ๋ฐ๊พธ๊ธฐ๋ ํฉ๋๋ค.
