๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

3-1 ํ”„๋กœ์„ธ์Šค ๊ฐœ์š”

by Vada Kim 2021. 8. 5.
728x90
๋ฐ˜์‘ํ˜•

ํ”„๋กœ์„ธ์Šค๋ž€?

ํ”„๋กœ๊ทธ๋žจ = ์ •์ ์ธ ์ƒํƒœ, ์ €์žฅ์žฅ์น˜์— ์œ„์น˜

ํ”„๋กœ์„ธ์Šค = ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž‘์—… ๋‹จ์œ„(Task) = ๋™์ ์ธ ์ƒํƒœ, ์‹คํ–‰์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜

์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋œ๋‹ค.

<ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๊ณผ์ •>

  1. ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋œ๋‹ค.
  2. ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)์„ ์ƒ์„ฑํ•œ๋‹ค.
    : PCB๊ฐ€ ์žˆ์–ด์•ผ ํ”„๋กœ๊ทธ๋žจ์„ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์šด์˜์ฒด์ œ ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ์— ๋ถ€ํŒ…๊ณผ์ •์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ํ˜•ํƒœ๋กœ ์‹คํ–‰๋œ๋‹ค. ๋•Œ๋ฌธ์— ์ปดํ“จํ„ฐ์—์„  ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ํ”„๋กœ์„ธ์Šค(kerner process), ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค(user process)๊ฐ€ ์žˆ๋‹ค.

 

 

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

์ผ๊ด„ ์ž‘์—… ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋ณ€ํ™”: ์ƒ์„ฑ(create) >> ์‹คํ–‰(run) >> ์™„๋ฃŒ(terminate)

์˜ค๋Š˜ ๋‚  ์‚ฌ์šฉ๋˜๋Š” ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ™œ์„ฑ ์ƒํƒœ 

  • ์ƒ์„ฑ(create): ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰ ์ค€๋น„๋ฅผ ์™„๋ฃŒํ•œ ์ƒํƒœ๋กœ, ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์ด ์ƒ์„ฑ๋œ๋‹ค.
  • ์ค€๋น„(ready): ์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–ป์„ ๋•Œ(๋ณธ์ธ์˜ ์ž‘์—… ์ฐจ๋ก€)๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ์ •ํ•˜์—ฌ ์‹คํ–‰์ƒํƒœ๋กœ ๋ฐ”๊พธ๋Š”๋ฐ, ์ด ์ž‘์—…์„ ๋””์ŠคํŒจ์น˜(dispatch)๋ผ๊ณ  ํ•œ๋‹ค.
  • ์‹คํ–‰(running, execute): CPU๋ฅผ ์–ป์–ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค์— ๋ฐฐ๋‹น๋œ ์ž‘์—… ์‹œ๊ฐ„์„ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ๋˜๋Š” ํƒ€์ž„ ํ€ธํ…€์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ์‹œ๊ฐ„ ์•ˆ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํƒ€์ž„์•„์›ƒ(time out, ์ธํ„ฐ๋ŸฝํŠธ) ๋ช…๋ น์œผ๋กœ ์ค€๋น„์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์˜ฌ ์ˆœ์„œ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด๋•Œ ํƒ€์ž„์•„์›ƒ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํด๋ก์ด CPU์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ๋Œ€๊ธฐ(blocking, wait): ์‹คํ–‰ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•˜๋ฉด ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ์— ์ง„์ž…ํ•ด ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ์ž…์ถœ๋ ฅ์žฅ์น˜๋ณ„๋กœ ๋งˆ๋ จ๋œ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ž…์ถœ๋ ฅ ์™„๋ฃŒ ํ›„์—” wakeup ๋ช…๋ น์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ์ƒํƒœ๋กœ ์ด๋™ํ•œ๋‹ค.
  • ์™„๋ฃŒ(terminate): ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ๋งˆ์นœ ์ƒํƒœ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค ์ •์ƒ ์ข…๋ฃŒ์ด๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์ด ํ๊ธฐ๋œ๋‹ค. exit() ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ๋‹ค.
์ฝ”์–ด ๋คํ”„(core dump): ์˜ค๋ฅ˜๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ(abort)๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ, ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ๊ฐ•์ œ ์ข…๋ฃŒ ์ง์ „์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ €์žฅ์žฅ์น˜๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ.

 

 

์ถœ์ฒ˜: <์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ>, ํ•œ๋น› ์•„์นด๋ฐ๋ฏธ

728x90
๋ฐ˜์‘ํ˜•