๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/์šด์˜์ฒด์ œ

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

by ๐Ÿณ Laboon 2024. 4. 21.
PCB๋ž€?

 

ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์€ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋‹จ์œ„์ด๋‹ค.

PCB ํ•˜๋‚˜์—๋Š” ํ”„๋กœ์„ธ์Šค ์ •๋ณด(PID, PPID, Process Status, ... )๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ•ด๋‹น ๋‚ด์šฉ์€ ์™ธ์šฐ๊ณ  ์žˆ์„ ํ•„์š”๋Š” ์—†๋‹ค. ์‹ค์ œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋  ๋•Œ, ์ด ์ •๋ณด๋ฅผ ์ปจํŠธ๋กคํ•˜๊ฒŒ ๋œ๋‹ค.

 

PCB๊ฐ€ ์™œ ํ•„์š”ํ• ๊นŒ?

 

๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ค‘๊ฐ„์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ CPU๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž ์‹œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐœ์ƒํ•ด์•ผํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” CPU Idle Time์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

์ด ๋•Œ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  interrupt๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๊ธฐ์กด์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. 

์—ฌ๊ธฐ์„œ ๊ธฐ์กด์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ(Context Switching)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ปจํ…์ŠคํŠธ๋Š” ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๋‚ด์šฉ์ด๋‹ค. ์ ์žฌ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ, ์ฒ˜๋ฆฌ์ค‘์ธ CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’(ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ) ๋“ฑ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ ์žˆ๋‹ค.

 

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

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ๊ณผ ๊ณผ์ •์„ ์•Œ๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

1. ์šฐ๋ฆฌ๊ฐ€ exe ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•ด์„œ ๋ชฉ์  ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋  ๋•Œ, ์ƒ์„ฑ ์ƒํƒœ(New)๋ผ๊ณ  ํ•œ๋‹ค.

2. ๊ธฐ์กด์˜ ์ฒ˜๋ฆฌ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์„ํ…Œ๊ณ  ์ถ”๊ฐ€๋กœ ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ Ready Queue์— ์‚ฝ์ž…ํ•œ๋‹ค.์ด ๋•Œ, PCB ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด Ready Queue์— ์‚ฝ์ž…๋˜๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ(Ready)๋ผ๊ณ  ํ•œ๋‹ค.

3. ์ด์ „ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚ฌ๊ฑฐ๋‚˜ Time Slice์— ์˜ํ•ด Ready ์ƒํƒœ์ธ PCB๋ฅผ ๊บผ๋‚ด์–ด CPU์—๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ๋งก๊ธด๋‹ค. ์ด ๊ณผ์ •์„ ์‹คํ–‰ ์ƒํƒœ (Running) ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๋•Œ, ์ฒ˜๋ฆฌ ์ค‘์ธ PCB์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ๋‹ค๋˜๋ฉด ํ˜„์žฌ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•œ CPU ์ƒํƒœ (์ปจํ…์ŠคํŠธ)๋ฅผ ๋‹ค์‹œ PCB๋กœ ์ €์žฅํ•˜์—ฌ Ready ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ ๋’ค ReadyQueue์— ์‚ฝ์ž…ํ•œ๋‹ค.

4. 3๋ฒˆ ๊ณผ์ • ์ค‘ Interrupt๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋Š” ๋ธ”๋ก ์ƒํƒœ(Blocked/Wait)๊ฐ€ ๋œ๋‹ค. Interrupt ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œ Ready ์ƒํƒœ๋กœ ๋ฐ”๋€Œ์–ด 2๋ฒˆ ๊ณผ์ •์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”๋ฐ ์ •ํ™•ํžˆ๋Š” System Call๊ณผ Interrupt๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ ์žˆ๋‹ค.

5. ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ๋งŒ์•ฝ, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ข€๋น„ ์ƒํ„”(Terminated/Zombie)๊ฐ€ ๋œ๋‹ค. ์ด ๋•Œ, ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์›์€ ๋ชจ๋‘ ๋ฐ˜๋‚ฉํ•˜๊ณ  PCB์— ์ข…๋ฃŒ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์žˆ๋‹ค.

6. ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ Zombie ์ƒํƒœ์ธ ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ์ฝ์—ˆ์„ ๋•Œ, ์ข…๋ฃŒ ์ƒํƒœ(Terminated/Out)๊ฐ€ ๋œ๋‹ค. ์ด ๋•Œ, PCB๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ œ๊ฑฐ ๋˜์—ˆ๋‹ค.

 

์ฆ‰, PCB๋Š” ์ƒ์„ฑ ๋‹น์‹œ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ 3๋ฒˆ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”

 

PCB ์ •๋ณด๋Š” ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ windows์˜ ๊ฒฝ์šฐ cmd์—์„œ tasklist๋‚˜ ์ž‘์—… ๊ด€๋ฆฌ์ž์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

cmd - tasklist
์ž‘์—… ๊ด€๋ฆฌ์ž - ์ž์„ธํžˆ