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

9 Process Synchronization (ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”)

by Dowon Kang 2023. 12. 31.

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ํ•จ๊ป˜ ๊ณต์œ ๋œ ์ž์›์— ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋ฉฐ ์Šค๋ ˆ๋“œ ์—ญ์‹œ ๋™๊ธฐํ™”์˜ ๋Œ€์ƒ์ด์ง€๋งŒ ํŽธ์˜์ƒ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ๋ฅผ ํ•ฉ์ณ์„œ ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

์ฆ‰, ํ”„๋กœ์„ธ์Šค๋“ค์ด ์งˆ์„œ ์—†์ด ์‹คํ–‰๋œ๋‹ค๋ฉด ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๊ฐ€ ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ˆ˜ํ–‰ ์‹œ๊ธฐ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ์™€ ์ˆœ์„œ ๋ณด์žฅ์˜ ์›์น™์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

 

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

์˜ค์ง ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค. Critical Section(์ž„๊ณ„ ์˜์—ญ)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ฝ”๋“œ ์˜์—ญ์—์„œ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ 1) Bank account problem 

  1. ์€ํ–‰ ๊ณ„์ขŒ : 10๋งŒ ์›
  2. ํ”„๋กœ์„ธ์Šค A : ๊ณ„์ขŒ์— 2๋งŒ ์› ์ž…๊ธˆ
  3. ํ”„๋กœ์„ธ์Šค B : ๊ณ„์ขŒ์— 5๋งŒ ์› ์ž…๊ธˆ
  4. ์˜ˆ์ƒ ๊ฒฐ๊ณผ : ๊ณ„์ขŒ์— 17๋งŒ ์›
  5. ์‹ค์ œ ๊ฒฐ๊ณผ : ์ตœ์ข… ์ž”์•ก 15๋งŒ ์›!!  -> ํ”„๋กœ์„ธ์Šค A์—์„œ 12๋งŒ ์›์œผ๋กœ ๊ฐ’ ์ €์žฅํ–ˆ์ง€๋งŒ B๊ฐ€ A๊ฐ€ ๋๋‚˜๊ธฐ๋„ ์ „์— CPU ์ž์›์— ์ ‘๊ทผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๋™์œผ๋กœ ์šด์˜์ค‘์ด๋˜ ์ž”์•ก์˜ ๊ฐ’์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ 

์˜ˆ์‹œ 2) Producer & Consumer problem 

Producer-Consumer ๋ฌธ์ œ๋Š” ๊ณต์œ ๋œ ๋ฒ„ํผ(๋˜๋Š” ํ)์— ๋Œ€ํ•ด ์ƒ์‚ฐ์ž(Producer)๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์†Œ๋น„์ž(Consumer)๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋™๊ธฐํ™” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ƒ์‚ฐ์ž๋Š” ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ ์žˆ์„ ๊ฒฝ์šฐ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ , ์†Œ๋น„์ž๋Š” ๋ฒ„ํผ๊ฐ€ ๋น„์–ด ์žˆ์„ ๊ฒฝ์šฐ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒ์‚ฐ์ž (Producer): ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ถ”๊ฐ€ํ•จ.
  • ์†Œ๋น„์ž (Consumer): ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•จ.
  • ๊ณต์œ  ๋ฒ„ํผ (Buffer): ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ณต์œ  ์ž์›.

์ƒํ˜ธ ๋ฐฐ์ œ (Mutual Exclusion): ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๋ฒ„ํผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.

 

 

์ˆœ์„œ ๋ณด์žฅ (Ordering)

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜์—ฌ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค. ํŠนํžˆ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด(Race Condition)์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ) Reader-writer problem: ํ…์ŠคํŠธ ํŒŒ์ผ์— '์“ฐ๊ธฐ' ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์ง€๋„ ์•Š์•˜๋Š”๋ฐ '์ฝ๊ธฐ' ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฌธ์ œ 

 

 


 

๊ณต์œ  ์ž์›(Shared Resource)

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

 


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

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

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

  • ์ƒํ˜ธ ๋ฐฐ์ œ: ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์ „ ์กฐ๊ฑด: ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋„ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—๋Š” ํŠน์ • ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž„๊ณ„ ๊ตฌ์—ญ ๋น ์ ธ๋‚˜์˜จ ํ›„ ์กฐ๊ฑด: ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋น ์ ธ๋‚˜์˜จ ํ›„์—๋„ ํŠน์ • ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ํ•œ ๋Œ€๊ธฐ: ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๋ ค๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋Š” ์œ ํ•œ ์‹œ๊ฐ„ ์•ˆ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ๋Š” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ๋˜๋ฉฐ, ์ƒํ˜ธ ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜(์„ธ๋งˆํฌ์–ด, ๋ฎคํ…์Šค ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๊ณต์œ  ์ž์› ์ ‘๊ทผ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

 

์šด์˜์ฒด์ œ๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์›์น™ (์ƒํ˜ธ ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๋™๊ธฐํ™” 3๊ฐ€์ง€ ์›์น™)

1) ์ƒํ˜ธ ๋ฐฐ์ œ 2) ์ง„ํ–‰ 3) ์œ ํ•œ ๋Œ€๊ธฐ

 

 

๋ฎคํ…์Šค (Mutex)

๋ฎคํ…์Šค(Mutex)๋Š” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ, ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ค์ง ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๋ฎคํ…์Šค๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฝ(Lock) ์ƒํƒœ: ํ•œ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฎคํ…์Šค๋ฅผ ๋ฝ(lock)ํ•˜๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋Š” ํ•ด๋‹น ๋ฎคํ…์Šค์— ๋Œ€ํ•œ ๋ฝ์„ ํš๋“ํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋Œ€๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋™์‹œ ์ ‘๊ทผ์„ ๋ง‰์•„์ค๋‹ˆ๋‹ค.
  • ์–ธ๋ฝ(Unlock) ์ƒํƒœ: ๋ฎคํ…์Šค๋ฅผ ์–ธ๋ฝ(unlock)ํ•˜๋ฉด, ๋‹ค๋ฅธ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฎคํ…์Šค์˜ ๋ฝ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ์จ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋‹ค์Œ ์ˆœ์„œ์˜ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฎคํ…์Šค ๋ฝ์€ ์ฃผ๋กœ ํฌ๋ฆฌํ‹ฐ์ปฌ ์„น์…˜(Critical Section)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํฌ๋ฆฌํ‹ฐ์ปฌ ์„น์…˜์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

 

์„ธ๋งˆํฌ์–ด(Semaphore)

์„ธ๋งˆํฌ์–ด(Semaphore)๋Š” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋กœ, ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋งˆํฌ์–ด๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜๋กœ์„œ, ํ•ด๋‹น ๋ณ€์ˆ˜์—๋Š” ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ธ "P" (Wait)์™€ "V" (Signal)๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • P (Wait) ์—ฐ์‚ฐ: P ์—ฐ์‚ฐ์€ ์„ธ๋งˆํฌ์–ด ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์„ธ๋งˆํฌ์–ด ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋ฉด ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ธ๋งˆํฌ์–ด ๊ฐ’์ด 0์ด๋ฉด, ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ธ๋งˆํฌ์–ด๋Š” ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • V (Signal) ์—ฐ์‚ฐ: V ์—ฐ์‚ฐ์€ ์„ธ๋งˆํฌ์–ด ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋•Œ, ๋งŒ์•ฝ ์„ธ๋งˆํฌ์–ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜๋ฅผ ๊นจ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

 

์„ธ๋งˆํฌ์–ด๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด์™€ ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด: ๊ฐ’์ด 0 ๋˜๋Š” 1๋งŒ์„ ๊ฐ€์ง€๋ฉฐ, ์ฃผ๋กœ ๋ฝ(lock)๊ณผ ์–ธ๋ฝ(unlock)์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด์ง„ ์ƒํƒœ๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.
  • ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด: ๊ฐ’์ด ์Œ์ˆ˜๊นŒ์ง€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ๋ฆฌ์†Œ์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์„ธ๋งˆํฌ์–ด๋Š” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ๋ฐ ์ƒํ˜ธ ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๊ณ ๊ธ‰ ๋„๊ตฌ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ชจ๋‹ˆํ„ฐ(Monitor)

๋ชจ๋‹ˆํ„ฐ(Monitor)๋Š” ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ œ๊ณต๋˜๋Š” ๋™๊ธฐํ™” ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ์ƒํ˜ธ ๋ฐฐ์ œ์™€ ์กฐ๊ฑด ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ์ถ”์ƒ์ ์ธ ๋™๊ธฐํ™” ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์•ˆ์ „ํ•œ ์ ‘๊ทผ์„ ๋ณด์žฅํ•˜๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํŽธ๋ฆฌํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

  • ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion): ๋ชจ๋‹ˆํ„ฐ๋Š” ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋™์‹œ ์ ‘๊ทผ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ ๋ฐฐ์ œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ์ด ๋ชจ๋‹ˆํ„ฐ์— ๋“ค์–ด๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด ๋ณ€์ˆ˜(Condition Variable): ์กฐ๊ฑด ๋ณ€์ˆ˜๋Š” ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋“ค์„ ๊นจ์›Œ ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง„์ž… ํ”„๋กœํ† ์ฝœ(Entry Protocol): ๋ชจ๋‹ˆํ„ฐ๋Š” ์ง„์ž… ํ”„๋กœํ† ์ฝœ์„ ์ œ๊ณตํ•˜์—ฌ ๋ชจ๋‹ˆํ„ฐ์— ๋“ค์–ด๊ฐ€๋ ค๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์€ํ(Data Abstraction): ๋ชจ๋‹ˆํ„ฐ ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” ์™ธ๋ถ€์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ฐ์ดํ„ฐ ์€ํ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ๋ชจ๋‹ˆํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ณต์œ  ์ž์›์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”๋œ ๋™๊ธฐํ™” ์žฅ์น˜์ž…๋‹ˆ๋‹ค. Java์—์„œ๋Š” synchronized ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ๋‚˜ ๋ธ”๋ก์ด ๋ชจ๋‹ˆํ„ฐ์˜ ์—ญํ• ์„ ํ•˜๋ฉฐ, Python์—์„œ๋Š” threading ๋ชจ๋“ˆ์˜ Lock ํด๋ž˜์Šค ๋“ฑ์ด ๋ชจ๋‹ˆํ„ฐ์™€ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 


ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ด๋ฉฐ, ํŠนํžˆ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•จ์œผ๋กœ์จ ๊ฒฝ์Ÿ ์กฐ๊ฑด๊ณผ ๋ฐ๋“œ๋ฝ(Deadlock), ์Šคํƒ€๋ฒ ์ด์…˜(Starvation) ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€