Skip to content

Latest commit

ย 

History

History
148 lines (49 loc) ยท 4.56 KB

File metadata and controls

148 lines (49 loc) ยท 4.56 KB

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

ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด์™€ ์ •์  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋ฉด ์ƒ๋ช…์ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

=> ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ

  • ํ”„๋กœ๊ทธ๋žจ

    ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜(ํ•˜๋“œ๋””์Šคํฌ, SSD)์— ์กด์žฌํ•˜๋ฉฐ, ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ช…๋ น์–ด(์ฝ”๋“œ)์™€ ์ •์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ

์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์„๊นŒ?

ํ•˜๋‚˜์˜ CPU(ํ”„๋กœ์„ธ์„œ)๋Š” ํ•œ ์ˆœ๊ฐ„์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์šด์˜์ฒด์ œ๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ CPU๊ฐ€ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„๊นŒ?

ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก(PCB, Process Control Block) ๋˜๋Š” **ํ”„๋กœ์„ธ์Šค ๊ธฐ์ˆ ์ž(process descriptor)**๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ๋จ. PID, ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด, ์ƒํƒœ, ์ˆœ์œ„ ๋“ฑ์„ ์ €์žฅํ•˜๊ณ  ์žˆ์Œ.

  • PID(Process IDentification)

    ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€์—ฌ๋œ ํ”„๋กœ์„ธ์Šค ์‹๋ณ„๋ฒˆํ˜ธ

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

    ์‹คํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ๋Œ€๊ธฐ ์ค‘์ธ์ง€

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ

    CPU๊ฐ€ ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰ํ•  ๊ธฐ๊ณ„์–ด๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’

  • ์Šค์ผ€์ค„๋ง ์šฐ์„ ์ˆœ์œ„

    ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์—์„œ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ

  • ๊ถŒํ•œ

    ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์„ ๊ฒฐ์ •ํ•˜๋Š” ์ •๋ณด

  • ํ”„๋กœ์„ธ์Šค์˜ ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค

    ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์ œํ•ด์„œ ์ƒ์„ฑ๋จ. ์ด ๊ณ„์ธต๊ด€๊ณ„๋Š” ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•จ. (์ตœ์ดˆ๋กœ ์ƒ์„ฑ๋˜๋Š” init ํ”„๋กœ์„ธ์Šค ์ œ์™ธ)

  • ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

  • ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›๋“ค์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

  • ์‹คํ–‰ ๋ฌธ๋งฅ

    ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์„œ์˜ ๋ ˆ์ง€์Šคํ„ฐ ๋‚ด์šฉ. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ต์ฒด๋  ๋•Œ ์—ฐ์†์ ์œผ๋กœ ์‹คํ–‰๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ–๊ณ  ์žˆ์Œ.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

ํ”„๋กœ์„ธ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋ ๊นŒ?

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์‹คํ–‰(running), ์ค€๋น„(ready), ๋ธ”๋ก(block) ์ƒํƒœ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ƒํƒœ์ „์ด(state trasition) ๋ฅผ ํ†ตํ•ด ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•จ.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ค€๋น„๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋จ.

  2. ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ์„ธ์„œ(CPU)๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ• ๋‹น ๋ฐ›์Œ.

  3. ์ค€๋น„ ์ƒํƒœ์—์„œ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ƒํƒœ์ „์ด๋จ(๋””์ŠคํŒจ์นญ(dispatching))

  4. ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ƒํƒœ์—์„œ CPU๋ฅผ ์ด์šฉํ•ด ์—ฐ์‚ฐ ํ›„ ์ž๋ฐœ์ ์œผ๋กœ ๋ฐ˜๋‚ฉํ•˜๊ณ  ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜์œผ๋ฉด ๋‹ค์‹œ ์ค€๋น„์ƒํƒœ ์— ๋“ค์–ด๊ฐ.

  5. ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ฉด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ž์‹ ์„ ๋ธ”๋ก ํ•จ.

ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

์šด์˜์ฒด์ œ๋Š” ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ์ธํ„ฐ๋ŸฝํŒ… ํด๋ก ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒ์‹œ์ผœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋™์•ˆ ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ. ์šด์˜์ฒด์ œ๋Š” ๊ฐ•์ œ๋กœ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ CPU ์ œ์–ด๊ถŒ์„ ๋บ๊ณ  ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ๋กœ ์ƒํƒœ์ „์ด๋จ.

๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)์ด๋ž€?

=> CPU๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ์š”์ฒญ์— ์˜ํ•ด ํ˜„์žฌ ์ฒ˜๋ฆฌ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ PCB(๋ฌธ๋งฅ)์„ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์šฐ์„ ์ˆœ์œ„์˜ PCB๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ

CPU๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ IO์ธํ„ฐ๋ŸฝํŠธ๋‚˜ ์‹œ์Šคํ…œ ์ฝœ์— ์˜ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๋ฉฐ ์ฒ˜๋ฆฌํ•จ.

๋ฌธ๋งฅ๊ตํ™˜์˜ ์ ˆ์ฐจ

  1. ์ธํ„ฐ๋ŸฝํŠธ/์‹œ์Šคํ…œ ํ˜ธ์ถœ : ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
  2. ์ปค๋„ ๋ชจ๋“œ ์ „ํ™˜ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜
  3. ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ PCB ์ €์žฅ : ๊ธฐ์กด ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ PCB์— ์ €์žฅ
  4. ๋‹ค์Œ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ๋กœ๋“œ : PCB์— ์žˆ๋Š” ๋‹ค์Œ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ •๋ณด ๋ณต๊ตฌ
  5. ์‚ฌ์šฉ์ž ๋ชจ๋“œ ์ „ํ™˜ : ์ปค๋„ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
  • dispatch, timeout ๋“ฑ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ์ „์ด๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•จ

์‹œ๋ถ„ํ•  ์ฒ˜๋ฆฌ(time-sharing)๋ž€?

์‹œ๊ฐ„์„ ์ชผ๊ฐœ์–ด ํ•˜๋‚˜์˜ ์ฒ˜๋ฆฌ ์žฅ์น˜์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ