[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š” / ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ
์ปดํ“จํ„ฐ๊ณตํ•™

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š” / ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ


ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š” / ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

1. ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…

(1) ํ”„๋กœ๊ทธ๋žจ
- ์ €์žฅ์žฅ์น˜์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ •์ ์ธ ์ƒํƒœ
- ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ์ž‘์—…์„ ํ• ์ง€ ์ ˆ์ฐจ๋ฅผ ์ ์–ด๋†“์€ ๊ฒƒ

 

(2) ํ”„๋กœ์„ธ์Šค
- ์‹คํ–‰์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋™์ ์ธ ์ƒํƒœ
- ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์„ฑ๋œ ์ž‘์—… ์ ˆ์ฐจ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰์— ์˜ฎ๊ธฐ๋Š” ๊ฒƒ

- ํ”„๋กœ์„ธ์Šค๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž‘์—… ๋‹จ์œ„๋กœ ํƒœ์Šคํฌ(task)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

- ๋‹ค์–‘ํ•œ ์ •์˜๊ฐ€ ์กด์žฌ ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ •์˜๋Š” "์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ"

  • ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์šด์˜์ฒด์ œ์˜ ์ œ์–ด๋ฅผ ๋ฐ›๋Š” ์ƒํƒœ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„)์ด ์กด์žฌํ•จ์„ ์˜๋ฏธ
  • ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ PCB(Process Control Block, ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก)์„ ์–ป์—ˆ๋‹ค๋Š” ๋œป

 

2. ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ์˜ ์ „ํ™˜

- ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB; Process Control Block)

  • ์šด์˜์ฒด์ œ๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋œปํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๊ตฌ๋ถ„์ž : ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ตฌ๋ถ„์ž
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜ ์ •๋ณด
  • ๊ฐ์ข… ์ค‘๊ฐ„๊ฐ’ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ์ค‘๊ฐ„ ๊ฐ’
  • ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ์‹œ ํ•ด๋‹นํ•˜๋Š” PCB๋Š” ํ๊ธฐ๋œ๋‹ค.

 

3. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

 

3.1 ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

โ–  ์ค€๋น„ ์ƒํƒœ - Ready

- ์‹คํ–‰ ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๊ธฐ ์ˆœ์„œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

- PCB๋Š” ์ค€๋น„ ํ(queue)์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ๊ด€๋ฆฌ๋จ

- CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ dispatch(PID)๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ์ƒํƒœ์—์„œ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ฐ”๋€Œ์–ด ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง

 

โ–  ๋Œ€๊ธฐ ์ƒํƒœ - Block

- ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•˜๋ฉด ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ 

- ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ณ„๋กœ ๋งˆ๋ จ๋œ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ(interrupt)๊ฐ€ ๋ฐœ์ƒ

- wakeup(PID) : ๋Œ€๊ธฐ ์ƒํƒœ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๋กœ ๊นจ์–ด๋‚  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๋Š” ๊ฒƒ

                           ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์ด ์ค€๋น„์ƒํƒœ๋กœ ์ด๋™ํ•จ

 

โ–  ์‹คํ–‰ ์ƒํƒœ - Running

- ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๋Š” ์ƒํƒœ

- ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค(ํ˜น์€ ํ€€ํ…€) ๋™์•ˆ๋งŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ

- ํ• ๋‹น๋œ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด timeout(PID)๊ฐ€ ์‹คํ–‰๋˜์–ด ์ค€๋น„ ์ƒํƒœ๋กœ ์˜ฎ๊น€

- ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด exit(PID)๊ฐ€ ์‹คํ–‰๋˜์–ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ ์ข…๋ฃŒ

- ์ฝ”์–ด ๋คํ”„(core dump) : ์˜ค๋ฅ˜๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฉด(๊ฐ•์ œ ์ข…๋ฃŒ๋˜๋ฉด) ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด ์ข…๋ฃŒ ์ง์ „์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ €์žฅ์žฅ์น˜๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธ 

- ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•˜๋ฉด CPU๋Š” ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•˜๊ณ  block(PID)๋ฅผ ์‹คํ–‰

- block(PID)๋Š” ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์–ด์„œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์˜ฎ๊ธฐ๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ์ƒํƒœ๋กœ ๊ฐ€์ ธ์˜ด

 

3.2 ํ”„๋กœ์„ธ์Šค์˜ ์ „์ด 

- ์šด์˜ ์ฒด์ œ๋Š” ์ค€๋น„ ์ƒํƒœ์™€ ๋Œ€๊ธฐ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์— ๊ฐ๊ฐ ์ค€๋น„ ๋ฆฌ์ŠคํŠธ(ready list)์™€ ๋Œ€๊ธฐ ๋ฆฌ์ŠคํŠธ(block list)๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ด๋“ค์„ ๊ด€๋ฆฌํ•จ

 

โ–  ๋””์ŠคํŒจ์น˜(Dispatch) : ์ค€๋น„ ์ƒํƒœ → ์‹คํ–‰ ์ƒํƒœ

- ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ์ •ํ•˜์—ฌ CPU๋ฅผ ํ• ๋‹นํ•จ

 

โ–  ํ• ๋‹น ์‹œ๊ฐ„ ์ดˆ๊ณผ(time out) : ์‹คํ–‰ ์ƒํƒœ → ์ค€๋น„ ์ƒํƒœ

- CPU์˜ ์ง€์ •๋œ ํ• ๋‹น ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ์ค€๋น„ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐ

 

โ–  ๋Œ€๊ธฐ(Block) : ์‹คํ–‰ ์ƒํƒœ → ๋Œ€๊ธฐ ์ƒํƒœ

- ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ๋ช…๋ น์„ ๋งŒ๋‚˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ž…์ถœ๋ ฅ ์ „์šฉ ํ”„๋กœ์„ธ์„œ์—๊ฒŒ CPU๋ฅผ ์–‘๋„ํ•˜๊ณ  ์ž์‹ ์€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜

 

โ–  ๊นจ์›€(Wake up) : ๋Œ€๊ธฐ ์ƒํƒœ → ์ค€๋น„ ์ƒํƒœ

- ์ž…์ถœ๋ ฅ ์™„๋ฃŒ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋จ

 

โ–  ์™„๋ฃŒ ์ƒํƒœ 

- ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ์ƒํƒœ๋กœ ์‚ฌ์šฉํ•˜๋˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ฆฌ๋จ

- ์ •์ƒ ์ข…๋ฃŒ์ธ exit์™€ ๋น„์ •์ƒ ์ข…๋ฃŒ์ธ abort๋ฅผ ๋ชจ๋‘ ํฌํ•จ 

 

โ–  ๋ณด๋ฅ˜ ์ƒํƒœ (Suspended)

- ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž ์‹œ ์ซ“๊ฒจ๋‚œ ์ƒํƒœ

[ ๋ณด๋ฅ˜ ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ]

  • ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฝ‰ ์ฐจ์„œ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ–์œผ๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ
  • ํ”„๋กœ๊ทธ๋žจ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด ์‹คํ–‰์„ ๋ฏธ๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์•…์˜์ ์ธ ๊ณต๊ฒฉ(๋ฐ”์ด๋Ÿฌ์Šค)์„ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ
  • ๋งค์šฐ ๊ธด ์ฃผ๊ธฐ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ํ”„๋กœ์„ธ์Šค์—ฌ์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ–์œผ๋กœ ์ซ“์•„๋‚ด๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
  • ์ž…์ถœ๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž…์ถœ๋ ฅ์ด ๊ณ„์† ์ง€์—ฐ๋˜๋Š” ๊ฒฝ์šฐ