๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ์™€ ์ •๋ณด๊ธฐ์ˆ ์˜ ์›๋ฆฌ] 5์žฅ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

by moon101 2023. 3. 10.

1. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

  • ํ”„๋กœ์„ธ์Šค(process)๋ž€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ(program in execution)์„ ๋งํ•œ๋‹ค. 
  • ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ(context)์ด๋ž€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์–ด๋–ค ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ๊ทœ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 
    • ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ : CPU์˜ ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ’๊ณผ ๊ฐ์ข… ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๋งํ•œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„(์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ)
    • ์ปค๋„์ƒ์˜ ๋ฌธ๋งฅ : PCB์™€ ์ปค๋„์Šคํƒ

 

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

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ 3๊ฐ€์ง€

  • ์‹คํ–‰(running) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋ณด์œ ํ•˜๊ณ  ๊ธฐ๊ณ„์–ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
  • ์ค€๋น„(ready) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋งŒ ๋ณด์œ ํ•˜๋ฉด ๋‹น์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•œ ์ƒํƒœ
  • ๋ด‰์‡„(blocked, wait, sleep) : CPU๋ฅผ ํ• ๋‹น๋ฐ›๋”๋ผ๋„ ๋‹น์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

๋ฌธ๋งฅ๊ตํ™˜(context switch)

  • ์‹คํ–‰์‹œํ‚ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์›๋ž˜ ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ์ €์žฅํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •

CPU ๋””์ŠคํŒจ์น˜(dispatch)

  • ๋ฌธ๋งฅ๊ตํ™˜์ด ์ผ์–ด๋‚  ๋•Œ ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์—์„œ CPU๋ฅผ ํ• ๋‹น๋ฐ›์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•œ ํ›„ ์‹ค์ œ๋กœ CPU์˜ ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ๋ฐ›๋Š” ๊ณผ์ •

 

3. ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก

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

  • ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์œ ์ง€ํ•˜๋Š” ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ์ปค๋„ ๋‚ด์˜ ์ž๋ฃŒ๊ตฌ์กฐ
    • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ : CPU๋ฅผ ํ• ๋‹นํ•ด๋„ ๋˜๋Š”์ง€ ๊ฒฐ์ •์— ํ•„์š”ํ•˜๋‹ค
    • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ์˜ ๊ฐ’ : ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค
    • CPU ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’ : CPU ์—ฐ์‚ฐ์„ ์œ„ํ•ด ํ˜„์‹œ์ ์— ๋ ˆ์ง€์Šคํ„ฐ์— ์–ด๋–ค ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค
    • CPU ์Šค์ผ€์ฅด๋ง ์ •๋ณด : ๊ฐ๊ฐ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ CPU ์Šค์ผ€์ฅด๋ง๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด์ด๋‹ค. 
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด : ๊ฐ๊ฐ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ CPU ์Šค์ผ€์ฅด๋ง๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด์ด๋‹ค. 
    • ์ž์› ์‚ฌ์šฉ ์ •๋ณด : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์› ์‚ฌ์šฉ ์š”๊ธˆ์„ ๊ณ„์‚ฐํ•ด ์ฒญ๊ตฌํ•˜๋Š” ๋“ฑ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 
    • ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜คํ”ˆํ•œ ํŒŒ์ผ ์ •๋ณด ๋“ฑ ํ”„๋กœ์„ธ์Šค์˜ ์ž…์ถœ๋ ฅ ๊ด€๋ จ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

4. ๋ฌธ๋งฅ๊ตํ™˜

  • ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋กœ CPU์˜ ์ œ์–ด๊ถŒ์ด ์ด์–‘๋˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. 
  • ๋ฌธ๋งฅ๊ตํ™˜์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์€ ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ ๋ณผ ๋•Œ ์ผ์ข…์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฌธ๋งฅ๊ตํ™˜ ์ค‘์— ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์ด ์‹ค์ œ ์‹œ์Šคํ…œ์—๊ฒŒ ์œ ์šฉํ•œ ์ž‘์—…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

5. ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ค„๋งํ•˜๊ธฐ ์œ„ํ•œ ํ

  • ์ค€๋น„ ํ(ready queue) : ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ค„ ์„ธ์šฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ค€๋น„ ํ์˜ ์ œ์ผ ์•ž์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์— ์ œ์ผ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค. 
  • ์žฅ์น˜ ํ(device queue) : ํŠน์ • ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ค„ ์„ธ์šฐ๊ธฐ ์œ„ํ•ด ์ž์›๋ณ„๋กœ ์žฅ์น˜ ํ๋ฅผ ๋‘”๋‹ค. 
  • ์ž‘์—… ํ(job queue) : ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ์ปค๋„์˜ ์ฃผ์†Œ ์˜์—ญ ์ค‘ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ๋‹ค์–‘ํ•œ ํ๋ฅผ ๋‘์–ด ์ˆ˜ํ–‰ํ•œ๋‹ค. 

 

6. ์Šค์ผ€์ฅด๋Ÿฌ

์Šค์ผ€์ฅด๋Ÿฌ : ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์šด์˜์ฒด์ œ ์ปค๋„์˜ ์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค. 

  • ์žฅ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ = ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ
    • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ ํ์— ์ง„์ž…์‹œํ‚ฌ์ง€ ๊ฒฐ์ •
    • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฌธ์ œ์— ๊ด€์—ฌํ•œ๋‹ค. 
    • ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•œ๋‹ค. 
  • ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ = CPU ์Šค์ผ€์ค„๋Ÿฌ
    • ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์Œ๋ฒˆ์— ์‹คํ–‰ ์ƒํƒœ(CPU ํ• ๋‹น)๋กœ ๋งŒ๋“ค ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. 
  • ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ
    • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•œ๋‹ค. 
    • ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ์Šค์ผ€์ค„๋Ÿฌ์ด๋‹ค. 

 

7. ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ

์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ „๋ถ€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋œ ํ›„ ์ตœ์ดˆ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€๋งŒ ๊ทธ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์ œ ์ƒ์„ฑํ•œ๋‹ค. 

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ž์‹ ๋งŒ์˜ ๋…์ž์ ์ธ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ–๋Š”๋‹ค. 
  • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ ์ ˆ์ฐจ (์œ ๋‹‰์Šค)
    • 1. fork() : ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ. ํ”„๋กœ์„ธ์Šค ID๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •๋ณด(์šด์˜์ฒด์ œ ์ปค๋„ ๋‚ด์˜ ์ •๋ณด์™€ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์ •๋ณด)๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•œ๋‹ค. 
    • 2. exec() : ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ฎ์–ด ์”Œ์šด๋‹ค. 
  • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ๊ทธ ์•„๋ž˜์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ž์‹ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋จผ์ € ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค. 

ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ

  • 1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์šด์˜์ฒด์ œ์—๊ฒŒ ์ด๋ฅผ ์•Œ๋ ค ์ด๋ฃจ์–ด์ง€๋Š” ์ž๋ฐœ์  ์ข…๋ฃŒ
    • exit()
  • 2. ๋น„์ž๋ฐœ์  ์ข…๋ฃŒ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๊ฒƒ
    • abort()

 

8. ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ˜‘๋ ฅ

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž ์ž์‹ ๋งŒ์˜ ๋…๋ฆฝ์ ์ธ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์ˆ˜ํ–‰๋˜๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ˜‘๋ ฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜

  • IPC(inter-Process Communication) : ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ์•ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฐœ์ƒํ•˜๋Š” ํ†ต์‹ 
    • ์˜์‚ฌ์†Œํ†ต ๊ธฐ๋Šฅ๊ณผ ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 
    • ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(message passing) ๋ฐฉ์‹(๊ณต์œ  ๋ฐ์ดํ„ฐ X)๊ณผ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ(shared memory) ๋ฐฉ์‹(๊ณต์œ  ๋ฐ์ดํ„ฐ O)์ด ์žˆ๋‹ค. 

๋Œ“๊ธ€