๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ Base/CS ์ƒ์‹

Context Switch๊ฐ€ ์ผ์–ด๋‚  ๋•Œ๋Š” ์™œ overhead๊ฐ€ ํด๊นŒ?

by Dev. Ella 2023. 9. 20.

์˜๋ฌธ์ด ๋“  ์ด์œ 

Context Switch ๊ฐœ๋…์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์ ‘ํ–ˆ๋‹ค.

User mode์—์„œ Kernel mode๋กœ ๊ฐ€๋Š” ๊ฑด Context Switch๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ overhead๊ฐ€ ์ ์€ ์ž‘์—…์ด๋‹ค. Context Switch ์—†์ด CPU ์ˆ˜ํ–‰ ์ •๋ณด ๋“ฑ context์˜ ์ผ๋ถ€๋ฅผ PCB(Process Control Block)์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹ค๋งŒ, Kernel mode์—์„œ User mode๋กœ ๊ฐˆ ๋•Œ Context Switch ๋ฐœ์ƒ ์‹œ์—๋Š” ๊ทธ ๋ถ€๋‹ด์ด ํ›จ์”ฌ ํฌ๋‹ค. Cache Memory๋ฅผ flush ํ•  ๋•Œ overhead๊ฐ€ ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

์™œ Context Switch๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ overhead๊ฐ€ ํฐ ๊ฒƒ์ผ๊นŒ?

 

 

Context Switch๋ž€?

Context Switch(๋ฌธ๋งฅ ๊ตํ™˜)๋Š” ์šด์˜ ์ฒด์ œ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ CPU์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด, CPU๋ฅผ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

๋‹จ, ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๊ฐ„์— ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“œ ์ „ํ™˜์€ Context Switch๋ผ๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋•Œ๋Š” Context Switch ์—†์ด ๋ชจ๋“œ ์ „ํ™˜๋งŒ ์ผ์–ด๋‚œ๋‹ค.

 

์—ฌ๋‹ด์ด์ง€๋งŒ, ์ด ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋‚˜ ํ•ด๋ณด๊ฒ ๋‹ค. ๊ฐ„ํ˜น ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ์˜ค๊ฐ€๋Š” ๋†๋‹ด์œผ๋กœ "์ € ์š”์ฆ˜ ์ผํ•  ๋•Œ Context Switch๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์ผ์–ด๋‚˜์„œ ์ •์‹ ์ด ์—†์–ด์š”"๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด ์˜๋ฏธ๊ฐ€ ๋ฐ”๋กœ ์ผํ•˜๋Š” ์ค‘๊ฐ„์— ์™”๋‹ค ๊ฐ”๋‹ค ํ•˜๋Š” ๊ฒฝ์šฐ(Context Switch)๊ฐ€ ๋งŽ์•„์„œ ์ •์‹ ์ด ์—†๋‹ค(Overhead)๋Š” ์˜๋ฏธ๋‹ค. (์ด์ œ ์•„๋Š” ์ฒด ํ•˜๋ฉด์„œ ๋†๋‹ด์„ ํ•ด๋ณด์ž)

 

@livecycle.io

 

 

overhead๊ฐ€ ํฐ ์ด์œ 

Context Switch ๋ฐœ์ƒ ์‹œ, overhead๊ฐ€ ํฐ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์š”์•ฝํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ํ•ด์•ผ ํ•  ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

1. ๋ ˆ์ง€์Šคํ„ฐ(register) ์ƒํƒœ ์ €์žฅ ๋ฐ ๋ณต์›

Context Switch๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ƒํƒœ(ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ์Šคํƒ ํฌ์ธํ„ฐ ๋“ฑ)๋ฅผ ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•ด์•ผ ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ๋‹ค์Œ์— ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ค€๋น„ํ•ด ๋‘๊ณ  '์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค~ ์–ด์„œ ์˜ค์„ธ์š”~' ํ•˜๋ฉฐ ๋งž์ดํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ.


2. ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ์ „ํ™˜

ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋กœ๋“œํ•ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ตฌ์กฐ์˜ ์ „ํ™˜์ด ํฌํ•จ๋˜๋ฉฐ, ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ overhead๊ฐ€ ์ปค์ง€๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ์ด ๋˜ํ•œ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ๋‹ค์Œ์— ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ์…”์˜ฌ ํ…Œ์ด๋ธ” ์ขŒ์„์„ ๋งŒ๋“ค์–ด ๋‘์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


3. ์บ์‹œ ๋ฌดํšจํ™”

CPU ์บ์‹œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋กœ ์ „ํ™˜๋  ๋•Œ๋Š” ๋ฌดํšจํ™”๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋Š” '์บ์‹œ ์ผ๊ด€์„ฑ'์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์œผ๋กœ overhead๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๊ตณ์ด ํ•˜์ง€ ์•Š์•„๋„ ๋  ์ผ์„, ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚  ๋•Œ๋Š” ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด๋‹ค.


4. ์Šค์ผ€์ค„๋ง ๋น„์šฉ

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰๋ ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•œ CPU ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ๋˜ํ•œ ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ๊ตณ์ด ํ•˜์ง€ ์•Š์•„๋„ ๋  ์ผ์ด๋‹ค.


5. ์ž…์ถœ๋ ฅ ์ž‘์—…

ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ผ ๋•Œ, I/O(์ž…์ถœ๋ ฅ) ์ž‘์—… ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์œ„ํ•œ ์ปค๋„ ํ˜ธ์ถœ ๋ฐ ์ž…์ถœ๋ ฅ ์žฅ์น˜์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ๋„ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์š”์•ฝํ•˜์ž๋ฉด

Context Switch ๋ฐœ์ƒ ์‹œ, ์œ„์˜ ๋ชจ๋“  ์ž‘์—…๋“ค์€ ์ปค๋„ ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ปค๋„ ๋ชจ๋“œ์™€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ ๊ฐ„์˜ ์ „ํ™˜์ด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๋”ฐ๋ผ์„œ context Switch๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํšจ์œจ์ ์ธ ์Šค์ผ€์ค„๋ง ๋ฐ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•  ๊ฒƒ์ด๋‹ค.

 

 

๐Ÿ“Ž References

- [์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต] ๋ฐ˜ํšจ๊ฒฝ: ์šด์˜์ฒด์ œ ๊ฐ•์˜

- ๋” ๋งŽ์€ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๐Ÿ‘‰ ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•œ TIL

 

 

 

๋Œ“๊ธ€