๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Operating System

[OS] ๊ณต์œ  ์ž์›๊ณผ ์ž„๊ณ„ ๊ตฌ์—ญ

by haerr 2025. 4. 24.

๐Ÿ“ˆ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ

๊ณต์œ  ์ž์›์ด๋ž€?

๊ณต์œ  ์ž์›์ด๋ž€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ž์›์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณ€์ˆ˜, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ํŒŒ์ผ ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž์›์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ˆ„๊ฐ€ ๋จผ์ € ์ ‘๊ทผํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฌธ์ œ ์ƒํ™ฉ: ๊ณต์œ  ๋ณ€์ˆ˜

์˜ˆ๋ฅผ ๋“ค์–ด, ์€ํ–‰ ๊ณ„์ขŒ์— 10๋งŒ ์›์ด ๋“ค์–ด ์žˆ๋Š” ์ƒํƒœ๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค(P1๊ณผ P2)๊ฐ€ ๋™์‹œ์— ์ž…๊ธˆ์„ ์‹œ๋„ํ•œ๋‹ค๊ณ  ํ•˜์ž.

 

๋‹จ๊ณ„ P1 ํ–‰๋™ P2 ํ–‰๋™
1 ์˜ˆ๊ธˆ ํ™•์ธ → 10๋งŒ ์› ์˜ˆ๊ธˆ ํ™•์ธ → 10๋งŒ ์›
2 ์˜ˆ๊ธˆ์— 10๋งŒ ์› ์ถ”๊ฐ€ → 20๋งŒ ์› ์˜ˆ๊ธˆ์— 5๋งŒ ์› ์ถ”๊ฐ€ → 15๋งŒ ์›
3 ์˜ˆ๊ธˆ ์ €์žฅ → 20๋งŒ ์› ์ €์žฅ ์˜ˆ๊ธˆ ์ €์žฅ → 15๋งŒ ์› ์ €์žฅ

 

์ด ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋œ P2๊ฐ€ ๋ฎ์–ด์“ฐ๋ฉด์„œ ์˜ˆ๊ธˆ์€ 15๋งŒ ์›์œผ๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์‹ค์ œ๋กœ๋Š” 25๋งŒ ์›์ด ๋˜์–ด์•ผ ์ •์ƒ์ธ๋ฐ, ํ•˜๋‚˜์˜ ์ž…๊ธˆ์ด ๋ฌด์‹œ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์ด๋‹ค.

 

 

 

๊ฒฝ์Ÿ ์กฐ๊ฑด (Race Condition)

 

๊ฒฝ์Ÿ ์กฐ๊ฑด์ด๋ž€, ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋ฉด์„œ, ๊ทธ ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค. ์ด๋•Œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋А๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ, ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

 

 

โžฐ ์ž„๊ณ„๊ตฌ์—ญ (Critical Section)

์ •์˜

์ž„๊ณ„๊ตฌ์—ญ์ด๋ž€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ๋งํ•œ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด ์˜์—ญ์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ž˜๋ชป ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠน๋ณ„ํžˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

 

์˜ˆ์‹œ

์˜ˆ๊ธˆ ์ž…๊ธˆ ์ฝ”๋“œ ์ค‘์—์„œ:

์˜ˆ๊ธˆ ํ™•์ธ → ์ž…๊ธˆ → ์ €์žฅ

์ด ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ž„๊ณ„๊ตฌ์—ญ์ด๋‹ค. ์ด ์ฝ”๋“œ๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๋ฉด ์•ˆ ๋˜๋Š” ์ค‘์š”ํ•œ ๊ตฌ๊ฐ„์ด๋‹ค.

 

 

๋น„์œ ๋กœ ์ดํ•ดํ•˜๊ธฐ: ์ฃผ๋ฐฉ์˜ ๋ฏน์„œ

  • ๊ฐ€์Šค๋ ˆ์ธ์ง€๋Š” ์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ณต์œ ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
  • ๋ฐ˜๋ฉด, ๋ฏน์„œ๊ธฐ๋Š” ํ•˜๋‚˜๋ฟ์ด๋ฏ€๋กœ ํ•œ ๋ช…์”ฉ๋งŒ ์จ์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ๋ฏน์„œ๋ฅผ ์“ฐ๋ฉด, ์ˆ˜ํ”„ ์žฌ๋ฃŒ์™€ ์ฃผ์Šค ์žฌ๋ฃŒ๊ฐ€ ์„ž์—ฌ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏน์„œ๊ธฐ๋ฅผ ํ•œ ๋ช…์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ž„๊ณ„๊ตฌ์—ญ๋„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.

 

์ž„๊ณ„๊ตฌ์—ญ์˜ ํŠน์ง•

  1. ๋™์‹œ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ์ž„๊ณ„๊ตฌ์—ญ ๋ฐ–์—์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
  3. ์ด ์˜์—ญ์€ ๋ฐฐํƒ€์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์„ ์ ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ค‘์š”์„ฑ

์ž„๊ณ„๊ตฌ์—ญ์„ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด, ๊ฒฝ์Ÿ ์กฐ๊ฑด์ด ๋ฐœ์ƒํ•˜์—ฌ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์˜ˆ๊ธˆ ์˜ˆ์‹œ์ฒ˜๋Ÿผ, ์‹ค์ œ ์ž…๊ธˆ ๊ธˆ์•ก์ด ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿšง ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ

๊ฐœ๋…

 

์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ๋Š” ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์„ค๋ช…ํ•œ๋‹ค.

 

  • ์ƒ์‚ฐ์ž(Producer)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ฒ„ํผ์— ์ €์žฅํ•œ๋‹ค.
  • ์†Œ๋น„์ž(Consumer)๋Š” ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์ด๋•Œ ๋ฒ„ํผ๋Š” ๊ณต์œ  ์ž์›์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ตฌ์กฐ

  • ๊ณต์œ  ์ž์›: ์›ํ˜• ๋ฒ„ํผ (Circular Buffer)
  • ๊ณต์œ  ๋ณ€์ˆ˜: sum → ํ˜„์žฌ ๋ฒ„ํผ์— ์žˆ๋Š” ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜

 

์˜ˆ์‹œ ์ฝ”๋“œ

์ƒ์‚ฐ์ž:

input(buf);
sum = sum + 1;

 

์†Œ๋น„์ž:

output(buf);
sum = sum - 1;

 

 

๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค

  1. ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋™์‹œ์— sum ๊ฐ’์„ ์ฝ๋Š”๋‹ค (๋‘˜ ๋‹ค 3์ด๋ผ๊ณ  ์ฝ์Œ)
  2. ์ƒ์‚ฐ์ž: sum = 3 + 1 → 4
  3. ์†Œ๋น„์ž: sum = 3 - 1 → 2
  4. ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งˆ์ง€๋ง‰์— ๋ฎ์–ด์“ด๋‹ค → ๊ฒฐ๊ณผ๋Š” 2 ๋˜๋Š” 4

 

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์ƒ์‚ฐ๋„ 1๋ฒˆ, ์†Œ๋น„๋„ 1๋ฒˆ ์ผ์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— ์ •์ƒ์ ์ธ sum ๊ฐ’์€ 3์ด์–ด์•ผ ํ•œ๋‹ค. ์ž˜๋ชป๋œ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์ด ์ƒํ™ฉ๋„ ๊ฒฝ์Ÿ ์กฐ๊ฑด์ด๋‹ค.

 

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด, sum์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋™์‹œ์— sum์„ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์•„์•ผ ํ•œ๋‹ค.

 

 

ํ•˜๋“œ์›จ์–ด ์ž์› ์˜ˆ์‹œ

ํ”„๋ฆฐํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์ด๋‹ค. A ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ์„ฑ ์‚ฌ์ง„์„ ์ถœ๋ ฅํ•˜๊ณ , B ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌผ๊ณ ๊ธฐ ์‚ฌ์ง„์„ ์ถœ๋ ฅํ•˜๋ ค๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ณด์ž.

๋งŒ์•ฝ ๋™์‹œ์— ์ž‘์—…ํ•˜๋ฉด ๋ฐ˜์ธ๋ฐ˜์–ด ์‚ฌ์ง„์ด ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋ฆฐํ„ฐ๋„ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ํ•œ ๋ฒˆ์— ํ•œ ์‚ฌ๋žŒ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

 

๐Ÿช– ์ž„๊ณ„๊ตฌ์—ญ ๋ฌธ์ œ ํ•ด๊ฒฐ ์กฐ๊ฑด

 

1. ์ƒํ˜ธ ๋ฐฐ์ œ (Mutual Exclusion)

  • ์ž„๊ณ„๊ตฌ์—ญ์—๋Š” ๋™์‹œ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ๋น„์œ : ๋ฏน์„œ๊ธฐ๋ฅผ ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

 

2. ํ•œ์ • ๋Œ€๊ธฐ (Bounded Waiting)

  • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ ค์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  • ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์–ธ์  ๊ฐ€๋Š” ๋ฐ˜๋“œ์‹œ ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋น„์œ : ์š”๋ฆฌ์‚ฌ A๊ฐ€ ๊ณ„์† ๋ฏน์„œ๋ฅผ ๋…์ ํ•ด ์š”๋ฆฌ์‚ฌ B๊ฐ€ ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฑด ์•ˆ ๋œ๋‹ค.

 

3. ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ (Progress / Flexibility)

  • ์ž„๊ณ„๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์˜์‚ฌ๊ฐ€ ์—†๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์„ ๋ฐฉํ•ดํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  • ๊ณต์œ  ์ž์›์ด ๋น„์–ด ์žˆ๋‹ค๋ฉด, ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์ฆ‰์‹œ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋น„์œ : ์š”๋ฆฌ์‚ฌ A๊ฐ€ ์‰ฌ๊ณ  ์žˆ์„ ๋•Œ, ์š”๋ฆฌ์‚ฌ B๋Š” ๋ฐ”๋กœ ๋ฏน์„œ๋ฅผ ์จ์•ผ ํ•œ๋‹ค. ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

์กฐ๊ฑด ์„ค๋ช… ๋น„์œ 
์ƒํ˜ธ ๋ฐฐ์ œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ ์ ‘๊ทผ ๋ฏน์„œ๋Š” ํ•œ ๋ช…์”ฉ๋งŒ ์‚ฌ์šฉ
ํ•œ์ • ๋Œ€๊ธฐ ๋ฌดํ•œ ๋Œ€๊ธฐ ๋ฐฉ์ง€, ๊ณต์ •์„ฑ ๋ชจ๋‘ ์–ธ์  ๊ฐ€๋Š” ๋ฏน์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ๋ฐฉํ•ด ์—†์ด ์ž์œ ๋กญ๊ฒŒ ์ง„์ž… ๋น„์–ด ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

 

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

[OS] RPC๋ž€?  (0) 2025.04.24