๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋žจ(Program)๊ณผ ํ”„๋กœ์„ธ์Šค(Process), ๋‘ ๋‹จ์–ด์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

์ด๋ฒˆ ์ฃผ์ œ๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


โ€ป ๋ณธ๋ฌธ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด CPU์— ๊ด€ํ•œ ๊ธ€์„ ์ฝ์œผ์‹œ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. (๋งํฌ ํด๋ฆญ)


1. ํ”„๋กœ์„ธ์Šค(Process)?

ํ”„๋กœ๊ทธ๋žจ(Program)์€ HDD์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ช…๋ น์ฝ”๋“œ๋“ค์˜ ์ง‘ํ•ฉ(๋ฌถ์Œ)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ํ”„๋กœ์„ธ์Šค(Process) ๋˜๋Š” ์ž‘์—…(Task)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜๋ฉด '์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ'์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

< ์œˆ๋„์šฐ '์ž‘์—… ๊ด€๋ฆฌ์ž'์— ํ‘œ์‹œ๋˜๋Š” ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก >

์œˆ๋„์šฐ์˜ '์ž‘์—… ๊ด€๋ฆฌ์ž'๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋ชฉ๋ก๊ณผ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์•„์ด๋””(PID)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๊ฒ ์ฃ ?

์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋Š” PCB(Process Control Block)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ๋˜๋ฉฐ, ์ด PCB๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

PCB์—๋Š” ํ”„๋กœ์„ธ์Šค ID, ๋ถ€๋ชจ PID(Process ID), ํ”„๋กœ์„ธ์Šค ์ƒํƒœ, ํ”„๋กœ์„ธ์Šค ๊ถŒํ•œ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
(์ž์„ธํ•œ ๋‚ด์šฉ์€ 'ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก' ๋˜๋Š” PCB', 'Process Control Block'์„ ๊ฒ€์ƒ‰ํ•ด ๋ณด์„ธ์š”.)


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

ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

< ํ”„๋กœ์„ธ์Šค ๋‹ค์ด์–ด๊ทธ๋žจ >


โ‘  ์ƒ์„ฑ(New, Create) :

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

โ‘ก ์ค€๋น„(Ready) :

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ ์ค€๋น„ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์‹ฑ๊ธ€ ์ฝ”์–ด CPU์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ(Running)๋ผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ค€๋น„ ์ƒํƒœ(Ready)์— ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค์ผ€์ฅด๋Ÿฌ๊ฐ€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒ(Dispatch)ํ•˜์—ฌ ๋™์ž‘(Running)์‹œํ‚ต๋‹ˆ๋‹ค.

โ‘ข ์‹คํ–‰(Running) :

์Šค์ผ€์ฅด๋Ÿฌ์— ์˜ํ•ด ์„ ํƒ(Dispatch)๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์‹ฑ๊ธ€ ์ฝ”์–ด 1์Šค๋ ˆ๋“œ CPU๋ผ๋ฉด ์˜ค์ง ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋™์ž‘ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋“€์–ผ ์ฝ”์–ด 4์Šค๋ ˆ๋“œ๋ผ๋ฉด 4๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋˜ ์ค‘์— ์™ธ๋ถ€ ์‹ ํ˜ธ์ธ ์ธํ„ฐ๋ŸฝํŠธ(Interrupt)๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ต์ฒด(Context Switching)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

โ‘ฃ ๋Œ€๊ธฐ(Waiting) :

์™ธ๋ถ€ I/O ์ค‘ ํ•˜๋‚˜์ธ HDD์˜ ํŒŒ์ผ์„ ์ ‘๊ทผํ•˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ, HDD๋Š” CPU๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— HDD์— Event๋ฅผ ์ฃผ๊ณ  ์‹ ํ˜ธ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CPU๋Š” ํšจ์œจ์ ์œผ๋กœ ์šด์˜๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ์™ธ๋ถ€ I/O ์ ‘๊ทผ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ง€์—ฐ ์‹œ๊ฐ„ ๋•Œ๋ฌธ์— ๋งˆ๋ƒฅ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด CPU ์ž‘์—… ํšจ์œจ์ด ๋–จ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์™„๋ฃŒ Event ์‹ ํ˜ธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ(Waiting)์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋ฉฐ ์‹คํ–‰ ์ƒํƒœ(Running)๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์–‘๋ณดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ Evnet๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ(Ready)๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

โ‘ค ์ข…๋ฃŒ(Terminated) :

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

'Computer > ETC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

PCIe (PCI Express) Bus  (0) 2018.11.12
PCI (Peripheral Component Interconnect) Bus  (0) 2018.11.01
CPU ์ด์•ผ๊ธฐ  (0) 2018.09.28