๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ๋™๊ธฐํ™”(Synchronization)

by ์œ ์ง„์˜ 2023. 4. 23.
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์šด์˜์ฒด์ œ ๊ฐ•์˜์™€ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ ๊ต์žฌ์— ๋Œ€ํ•œ TIL์ž…๋‹ˆ๋‹ค.

 

 

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

๊ฒฝ์Ÿ ์ƒํƒœ

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

 

๋”ฐ๋ผ์„œ, ๋™๊ธฐํ™”๋Š” ๊ฒฝ์Ÿ ์ƒํƒœ๋ฅผ ๋ง‰๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ(Data Consistency)์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ •ํ•ด์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

 

์ž„๊ณ„ ๊ตฌ์—ญ

์ž„๊ณ„ ๊ตฌ์—ญ(Critical Section)์€ ์ฝ”๋“œ ์ƒ์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ๋ถ€๋ถ„์„ ๋งํ•œ๋‹ค.

 

์ž„๊ณ„ ๊ตฌ์—ญ๊ณผ ๊ด€๋ จ๋œ ์ „ํ†ต์ ์ธ ๋ฌธ์ œ๋กœ ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ(Producer-Consumer Problem)๊ฐ€ ์žˆ๋‹ค.

 

 

์ƒ์‚ฐ์ž๋Š” ๋ฌผ๊ฑด์„ ๊ณ„์† ์ƒ์‚ฐํ•ด์„œ ๋ฒ„ํผ์— ๋„ฃ๊ณ  ์†Œ๋น„์ž๋Š” ๋ฒ„ํผ์—์„œ ๊ณ„์† ๋ฌผ๊ฑด์„ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ฒ„ํผ๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ๊ฐ€๋“ ์ฐผ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ ๋ณ€์ˆ˜ sum์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, sum์—๋Š” ํ˜„์žฌ ๋ฒ„ํผ์— ์žˆ๋Š” ์ƒํ’ˆ์˜ ์ด์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

์ด๋•Œ, ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ์„œ๋กœ sum์˜ ๊ฐ’์— ์ ‘๊ทผํ•ด์„œ ๋ฐ”๊พธ๋ ค ํ•  ๋•Œ ์ ‘๊ทผ ์ˆœ์„œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, sum์˜ ๊ฐ’์„ ์กฐ์ž‘ํ•˜๋ ค๋Š” ๋ถ€๋ถ„์„ ์ž„๊ณ„ ๊ตฌ์—ญ์ด๋ผ๊ณ  ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ด๋‹ค. ์ด๋•Œ, ์–ด๋–ค ๋ฐฉ๋ฒ•์ด๋“  ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

์ƒํ˜ธ ๋ฐฐ์ œ(Mutal Exclusion)
ํ•œ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋Š” ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค.

ํ•œ์ • ๋Œ€๊ธฐ(Bounded Waiting)
์–ด๋–ค ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋„ ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•˜์ง€ ๋ชปํ•˜์—ฌ ๋ฌดํ•œ ๋Œ€๊ธฐ ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. (๊ธฐ์•„ ์ƒํƒœ ํ•ด๊ฒฐ)

์ง„ํ–‰์˜ ์œตํ†ต์„ฑ(Progress Flexibility)
์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ ์ž‘์—… ์ค‘์ธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์–ธ์ œ๋“  ๋“ค์–ด์™€์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ž„๊ณ„ ๊ตฌ์—ญ์ด ๋น„์–ด์žˆ๊ธฐ๋งŒ ํ•˜๋‹ค๋ฉด ํ•œ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์™€ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. (๊ต์ฐฉ ์ƒํƒœ ํ•ด๊ฒฐ)

 

์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์€ ์ž ๊ธˆ(Lock)์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ํ•ด๋‹น ๊ตฌ์—ญ ์ง„์ž… ์ง€์ ์„ ์ž ๊ทธ๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ์˜ ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ž ๊ธˆ ํ•ด์ œ(Unlock)์™€ ๋™์‹œ์— ๋™๊ธฐํ™” ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ๋“ค์–ด์™€๋„ ์ข‹๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆผ์œผ๋กœ์จ ์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์œ„์—์„œ ๋งํ–ˆ๋“ฏ ์ƒํ˜ธ ๋ฐฐ์ œ, ํ•œ์ • ๋Œ€๊ธฐ, ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ์€ ๊ฐ๊ฐ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๋ฐฉ๋ฒ•๋“ค์ด๋‹ค.

 

์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

 

์œ„์˜ ์ฝ”๋“œ๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•œ ์ž ๊ธˆ์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ฒ‰๋ณด๊ธฐ์—๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ฌธ๋งฅ ๊ตํ™˜ ๋•Œ๋ฌธ์— ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค. P1์—์„œ ๋จผ์ € while(lock==true)๋ฅผ ํ†ต๊ณผํ•˜๊ณ  lock=true๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚ฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์•„์ง lock ๋ณ€์ˆ˜๊ฐ€ true๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— P2๋„ while(lock==true)๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ P1, P2 ๋ชจ๋‘ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์™”์œผ๋‹ˆ ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

 

์œ„์˜ ์ฝ”๋“œ๋Š” lock ๋ณ€์ˆ˜๋ฅผ ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜๋งŒํผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ, ํšจ์œจ์ ์ด์ง€ ์•Š์„๋ฟ๋”๋Ÿฌ ๋ฌธ๋งฅ ๊ตํ™˜ ๋•Œ๋ฌธ์— ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค.

 

P1์—์„œ lock1=true๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚˜์„œ P2๋กœ ๋„˜์–ด๊ฐ”๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์ด๋•Œ, P2๋„ lock2=true๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚˜์„œ P1์œผ๋กœ ๋„˜์–ด๊ฐ”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด P1, P2 ๋‘ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘ ๊ฐ์ž์˜ while ์กฐ๊ฑด๋ฌธ์— ๊ฑธ๋ ค ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ์„œ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‘ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘ ๋ฌดํ•œ ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

 

์œ„์˜ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ๋‘ ์ฝ”๋“œ์™€ ๋‹ฌ๋ฆฌ lock ๋ณ€์ˆ˜๋ฅผ boolean์ด ์•„๋‹Œ int ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•ด์„œ P1์ด ์ง„์ž…ํ•  ์ฐจ๋ก€์ด๋ฉด lock=1, P2๊ฐ€ ์ง„์ž…ํ•  ์ฐจ๋ก€์ด๋ฉด lock=2๋ฅผ ํ•จ์œผ๋กœ์จ ์ƒํ˜ธ ๋ฐฐ์ œ, ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฐ๋‹ฌ์•„ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ณ  ์‹ถ์–ด๋„ ๊ทธ๋Ÿด ์ˆ˜ ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, P1์€ lock=2๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ๋ฌด์กฐ๊ฑด ๋‹ค์Œ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ํ”„๋กœ์„ธ์Šค๋Š” P2์ž„์„ ์•Œ๋ฆฐ๋‹ค. ์ฆ‰, P1์€ P2์— ์˜ํ–ฅ์„ ๋ฐ›์•„ P1์ด ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ž„์—๋„ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ž„๊ณ„ ๊ตฌ์—ญ์ด ๋น„์–ด์žˆ๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋„ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ”„๋กœ์„ธ์Šค์˜ ์ง„ํ–‰์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ๋ฐฉํ•ด๋ฐ›๋Š” ํ˜„์ƒ์„ ๊ฒฝ์ง๋œ ๋™๊ธฐํ™”๋ผ๊ณ  ํ•œ๋‹ค.

 

๋‹ค์Œ์€ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•๋“ค์ด๋‹ค.

 

๊ฒ€์‚ฌ์™€ ์ง€์ •(test-and-set)

 

 

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

 

ํ•˜์ง€๋งŒ, ๋ฐ”์œ ๋Œ€๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์‚ฌํ•˜์—ฌ ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ค.

 

 

ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•„์ด๋””์–ด๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ๋งŒ์˜ lock ๋ณ€์ˆ˜๋กœ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  turn ๋ณ€์ˆ˜๋กœ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์™”๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ๊ณ ์œ ์˜ lock ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง์œผ๋กœ์จ ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์˜€๊ณ , turn์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด๋„ ์ถฉ์กฑํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ, ๊ฒ‰๋ณด๊ธฐ์—๋Š” turn ๋ณ€์ˆ˜๋กœ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์˜ฌ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผฐ๋Š”๊ฐ€์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

while์˜ ์กฐ๊ฑด๋ฌธ์„ ์ž์„ธํ•˜๊ฒŒ ๋ณด๋ฉด ์˜๋ฌธ์ด ํ’€๋ฆฐ๋‹ค. P1์—์„œ while๋ฌธ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— turn=2๋ฅผ ํ•จ์œผ๋กœ์จ ๋‹ค์Œ์—๋Š” P2๊ฐ€ ๋“ค์–ด์˜ฌ ์ฐจ๋ก€์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ํ•˜์ง€๋งŒ while์˜ ์กฐ๊ฑด๋ฌธ์„ ๋ณด๊ฒŒ ๋˜๋ฉด turn==2๋ผ๋Š” ์กฐ๊ฑด์ด lock2==true๋ผ๋Š” ์กฐ๊ฑด ๋’ค์— ์œ„์น˜ํ•œ๋‹ค. ์ด๋Š” lock2 ๋ณ€์ˆ˜์˜ ๊ฐ’์ด false๋ผ๋ฉด turn==2 ์กฐ๊ฑด์˜ ๊ฒ€์‚ฌ๋Š” ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ฆ‰, P2์—์„œ lock2=true๋ฅผ ํ•˜์ง€ ์•Š๊ธฐ ์ „๊นŒ์ง„ turn ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 2๋ผ๋„ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, P1์ด ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ž„์—๋„ P2์— ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ง„์ž…ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ํ˜„์ƒ์ด ๋ฒŒ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. P2์—์„œ lock2=true๋ฅผ ์‹คํ–‰ํ•ด์•ผ ๋น„๋กœ์†Œ P1์ด ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ, turn์„ ์ด์šฉํ•œ ์กฐ๊ฑด๋ฌธ์ด ๋’ค์— ์œ„์น˜ํ•จ์œผ๋กœ์จ ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๋™์‹œ์— ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž… ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— P1, P2๊ฐ€ ๋™์‹œ์— ๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜์—ฌ ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ, ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 2๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ณต์œ  ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ณต์œ  ๋ณ€์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

 

 

๋ฐ์ปค ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

๋ฐ์ปค ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•„์ด๋””์–ด๋Š” ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•„์ด๋””์–ด์™€ ๋น„์Šทํ•˜๋‹ค. ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค ๊ณ ์œ ์˜ lock ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•˜๊ณ  turn ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, ํ”ผํ„ฐ์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๋ณ€์ˆ˜๋„ ๋Š˜์–ด๋‚˜๊ณ  ์ „์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ๋ณต์žกํ•ด์ง€๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

์ž„๊ณ„ ๊ตฌ์—ญ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์  ๋„๊ตฌ

์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•˜๋“œ์›จ์–ด์˜ ๋„์›€์„ ๋ฐ›๊ฑฐ๋‚˜ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ž์›์„ ๋‚ญ๋น„ํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ํŽธ๋ฆฌ์„ฑ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋„๊ตฌ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

 

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

์ด ์ฑ…์—๋Š” ๋ฎคํ…์Šค์— ๋Œ€ํ•œ ์„ค๋ช…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์–ธ๊ธ‰์กฐ์ฐจ ์—†๋‹ค. ๋ฎคํ…์Šค๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•˜์˜€๋˜ Locking ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ์งœ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ์†Œํ”„ํŠธ์›จ์–ด์  ๋„๊ตฌ๋กœ ์ œ๊ณตํ•œ ๊ฒƒ์ด๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

 

 

[Programming/C] Mutex (์ƒํ˜ธ๋ฐฐ์ œ, ์ƒํ˜ธ๋ฐฐํƒ€)

๋ฎคํ…์Šค๋Š” ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฝ์ด๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ๋ณ€์ˆ˜๋ฅผ ๋™์‹œ์— ๊ฐฑ์‹ ํ•˜๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. #include #include #include #include #include // 2๋ฐฑ๋งŒ๊ฐœ int number = 2000000; void error(

nomad-programmer.tistory.com

 

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

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

 

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ณดํ˜ธํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

 

์„ธ๋งˆํฌ์–ด๋Š” ์‚ฌ์šฉ ์ „์— Semaphore(n)์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ n์€ ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ์ž์›์˜ ์ˆ˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต์œ  ์ž์›์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ์ด๋ฉด Semaphore(1), 2๊ฐœ์ด๋ฉด Semaphore(2)์ด๋‹ค.

 

์„ธ๋งˆํฌ์–ด๋Š” ์ดˆ๊ธฐํ™”๊ฐ€ ๋๋‚œ ํ›„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ธฐ ์ „์— P()๋กœ ์‚ฌ์šฉ ์ค‘์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋‚˜์˜ฌ ๋•Œ V()๋กœ ๋น„์—ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ณดํ˜ธํ•œ๋‹ค.

 

๋‹ค์Œ์€ ์„ธ๋งˆํฌ์–ด์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ์ด๋‹ค.

 

 

์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜ RS๋ฅผ n์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. P()๋Š” ์ž ๊ธˆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋กœ, RS๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด 1๋งŒํผ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•œ๋‹ค. ๋งŒ์•ฝ RS๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด 0๋ณด๋‹ค ์ปค์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. block()์€ wake_up()์ด ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค. V()๋Š” ์ž ๊ธˆ ํ•ด์ œ์™€ ๋™๊ธฐํ™”๋ฅผ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋กœ RS ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ์—๊ฒŒ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•ด๋„ ์ข‹๋‹ค๋Š” wake_up() ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

 

์„ธ๋งˆํฌ์–ด์—์„œ ์ž ๊ธˆ์ด ํ•ด์ œ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋Š” ์„ธ๋งˆํฌ์–ด ํ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๊ฐ€ wake_up() ์‹ ํ˜ธ๋ฅผ ๋ฐ›์œผ๋ฉด ํ์—์„œ ๋‚˜์™€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•œ๋‹ค. ์ด๋•Œ, ์„ธ๋งˆํฌ์–ด์˜ P()๋‚˜ V()์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋ฌธ๋งฅ ๊ตํ™˜์ด ์ผ์–ด๋‚˜ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ƒํ˜ธ ๋ฐฐ์ œ์™€ ํ•œ์ • ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‚ด๋ถ€ ์ฝ”๋“œ๋Š” ๊ฒ€์‚ฌ์™€ ์ง€์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ํžˆ ์‹คํ–‰๋˜๋„๋ก ๊ตฌํ˜„๋œ๋‹ค.

 

๋‹ค์Œ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ 3๊ฐœ์ด๊ณ  ๊ณต์œ  ์ž์›์ด 2๊ฐœ์ผ ๋•Œ ์„ธ๋งˆํฌ์–ด์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์˜ˆ์‹œ์ด๋‹ค.

 

 

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

 

๋ชจ๋‹ˆํ„ฐ

๋ชจ๋‹ˆํ„ฐ๋Š” ์šด์˜์ฒด์ œ์˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ๊ฐ™์ด ๊ณต์œ  ์ž์›์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆจ๊ธฐ๊ณ  ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ž์›์„ ๋ณดํ˜ธํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋™๊ธฐํ™”์‹œํ‚จ๋‹ค.

 

๋ชจ๋‹ˆํ„ฐ๋Š”์˜ ์ž‘๋™ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ž„๊ณ„ ๊ตฌ์—ญ์œผ๋กœ ์ง€์ •๋œ ๋ณ€์ˆ˜๋‚˜ ์ž์›์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ง์ ‘ P()๋‚˜ V()๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‹ˆํ„ฐ์— ์ž‘์—… ์š”์ฒญ์„ ํ•œ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋Š” ์š”์ฒญ๋ฐ›์€ ์ž‘์—…์„ ๋ชจ๋‹ˆํ„ฐ ํ์— ์ €์žฅํ•œ ํ›„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋งŒ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ์•Œ๋ ค์ค€๋‹ค.

๋Œ“๊ธ€