๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Develop/Server

[IT ์ธํ”„๋ผ] Ch4 ๊ธฐ๋ณธ ์ด๋ก  (ํ, ๋ฐฐํƒ€์  ์ œ์–ด, ์ƒํƒœ ์ €์žฅ/๋น„์ €์žฅ)

by bona.com 2025. 5. 3.

๐Ÿ“š <๊ทธ๋ฆผ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š” IT ์ธํ”„๋ผ ๊ตฌ์กฐ> ๋ฅผ ์ฝ๊ณ  ๊ทธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค 

 

ํ

'ํ(Queue)'๋Š” ์šฐ๋ฆฌ๋ง๋กœ '๋Œ€๊ธฐ ํ–‰๋ ฌ'์ด๋ผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  • ํ(๋Œ€๊ธฐ ํ–‰๋ ฌ)์—์„œ๋Š” ์ค„์„ ์„ค ๋•Œ๋Š” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์„œ๊ณ , ์ฒ˜๋ฆฌ๋Š” ์„ ๋‘๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋œ๋‹ค.
  • ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ ๋™์ž‘์„ FIFO(First In First Out) ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

ํ๋Š” ์ปดํ“จํ„ฐ ์„ธ๊ณ„์—์„œ ๋‹ค์–‘ํ•œ ๊ณณ์— ํ–‰๋ ฌ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • CPU ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ํ–‰๋ ฌ
  • ํ•˜๋“œ ๋””์Šคํฌ ๋“ฑ์˜ ์ €์žฅ์†Œ ์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” I/O ์š”๊ตฌ ํ–‰๋ ฌ
  • ๋„คํŠธ์›Œํฌ ์ ‘์† ์„ฑ๋ฆฝ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ ‘์† ์š”๊ตฌ ํ–‰๋ ฌ

 

 ์ด๋•Œ CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ํ–‰๋ ฌ์„ ๋Ÿฐํ(Run-Queue)๋ผ๊ณ  ํ•œ๋‹ค.

'๋Ÿฐํ์— ์Œ“์ธ ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ์ฝ”์–ด ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด์„œ 1์ด๋ผ๋ฉด ๋ฌธ์ œ ์—†๋‹ค' ๋ผ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. 

์ฐธ๊ณ ๋กœ, CPU์—์„œ ์ฒ˜๋ฆฌ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Ÿฐํ๋กœ ์ธ์‹ํ• ์ง€๋Š” OS ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” CPU์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋„ ๋Ÿฐํ๋กœ ์ธ์‹ํ•œ๋‹ค. OS ์ปค๋„์—๋Š” ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ ๋Ÿฐํ ๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ƒ์ด CPU๊ฐ€ ์•„๋‹ˆ๋ผ HDD๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋””์Šคํฌ I/O ์˜ˆ์‹œ๊ฐ€ ๋œ๋‹ค.

HDD๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋ก๋ผ ์žˆ๋Š” ํŠน์ • ์œ„์น˜์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU์ฒ˜๋Ÿผ ๋น„์–ด ์žˆ๋‹ค๋Š” ์ด์œ ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋˜ํ•œ, ๊ณต์œ  ์ €์žฅ์†Œ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์บ์‹œ๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด์„œ I/O๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์บ์‹œ์— ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ก๋˜๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

๋ฐฐํƒ€์  ์ œ์–ด

๋ฐฐํƒ€์  ์ œ์–ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ '๋‹ค๋ฅธ ๊ฒƒ์„ ๋ฐฐ์ œํ•˜๋Š” ์ œ์–ด'๋‹ค.

 

์ปดํ“จํ„ฐ ์„ธ๊ณ„์—์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด, ์ง๋ ฌ ์ฒ˜๋ฆฌ์—์„œ๋Š” ๋ฐฐํƒ€์  ์ œ์–ด๊ฐ€ ํ•„์š” ์—†์ง€๋งŒ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์—์„œ๋Š” ํ•„์š”ํ•˜๋‹ค. 

์ด๋ ‡๊ฒŒ ๋ฐฐํƒ€์  ์ œ์–ด๋ฅผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค. 

์ผ๋ฐ˜์ ์œผ๋กœ OS๋‚˜ DBMS๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐฐํƒ€์  ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

ํŠน์ง•์„ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ณต์ˆ˜์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณต์œ  ์ž์›(CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ๋“ฑ)์— ๋™์‹œ์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํƒ€์  ์ œ์–ด๋กœ ๋ณดํ˜ธํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฐฐํƒ€์  ์ œ์–ด์—์„œ๋Š” ํŠน์ • ์ฒ˜๋ฆฌ๊ฐ€ ๊ณต์œ  ์ž์›์„ ์ด์šฉํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ํ•ด์„œ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

DBMS์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐํƒ€์  ์ œ์–ด๋ฅผ ์•Œ์•„๋ณด์ž.

1๏ธโƒฃDBMS์˜ ๋ฐฐํƒ€์  ์ œ์–ด์—์„œ๋Š” ๋งค์šฐ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ๋ฝ(Lock)์„ ์œ ์ง€ํ•˜๋Š” ๋ž˜์น˜(Latch)๋ผ๋Š” ๊ฒƒ์ด ์žˆ์–ด์„œ CPU์—์„œ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ๋Œ€๊ธฐํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์Šคํ•€๋ฝ(Spin-Lock)์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. 

 

2๏ธโƒฃํ•œํŽธ ๋น„๊ต์  ์žฅ์‹œ๊ฐ„ ๋ฝ์„ ์œ ์ง€ํ•˜๋„๋ก ํ๋ฅผ ์ด์šฉํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ธ ์Šฌ๋ฆฝ๋ฝ(Sleep-Lock)์ด๋ผ๋Š” ๊ฒƒ๋„ ์žˆ๋‹ค. 

 

3๏ธโƒฃ์Šคํ•€๋ฝ์€ CPU์—์„œ ์˜๋ฏธ ์—†๋Š” ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋Œ€๊ธฐํ•˜์ง€๋งŒ, ๋‹จ์ˆœํžˆ ๊ณ„์† ๋ฐ˜๋ณต๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์Šคํ•€ํ•ด์„œ ๋ฝ์„ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•˜๋ฉด ์Šฌ๋ฆฝํ•˜๋Š” ๋“ฑ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์Šคํ•€ํ• ์ง€ ์Šฌ๋ฆฝํ• ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์–ด๋Œ‘ํ‹ฐ๋ธŒ๋ฝ(Adaptive-lock) ๋ฐฉ์‹๋„ ์žˆ๋‹ค.

 

๋ฆฌ๋ˆ…์Šค ์ปค๋„์€ ๋น… ์ปค๋„๋ฝ(Big Kernel Lock, BKL)์ด๋ผ ๋ถˆ๋ฆฌ๋Š”, ํ•˜๋‚˜์˜ ์Šคํ•€๋ฝ์œผ๋กœ ์œ ์ง€๋œ๋‹ค.

์ปค๋„์˜ BKL์ด ์ด์šฉ๋˜๋Š” ๋ถ€๋ถ„์—์„œ๋Š” ์ฒ˜๋ฆฌ๊ฐ€ ์ง๋ ฌํ™”๋ผ์„œ ๋™์‹œ์— ํ•˜๋‚˜์˜ CPU๋งŒ ์ปค๋„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ถ€๋ถ„์ด ๋ณ‘๋ชฉ ์ง€์ ์ด ๋˜๊ธฐ ์‰ฝ๋‹ค.

 

์ƒํƒœ ์ €์žฅ/ ์ƒํƒœ ๋น„์ €์žฅ

  • ์ƒํƒœ ์ €์žฅ(Stateful): ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง
    • ์ •๋ณด๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์— ์„ธ๋ถ„ํ™”๋œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐ˜๋ฉด, ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•˜๋‹ค.
    • ์˜ˆ์‹œ) ssh
  • ์„ฑํƒœ ๋น„์ €์žฅ(Stateless): ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Œ
    • ๊ณ ๊ธฐ๋Šฅ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๋ฉฐ ์„ฑ๋Šฅ์ด๋‚˜ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ์šฐ์ˆ˜ํ•˜๋‹ค.
    • ์˜ˆ์‹œ) http

 

์ปดํ“จํ„ฐ ๋‚ด์—์„œ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์— ์ƒํƒœ ์ €์žฅ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒํƒœ ์ €์žฅ์€ ํ•„์ˆ˜๋ถˆ๊ฐ€๊ฒฐ์ด๋‹ค.

์ผ๋ฐ˜ CPU๋Š” ํ•˜๋‚˜์˜ CPU์—์„œ ๋ณต์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐ๊ธˆ์”ฉ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํŠน์ • ์‹œ์ ์— ์ง„์งœ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” 1CPU๋‹น ํ•˜๋‚˜๋‹ค.

์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๋กœ ์ƒํƒœ ์ „์ด๋ฅผ ํ•œ๋‹ค.

  • ๊ฐœ์‹œ: ์–ด๋–ค ๋ช…๋ น์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์ƒˆ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์‹คํ–‰๋œ๋‹ค.
  • ์‹คํ–‰ ๊ฐ€๋Šฅ ์ƒํƒœ: ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ ํ๋ผ ๋ถˆ๋ฆฌ๋Š” ์ˆœ์„œ ๋Œ€๊ธฐ ํ–‰๋ ฌ์— ์ค„์„ ์„œ์•ผ ํ•œ๋‹ค.
  • ์‹คํ–‰ ์ƒํƒœ: ์ฐจ๋ก€๊ฐ€ ๋Œ์•„์˜ค๋ฉด ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „์ดํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ CPU๊ฐ€ ๋…์ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ์ •๋Ÿ‰์„ ์ฒ˜๋ฆฌํ•˜๋ฉด CPU๋ฅผ ๋‹ค์‹œ ์—ด๋ฉฐ, ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์‹œ ์ˆœ์„œ ํ–‰๋ ฌ๋กœ ๋Œ์•„๊ฐ€ ์ค„์„ ์„ ๋‹ค.
  • ๋Œ€๊ธฐ ์ƒํƒœ: ๋งŒ์•ฝ ๋””์Šคํฌ ์•ก์„ธ์Šค ๋“ฑ I/O ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „์ดํ•œ๋‹ค.
  • ์ข…๋ฃŒ: ์ด ๋Œ€ํ‘œ์ ์ธ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ(์‹คํ–‰ ๊ฐ€๋Šฅ ์ƒํƒœ, ์‹คํ–‰ ์ƒํƒœ, ๋Œ€๊ธฐ ์ƒํƒœ)๋ฅผ ์ „์ดํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ๊ฐ€ ์ „๋ถ€ ๋๋‚˜๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.