[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๋๊ธฐํ
๐งช Computer Science/Operating System
์๊ณ์์ญ(Critical Section)
๋ฉํฐ ์ค๋ ๋ฉ์ ๋ฌธ์ ์ ์์ ๋์ค๋ฏ, ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ๋ ์์ ์ ์คํํ๋ ์ฝ๋ ์์ญ์ ์๊ณ์์ญ(Critical Section)์ด๋ผ ํ๋ค.
์๊ณ์์ญ ๋ฌธ์ (Critical Section Problem)
ํ๋ก์ธ์ค๋ค์ด Critical Section์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ํ๋กํ ์ฝ์ ์ค๊ณํ๋ ๊ฒ์ด๋ค.
- ํด๊ฒฐ์ ์ํ ๊ธฐ๋ณธ ์กฐ๊ฑด(Requirements)
- ์ํธ ๋ฐฐ์ (Mutual Exclusion)
- ํ๋ก์ธ์ค A๊ฐ Critical Section์์ ์คํ ์ค์ด๋ผ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ทธ๋ค์ด ๊ฐ์ง Critical Section์์ ์คํ๋ ์ ์๋ค.
- ์งํ(Progress)
- Critical Section์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ๋ณ๋์ ๋์์ด ์๋ ํ๋ก์ธ์ค๋ค๋ง Critical Section ์ง์ ํ๋ณด๋ก์ ์ฐธ์ฌ๋ ์ ์๋ค.
- ํ์ ๋ ๋๊ธฐ(Bounded Wating)
- ํ๋ก์ธ์ค A๊ฐ Critical Section์ ์ง์ ์ ์ฒญ ํ๋ถํฐ ๋ฐ์๋ค์ฌ์ง ๋๊น์ง, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด Critical Section์ ์ง์ ํ๋ ํ์๋ ์ ํ์ด ์์ด์ผ ํ๋ค.
- ์ํธ ๋ฐฐ์ (Mutual Exclusion)
ํด๊ฒฐ์ฑ
- Lock
- ํ๋์จ์ด ๊ธฐ๋ฐ ํด๊ฒฐ์ฑ ์ผ๋ก์จ, ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด Critical Section์ ์ง์ ํ๋ ํ๋ก์ธ์ค๋ Lock์ ํ๋ํ๊ณ Critical Section์ ๋น ์ ธ๋์ฌ ๋, Lock์ ๋ฐฉ์ถํจ์ผ๋ก์จ ๋์์ ์ ๊ทผ์ด ๋์ง ์๋๋ก ํ๋ค.
- ํ๊ณ
- ๋ค์ค์ฒ๋ฆฌ๊ธฐ ํ๊ฒฝ์์๋ ์๊ฐ์ ์ธ ํจ์จ์ฑ ์ธก๋ฉด์์ ์ ์ฉํ ์ ์๋ค.
- ์ธ๋งํฌ์ด(Semaphores)
- ์ํํธ์จ์ด ์์์ Critical Section ๋ฌด๋บ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ธฐํ ๋๊ตฌ
- ์ข
๋ฅ
- ์นด์ดํ ์ธ๋งํฌ์ด(Counting Semaphores): ๊ฐ์ฉํ ๊ฐ์๋ฅผ ๊ฐ์ง ์์์ ๋ํ ์ ๊ทผ ์ ์ด์ฉ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ธ๋งํฌ์ด๋ ๊ทธ ๊ฐ์ฉํ ์์์ ๊ฐ์๋ก ์ด๊ธฐํ ๋๋ค. ์์์ ์ฌ์ฉํ๋ฉด ์ธ๋งํฌ์ด๊ฐ ๊ฐ์, ๋ฐฉ์ถํ๋ฉด ์ฆ๊ฐํ๋ค.
- ์ด์ง ์ธ๋งํฌ์ด(Binary Semaphores): Mutex๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. 0๊ณผ 1 ์ฌ์ด์ ๊ฐ๋ง ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ค ํ๋ก์ธ์ค๋ค ์ฌ์ด์ Critical Section ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ๋จ์
- Busy Wating: spin lock์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ธ๋งํฌ์ด ์ด๊ธฐ ๋ฒ์ ์์ Critical Section์ ์ง์ ํด์ผ ํ๋ ํ๋ก์ธ์ค๋ ์ง์ ์ฝ๋๋ฅผ ๊ณ์ ๋ฐ๋ณต ์คํํด์ผ ํ๋ฉฐ, CPU ์๊ฐ์ ๋ญ๋นํ๋ค. ์ผ๋ฐ์ ์ผ๋ก, ์ธ๋งํฌ์ด์์ ์๊ณ ์์ญ์ ์ง์ ์ ์๋ํ์ง๋ง ์คํจํ ํ๋ก์ธ์ค์ ๋ํด Block์ํจ ๋ค, ์๊ณ์์ญ์ ์๋ฆฌ๊ฐ ๋ ๋ ๋ค์ ๊บ ์ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ busy waiting์ ์๊ฐ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๋ฐ๋๋ฝ(Deadlock)
์ธ๋งํฌ์ด๊ฐ Ready Queue๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์๊ณ์์ญ์ ์ง์ ์ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ , ์๊ณ์์ญ์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ์ง์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์คํ๋์ด์ผ๋ง ๋น ์ ธ๋์ฌ ์ ์๋ ์ํฉ์ ๋งํ๋ค.
'๐งช Computer Science > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] CPU ์ค์ผ์ค๋ฌ(CPU Scheduler) (0) | 2021.07.08 |
---|---|
[์ด์์ฒด์ ] ๋ฉํฐ ํ๋ก์ธ์ค vs ๋ฉํฐ ์ฐ๋ ๋ (0) | 2021.07.08 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค vs ์ฐ๋ ๋ (0) | 2021.07.08 |
[์ด์์ฒด์ ] ์ด์์ฒด์ ๋ ๋ฌด์์ธ๊ฐ? (0) | 2021.06.03 |