Process Management 
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋•Œ, CPU๊ฐ€ CPU ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ
( ์ด๋•Œ CPU๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ˆ„๊ตฐ์ง€ ์•Œ์•„์•ผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด Process Metadata์ด๋‹ค. )

 

[ Process Metadata ]

  • Process ID : PID(Process Identification Number)๋ผ๊ณ ๋„ ํ•œ๋‹ค. // ํ”„๋กœ์„ธ์Šค ๊ณ ์œ  ์‹๋ณ„๋ฒˆํ˜ธ
  • Process State : ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ(์ค€๋น„, ์‹คํ–‰, ๋Œ€๊ธฐ)๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //ํ”„๋กœ์„ธ์Šค ์ƒํƒœ
  • Process Priority : ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„ ๋“ฑ๊ณผ ๊ฐ™์€ ์Šค์ผ€์ค„๋ง ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //์Šค์ผ€์ค„๋ง ์ •๋ณด
  • CPU Registers : ํ”„๋กœ์„ธ์Šค์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ CPU ๋‚ด ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ, ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ, ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ ๋“ฑ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • Owner : CPU ์‚ฌ์šฉ์‹œ๊ฐ„์˜ ์ •๋ณด(Quantum)๊ณผ ๊ฐ์ข… ์Šค์ผ€์ค„๋Ÿฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //๊ณ„์ • ์ •๋ณด
  • ๊ธฐ์–ต์žฅ์น˜ ๊ด€๋ฆฌ ์ •๋ณด : ํ”„๋กœ๊ทธ๋žจ์ด ์ ์žฌ๋  ๊ธฐ์–ต ์žฅ์น˜์˜ ์ƒํ•œ์น˜, ํ•˜ํ•œ์น˜, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰ ์‹œ ํ•„์š”ํ•œ ์ฃผ๋ณ€ ์žฅ์น˜, ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ : ๋‹ค์Œ์— ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ต์‹œํ‚จ๋‹ค. //๊ณ„์ˆ˜๊ธฐ

์ด๋Ÿฌํ•œ ์ •๋ณด๋“ค์ด ๋‹ด๊ธด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด PCB๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋œ๋‹ค!

 


PCB (Process Controll Block)

ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด ๋†“๋Š” ๊ณณ
ํ•˜๋‚˜์˜ PCB ์•ˆ์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ -> ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ -> ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ -> ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์ด PCB์— ์ €์žฅ

 

 

PCB ์ƒ์„ธ ๊ตฌ์กฐ ->

 

 

 

 

 

 

 

PCB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  

CPU์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด๋•Œ ์•ž์œผ๋กœ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  Block ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ’์„ PCB์— ์ €์žฅํ•ด๋‘”๋‹ค. 

 

 

 

PCB์˜ ๊ด€๋ฆฌ ๋ฐฉ์‹

Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. PCB list head์— PCB ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ถ™๊ฒŒ ๋œ๋‹ค. ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์‚ฝ์ž…, ์‚ญ์ œ ์šฉ์ด

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ์‹œ ์ œ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ Context Switching์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 


 

Context Switching

CPU๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” task(process, thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ 
๋‹ค์Œ ์ง„ํ–‰ํ•  task์˜ ์ƒํƒœ ๋ฐ register ๊ฐ’๋“ค์— ๋Œ€ํ•œ
์ •๋ณด(context)๋ฅผ ์ฝ์–ด ์ƒˆ๋กœ์šด task์˜ context ์ •๋ณด๋กœ ๊ต์ฒดํ•˜๋Š” ๊ณผ์ •

 

* context๋ž€ : CPU๊ฐ€ ๋‹ค๋ฃจ๋Š” Task(Process / Thread)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋งํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๊ณ  pcb๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. 

 

 

์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰ ์ค‘์ธ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜, 

์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Context Switching์ด ๋ฐœ์ƒ

ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready -> Running , Running -> Ready , Running -> Block ์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ์— ๋ฐœ์ƒ

 

 

 

Context Switching ์ˆ˜ํ–‰ ๊ณผ์ •

1. Task์˜ ๋Œ€๋ถ€๋ถ„ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๊ณ  PCB(Process Control Block)๋กœ ๊ด€๋ฆฌ

2. ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task์˜ PCB ์ •๋ณด๋ฅผ ์ €์žฅ (Process Stack, Ready Queue)

3. ๋‹ค์Œ ์‹คํ–‰ํ•  Task์˜ PCB ์ •๋ณด๋ฅผ ์ฝ์–ด Register์— ์ ์žฌํ•˜๊ณ  CPU๊ฐ€ ์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ๊ณผ์ •์„ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰

 

 

Context Switching Cost

1. Cashe ์ดˆ๊ธฐํ™”

2. Memory Mapping ์ดˆ๊ธฐํ™”

3. ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ‘๊ทผ์„ ์œ„ํ•ด์„œ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” kernel

์œ„์™€ ๊ฐ™์€ Cost๊ฐ€ ์†Œ์š”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฆ์€ context switching์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

* Process๊ฐ€ Thread๋ณด๋‹ค ๋งŽ์ด ๋“ ๋‹ค. ( Thread๋Š” stack์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— context switching ๋ฐœ์ƒ์‹œ stack ์˜์—ญ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ)

 

 

 

Context Switching๊ณผ Interrupt

CPU๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋งŒ์„ ๊ธฐ์–ตํ•œ๋‹ค.

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

ํ”„๋กœ์„ธ์Šค ์ค‘๋‹จ๊ณผ ์‹คํ–‰์‹œ interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ context switching์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ interrupt๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

Context Switching๊ณผ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰

์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ์ ์–ด์ง€๋ฉด :

๋ฌธ๋งฅ ๊ตํ™˜ ์ˆ˜, ์ธํ„ฐ๋ŸฝํŠธ ํšŸ์ˆ˜, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๋Š๋‚Œ์„ ๊ฐ–๋Š”๋‹ค.

 

์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ์ปค์ง€๋ฉด :

๋ฌธ๋งฅ ๊ตํ™˜ ์ˆ˜, ์ธํ„ฐ๋ŸฝํŠธ ํšŸ์ˆ˜, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๊ฐ์†Œํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๋Š๋‚Œ์„ ๊ฐ–์ง€ ๋ชปํ•œ๋‹ค.

 

 

 


<์ฐธ๊ณ >

https://m.blog.naver.com/adamdoha/222019884898 https://jhnyang.tistory.com/33

+ Recent posts