Process Synchronization
Critical Section & Critical Section Problem
Critical Section (์๊ณ ์์ญ)
๋ฉํฐ ์ค๋ ๋ฉ์ ๋ฌธ์ ์ ์์ ๋์ค๋ฏ, ๋์ผํ ์์์ ๋์์ ์ ๊ทผ ํ๋ ์์ (ex. ๊ณต์ ํ๋ ๋ณ์ ์ฌ์ฉ, ๋์ผ ํ์ผ์ ์ฌ์ฉ)์ ์คํํ๋ ์ฝ๋ ์์ญ ์ Critical Section ์ด๋ผ๊ณ ํ๋ค
Critical Section Problem (์๊ณ ์์ญ ๋ฌธ์ )
Process๋ค์ด critical section์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ protocol์ ์ค๊ณ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค
Requirements (ํด๊ฒฐ์ ์ํ ๊ธฐ๋ณธ ์กฐ๊ฑด)
Mutual Exclusion (์ํธ ๋ฐฐ์ )
Process p1์ด critical section์์ ์คํ์ค์ด๋ผ๋ฉด, ๋ค๋ฅธ process๋ค์ p1์ด ๊ฐ์ง critical section์์ ์คํ๋ ์ ์๋ค
Progress (์งํ)
Critical section์์ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ๋ณ๋์ ๋์์ด ์๋ ํ๋ก์ธ์ค๋ค๋ง critical section ์ง์ ํ๋ณด๋ก์ ์ฐธ์ฌ๋ ์ ์๋ค
Bounded waiting (ํ์ ๋ ๋๊ธฐ)
p1์ด critical section์ ์ง์ ์ ์ฒญ ํ ๋ฐ์๋ค์ฌ์ง ๋๊ฐ์ง, ๋ค๋ฅธ process๋ค์ด critical section์ ์ง์ ํ๋ ํ์๋ ์ ํ์ด ์์ด์ผ ํ๋ค
Solution
Mutex Lock
๋์์ ๊ณต์ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด
Critical Section์ ์ง์ ํ๋ process๋ lock์ ํ๋
ํ๊ณ , critical section์๋น ์ ธ ๋์ฌ ๋, Lock์ ๋ฐฉ์ถ
ํจ์ผ๋ก์จ ๋์์ ์ ๊ทผ์ด ๋์ง ์๋๋ก ํ๋คํ๊ณ
๋ค์ค ์ฒ๋ฆฌ๊ธฐ ํ๊ฒฝ์์๋ ์๊ฐ์ ์ธ ํจ์จ์ฑ ์ธก๋ฉด์์ ์ ์ฉํ ์ ์๋ค
Semaphores
์ํํธ์จ์ด์์์ ์๊ณ ์์ญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ธฐํ ๋๊ตฌ
์ค๋ช
๋ฉํฐํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ๋ค์์ process ๋ thread ๊ฐ n ๊ฐ์ ๊ณต์ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋๋ ๋๊ธฐํ ๊ธฐ๋ฒ
์ข ๋ฅ
Counting Semaphore (์นด์ดํ ์ธ๋งํฌ)
๊ฐ์ฉํ ๊ฐ์๋ฅผ ๊ฐ์ง ์์์ ๋ํ
์ ๊ทผ ์ ์ด
์ฉ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ธ๋งํฌ๋ ๊ทธ ๊ฐ์ฉํ ์์์ ๊ฐ์๋ก ์ด๊ธฐํ ๋๋ค์์์ ์ฌ์ฉํ๋ฉด ์ธ๋งํฌ๊ฐ ๊ฐ์, ๋ฐฉ์ถํ๋ฉด ์ธ๋งํฌ๊ฐ ์ฆ๊ฐํ๋ค
Binary Semaphore (์ด์ง ์ธ๋งํฌ)
MUTEX
๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ์ํธ๋ฐฐ์ ( Mutal Exclusion)์ ๋จธ๋ฆฟ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์๋ค์ด๋ฆ ๊ทธ๋๋ก 0๊ณผ 1 ์ฌ์ด์ ๊ฐ๋ง ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ค ํ๋ก์ธ์ค๋ค ์ฌ์ด์ Critical Section ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค
๋จ์
Busy waiting (๋ฐ์ ๋๊ธฐ)
Spin lock
์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ Semaphore ์ด๊ธฐ ๋ฒ์ ์์ Critical Section์ ์ง์ ํด์ผํ๋ process ๋ ์ง์ ์ฝ๋๋ฅผ ๋ฐ๋ณต ์คํํด์ผํ๋ฉฐ, CPU ์๊ฐ์ ๋ญ๋นํ์๋ค์ด๋ฅผ Busy Waiting์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ํน์ํ ์ํฉ์ด ์๋๋ฉด ๋นํจ์จ์ ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ Semaphore์์
Critical Section์ ์ง์ ์ ์๋ํ์ง๋ง ์คํจํ ํ๋ก์ธ์ค
์ ๋ํดBlock
์ํจ ๋ค, Critical Section์ ์๋ฆฌ๊ฐ ๋ ๋๋ค์ ๊นจ์ฐ๋ ๋ฐฉ์
์ ์ฌ์ฉํ๋ค.์ด ๊ฒฝ์ฐ Busy waiting์ผ๋ก ์ธํ ์๊ฐ๋ญ๋น ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.
Deadlock (๊ต์ฐฉ ์ํ)
Semaphore๊ฐ Ready Queue๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ,
๋ ์ด์์ process๊ฐ critical section ์ง์ ์ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ ,
critical section์์ ์คํ๋๋ process๋ ์ง์ ๋๊ธฐ ์ค์ธ process๊ฐ ์คํ๋์ด์ผ๋ง ๋น ์ ธ๋์ฌ ์ ์๋ ์ํฉ์ ์ง์นญ
๋ชจ๋ํฐ
๊ณ ๊ธ ์ธ์ด์ ์ค๊ณ ๊ตฌ์กฐ๋ฌผ๋ก์, ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ
์ํธ๋ฐฐ์ ํ๊ฒ
๋ ๋ง๋์ถ์ํ๋ ๋ฐ์ดํฐ ํํ
๊ณต์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ํค ํ๋๊ณผ, ์์ ์ฌ์ฉํ ํด์ ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ค
Semaphore๋ ์ง์ ํค ํด์ ์ ๊ณต์ ์์ ์ ๊ทผ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค!
Last updated