๐ŸŒนย ์ •๋ฆฌ by ์žฅ๋ฏธ(https://velog.io/@newbiekim/)

ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…์„ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๊ณต์œ ๋œ ์ž์›์„ ๊ฐ€์ง€๊ณ  ๊ณต๋™ ์ž‘์—…์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ **๊ณต์œ  ์ž์›(shared resource)**์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜, ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ ๋“ฑ์„ ๋งํ•œ๋‹ค.

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

๊ทธ๋ฆผ 1. ๊ณต์œ  ์ž์›์˜ ์ ‘๊ทผ

๊ทธ๋ฆผ 1. ๊ณต์œ  ์ž์›์˜ ์ ‘๊ทผ

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ „์—ญ ๋ณ€์ˆ˜ โ€˜์˜ˆ๊ธˆโ€™์— ๋Œ€ํ•ด ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ๋‘ ์ž…๊ธˆ์„ ํ•œ๋‹ค.

์˜ˆ๊ธˆ์€ ์›๋ž˜ ์žˆ๋˜ 10๋งŒ์›์— P1์ด ์ž…๊ธˆํ•œ 10๋งŒ์›๊ณผ P2๊ฐ€ ์ž…๊ธˆํ•œ 5๋งŒ์›์„ ํ•ฉํ•œ 25๋งŒ์›์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 5๋งŒ์›์ด ์–ด๋””๋ก ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  20๋งŒ์›๋ฟ์ด๋‹ค.

์ •์ƒ์ ์œผ๋กœ ์˜ˆ๊ธˆ์ด 25๋งŒ์›์ด ๋˜๋ ค๋ฉด P1์ด ์ž‘์—…์„ ๋งˆ์นœ ํ›„ P2๊ฐ€ ์ž…๊ธˆ์„ ํ•˜๊ฑฐ๋‚˜, P2๊ฐ€ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ P1์ด ๋ˆ์„ ์ž…๊ธˆํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ˆ๊ธˆ 10๋งŒ์›์„ ๋™์‹œ์— ์ฝ์€ ํ›„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์„ ๋ฌด์‹œํ•˜๊ณ  ๋ฎ์–ด์“ฐ๋Š” ๋ฐ”๋žŒ์— ์ด์•ก์ด ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋ณ‘ํ–‰์ ์œผ๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ƒํ™ฉ์„ Race Condition์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. Race Condition์ด ๋ฐœ์ƒํ•˜๋ฉด ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ณต์œ  ์ž์› ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.


๊ณต์œ  ์ž์› ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์˜์—ญ์„ Critical Section์ด๋ผ ํ•œ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„, ์ฆ‰ ์˜ˆ๊ธˆ์„ ํ™•์ธํ•˜๊ณ  ์ž…๊ธˆ์„ ํ•œ ํ›„ ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์ด Critical Section์ด๋‹ค.

Critical Section์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋™์‹œ์— ์ž‘์—…ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ๋ฐ–์—์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฉฐ, Critical Section์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜์™€์•ผ๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.